From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerry Van Baren Date: Mon, 20 Oct 2008 19:43:45 -0400 Subject: [U-Boot] FDT include file problems In-Reply-To: <20081020110844.4326D835697A@gemini.denx.de> References: <20081019220159.CB9F8835697A@gemini.denx.de> <20081020031023.GA18173@cideas.com> <20081020072341.BC464835697A@gemini.denx.de> <48FC5AB3.10302@gmail.com> <20081020110844.4326D835697A@gemini.denx.de> Message-ID: <48FD17B1.7070909@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > #include > +#include > +#include > #else > #include > #include > +#include > #endif /* USE_HOSTCC */ > > #include > -#include > 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 Thanks, gvb