Hi Hanna, On 18 March 2015 at 11:17, Hanna Hawa <han...@marvell.com> wrote: > Hi Simon, > > > > My name is Hanna, I’m working in Software team in Marvell with Yehuda. > > > > I’m trying to run U-Boot with FDT in 64Bit. > > I’ve issue when I’m trying to load the image on my board, I got abort > (**Synchronous Abort**) > > Exactly when the U-boot run fdt_addr_to_cpu(*cell) under lib/fdtdec.c > > > > The issue is the format of the FDT is 32Bit, and Big Endian mode. > > > > After some debug, I changed the typedef of fdt_size, and fdt_addr to be u32. > > Also fdt_addr_to_cpu, and fdt_size_to_cpu to use u32 swap, it works. > > > > My question is: > > Is that correct to change the typedef to use u32Bit?
What do you have CONFIG_PHYS_64BIT set to? That is supposed to indicate the machine word size. Do you have a 64-bit CPU? I recall someone reporting that on 64-bit machines things like '*cell' can fail because the address is not always 64-bit aligned. But on 64-bit machines, fdt_addr_t should be 64-bit, so changing it to 32-bit seems wrong since you may not be able to address everything (e.g. the reg properties will be limited to the first 4GB). I suspect it is wrong to use *cell. Instead we could use fdtdec_get_number(cell, <size>) or similar logic. Any existing use of fdt_addr_t/fdt_size_t to access a cell is wrong, i.e. in fdtdec_get_addr_size() and fdtdec_decode_region(). You could send a patch for that. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot