compiler.h: use u-boot endian macros on OpenBSD
authorJonathan Gray <jsg@jsg.id.au>
Sat, 26 Nov 2016 04:18:00 +0000 (15:18 +1100)
committerTom Rini <trini@konsulko.com>
Sat, 3 Dec 2016 02:32:38 +0000 (21:32 -0500)
When building u-boot on sparc64 and powerpc hosts it became clear that
u-boot expects endian conversion defines to be macros:

lib/crc32.c:87: error: braced-group within expression allowed only inside a function

For OpenBSD switch from using system definitions equivalent to the u-boot ones
and define glibc __BYTE_ORDER __BIG_ENDIAN __LITTLE_ENDIAN names, as at least
some parts of the non-cross build assumes those names are present (ie crc32.c).

Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
include/compiler.h

index 65b826e4d187df332eecc124da5848e5e643f63d..a43fb6a7386176ce556a60f04d0a2c19996e5745 100644 (file)
@@ -52,6 +52,9 @@ typedef unsigned long ulong;
 # include <sys/endian.h> /* htole32 and friends */
 #elif defined(__OpenBSD__)
 # include <endian.h>
+# define __BYTE_ORDER BYTE_ORDER
+# define __LITTLE_ENDIAN LITTLE_ENDIAN
+# define __BIG_ENDIAN BIG_ENDIAN
 #endif
 
 #include <time.h>
@@ -84,20 +87,7 @@ typedef unsigned int uint;
 # define uswap_64(x) _uswap_64(x, )
 #endif
 
-#if defined(__OpenBSD__)
-#define cpu_to_le16(x)         htole16(x)
-#define cpu_to_le32(x)         htole32(x)
-#define cpu_to_le64(x)         htole64(x)
-#define le16_to_cpu(x)         letoh16(x)
-#define le32_to_cpu(x)         letoh32(x)
-#define le64_to_cpu(x)         letoh64(x)
-#define cpu_to_be16(x)         htobe16(x)
-#define cpu_to_be32(x)         htobe32(x)
-#define cpu_to_be64(x)         htobe64(x)
-#define be16_to_cpu(x)         betoh16(x)
-#define be32_to_cpu(x)         betoh32(x)
-#define be64_to_cpu(x)         betoh64(x)
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
+#if __BYTE_ORDER == __LITTLE_ENDIAN
 # define cpu_to_le16(x)                (x)
 # define cpu_to_le32(x)                (x)
 # define cpu_to_le64(x)                (x)