
Hi Albert,
On Sat, Oct 9, 2010 at 3:43 PM, Albert ARIBAUD albert.aribaud@free.fr wrote:
Le 09/10/2010 07:50, Lei Wen a écrit :
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?
Thanks, Lei
Can you indicate which hardware (architecture, cpu, SoC, etc) you're running this code on?
I am running the code on Marvell aspen soc, which is arm926ejs compatible core.
Best regards, Lei