On 09/10/10 16:50, Lei Wen wrote: > Hi, > > I recently try to port our board code to new uboot, which has been > changed to use new relocation scheme. > But I found a very strange thing, that is if the uboot is loaded to > the TEXT_BASE address, it could run without > problem. But if it is loaded to a different place, it fail to boot up... > > I check the code, and found that in the board_init_f, it calls the > init_sequence which is stored as a data sector > in the u-boot.bin file. While the new scheme use the fPIC, the code > could locate the GOT table correctly, > and it seem to forgot what the GOT table stores is context that is > meaningful in TEXT_BASE, not the loaded base. > That is to say, if the TEXT_BASE is 0xf00000, and loaded base is > 0x500000, I found the GOT table also filled > with 0xf0****, not the 0x50****. This leads the cpu loading wrong > function address in the init_sequence table, and > cause pc become invalid... > > Am I missing something to switch to the new relocation scheme? >
The ARM relocation schemes (there are two being evaluated - one which uses .got and another .rel.dyn) are both designed to relocate from TEXT_BASE to an upper memory location determined during DRAM init x86 is the only arch that I know implements what you are describing (in a patch series in u-boot-x86/master but not yet in mainline) Regards, Graeme _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

