On Mon, Oct 20, 2008 at 12:01:59AM +0200, Wolfgang Denk wrote:
> Hello,
> 
> on some systems (for example Fedora Core 4) U-Boot builds with the
> following wanrings only:
> 
> ...
> In file included from /home/wd/git/u-boot/include/libfdt_env.h:33,
>                  from fdt.c:51:
> /usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel 
> header; include <endian.h> instead!

[snip]

> However, for the FDT code this doesn't help,  as  we  then  will  get
> unresolved    references    for    fdt32_to_cpu(),    cpu_to_fdt32(),
> fdt64_to_cpu() and cpu_to_fdt64().
> 
> The 32 bit accesses couldbe worked  around  by  using  htonl()  resp.
> ntohl(), but I don't know a good way for the 64 bit cases.
> 
> Is there a clean and portable way to do this?
> 
> Best regards,
> 
> Wolfgang Denk

Hi Wolfgang,

Does this work better?

Best regards,
gvb


>From 0d33fb368acac6f88c0940ff2d1c77856900abcd Mon Sep 17 00:00:00 2001
From: Gerald Van Baren <[EMAIL PROTECTED]>
Date: Sun, 19 Oct 2008 22:50:07 -0400
Subject: [PATCH] libfdt: Use endian.h instead of asm/byteorder.h

Using asm/byteorder.h directly is strongly discouraged since it is a
private kernel header.

Signed-off-by: Gerald Van Baren <[EMAIL PROTECTED]>
---
 include/libfdt_env.h |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/include/libfdt_env.h b/include/libfdt_env.h
index 671c3a8..728a248 100644
--- a/include/libfdt_env.h
+++ b/include/libfdt_env.h
@@ -33,10 +33,17 @@
 #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)                __swab32(x)
+#define cpu_to_fdt32(x)                __swab32(x)
+#define fdt64_to_cpu(x)                __swab64(x)
+#define cpu_to_fdt64(x)                __swab64(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.
-- 
1.5.6.5

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to