[U-Boot] FDT include file problems
Wolfgang Denk
wd at denx.de
Mon Oct 20 13:08:44 CEST 2008
Dear Jerry Van Baren,
In message <48FC5AB3.10302 at gmail.com> you wrote:
>
> Google hasn't been very helpful for answering the question of how to
> handle endian issues in userland (non-kernel) code. Hmmm. Grrr. Maybe
> I'm not asking it the right question.
This patch seems to work for me:
diff --git a/include/libfdt_env.h b/include/libfdt_env.h
index 671c3a8..355ebf2 100644
--- a/include/libfdt_env.h
+++ b/include/libfdt_env.h
@@ -24,19 +24,28 @@
#ifdef USE_HOSTCC
#include <stdint.h>
#include <string.h>
+#include <endian.h>
+#include <byteswap.h>
#else
#include <linux/string.h>
#include <linux/types.h>
+#include <asm/byteorder.h>
#endif /* USE_HOSTCC */
#include <stddef.h>
-#include <asm/byteorder.h>
extern struct fdt_header *working_fdt; /* Pointer to the working fdt */
-#define fdt32_to_cpu(x) __be32_to_cpu(x)
-#define cpu_to_fdt32(x) __cpu_to_be32(x)
-#define fdt64_to_cpu(x) __be64_to_cpu(x)
-#define cpu_to_fdt64(x) __cpu_to_be64(x)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define fdt32_to_cpu(x) bswap_32(x)
+#define cpu_to_fdt32(x) bswap_32(x)
+#define fdt64_to_cpu(x) bswap_64(x)
+#define cpu_to_fdt64(x) bswap_64(x)
+#else
+#define fdt32_to_cpu(x) (x)
+#define cpu_to_fdt32(x) (x)
+#define fdt64_to_cpu(x) (x)
+#define cpu_to_fdt64(x) (x)
+#endif
/*
* Types for `void *' pointers.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The speed of time is one second per second.
More information about the U-Boot
mailing list