[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