
On Jul 5, 2008, at 5:32 PM, Wolfgang Denk wrote:
Hello Andy & Becky & Kumar,
there is a general problem of variable types with the LMB code; at the moment, it uses some "u64" (and in lib_ppc/bootm.c actually a mix of "u64" and "uint64_t") declarations where I think we should use phys_addr_t resp. phys_size_t types instead. At the moment, this results in lots of compiler messages:
warning: cast from pointer to integer of different size
Could you please have a look and try and clean up?
Thanks in advance.
I see the following when I build for 8641HPCN on the latest tree:
bootm.c: In function ‘do_bootm_linux’: bootm.c:208: warning: cast from pointer to integer of different size bootm.c:215: warning: cast from pointer to integer of different size
It looks like these errors were introduced in the following 2 commits:
commit 41c5eaa7253ed82bbae1eda5667755872c615164 Author: Andy Fleming afleming@freescale.com Date: Mon Jun 16 13:58:56 2008 -0500
Resize device tree to allow space for board changes and the chosen node
commit 63796c4e61b207d2e635729d41b7a7f7d188b03c Author: Andy Fleming afleming@freescale.com Date: Mon Jun 16 13:58:54 2008 -0500
Add lmb_free
Andy, please fix the build warnings, and change lmb_free to use phys_size_t/phys_addr_t as appropriate - let me know if you have questions about this.
Wolfgang, please let me know if there are other errors you're seeing on some other build config that I haven't addressed here, and I'll look into those.
FYI, one possible source of confusion here for folks who are used to the linux version of the lmb: when the lmb became generic instead of ppc-only, the linux folks decided to always use u64 for types in the lmb code. This made some sense since ppc was the only platform using the lmb that used a smaller data type, and the other platforms lacked the concept of phys_addr_t. We've done "the right thing" in u-boot and used phys_size/addr_t since most of the platforms are 32-bit, and using u64 unconditionally is a waste.
Cheers, B