[Skiboot] [RFC] Add support for glibc style endianess detection
Akshay Adiga
akshay.adiga at linux.vnet.ibm.com
Thu May 4 06:07:06 AEST 2017
CCAN defines HAVE_LITTLE_ENDIAN or HAVE_BIG_ENDIAN to endianess of the
system and code developed on top of glibc expect __BYTE_ORDER to
tell the endianess.
Suggested-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Signed-off-by: Akshay Adiga <akshay.adiga at linux.vnet.ibm.com>
---
Other attempt:
1) when named as include/endian.h, conflicted with host include
files (gcov build failed).
include/glibc_endian.h | 36 ++++++++++++++++++++++++++++++++++++
include/skiboot.h | 2 +-
2 files changed, 37 insertions(+), 1 deletion(-)
create mode 100644 include/glibc_endian.h
diff --git a/include/glibc_endian.h b/include/glibc_endian.h
new file mode 100644
index 0000000..8b1ce5f
--- /dev/null
+++ b/include/glibc_endian.h
@@ -0,0 +1,36 @@
+/* Copyright 2013-2014 IBM Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef GLIBC_ENDIAN_H
+#define GLIBC_ENDIAN_H
+
+#include <ccan/endian/endian.h>
+
+/*
+ * CCAN does not export __BYTE_ORDER hence copying definitions from
+ * glibc
+ */
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#ifdef HAVE_LITTLE_ENDIAN
+ #define __BYTE_ORDER __LITTLE_ENDIAN
+#elif HAVE_BIG_ENDIAN
+ #define __BYTE_ORDER __BIG_ENDIAN
+#else
+ #error
+#endif
+#endif
+
diff --git a/include/skiboot.h b/include/skiboot.h
index 5c8b0c8..519c5fe 100644
--- a/include/skiboot.h
+++ b/include/skiboot.h
@@ -27,13 +27,13 @@
#include <errno.h>
#include <bitutils.h>
#include <types.h>
+#include <glibc_endian.h>
#include <ccan/container_of/container_of.h>
#include <ccan/list/list.h>
#include <ccan/short_types/short_types.h>
#include <ccan/build_assert/build_assert.h>
#include <ccan/array_size/array_size.h>
-#include <ccan/endian/endian.h>
#include <ccan/str/str.h>
#include <libflash/blocklevel.h>
--
2.5.5
More information about the Skiboot
mailing list