[U-Boot] FDT include file problems

Jerry Van Baren gvb.uboot at gmail.com
Tue Oct 21 01:43:45 CEST 2008


Wolfgang Denk wrote:
> 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

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 at cideas.com>

Thanks,
gvb



More information about the U-Boot mailing list