
Wolfgang Denk wrote:
Dear Jerry Van Baren,
In message 48FC5AB3.10302@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
Dear Wolfgang,
This works for me too. Do you want to apply it directly? That would be fastest and easiest.
Acked-by: Gerald Van Baren vanbaren@cideas.com
Thanks, gvb