tools: firmware-utils: mksercommfw build on Darwin
authorKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Thu, 8 Nov 2018 21:35:17 +0000 (21:35 +0000)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:48:12 +0000 (17:48 +0100)
asm/byteorder.h & hence __cpu_to_be32() doesn't exist on Darwin

Shamelessly copy some byte swap functions from oseama.c

Acked-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
(backported from 1a73b2d0892465e999ddc4aa319895f196e8c8d3)

tools/firmware-utils/src/mksercommfw.c

index e3b499a097d97343c60fde880ca63619feb4b6d7..23e4dd06b226a3e2eecf855681c552f7f415c93f 100644 (file)
@@ -3,7 +3,26 @@
 #include <stdlib.h>
 #include <sys/types.h>
 #include <unistd.h>
-#include <asm/byteorder.h>
+#include <byteswap.h>
+#include <endian.h>
+
+#if !defined(__BYTE_ORDER)
+#error "Unknown byte order"
+#endif
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define cpu_to_be32(x)  (x)
+#define be32_to_cpu(x)  (x)
+#define cpu_to_be16(x)  (x)
+#define be16_to_cpu(x)  (x)
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+#define cpu_to_be32(x)  bswap_32(x)
+#define be32_to_cpu(x)  bswap_32(x)
+#define cpu_to_be16(x)  bswap_16(x)
+#define be16_to_cpu(x)  bswap_16(x)
+#else
+#error "Unsupported endianness"
+#endif
 
 /* #define DEBUG 1 */
 
@@ -212,7 +231,7 @@ int main(int argc, char* argv[]) {
        image.file_name = argv[1];
        kernel_offset = (u_int32_t) strtol(argv[2], NULL, 0);
        swVer = (u_int32_t) strtol(argv[5], NULL, 0);
-       swVer = __cpu_to_be32(swVer);
+       swVer = cpu_to_be32(swVer);
 
        /* Check if files actually exist */
        if (access(sysupgrade.file_name, (F_OK | R_OK))) {