[U-Boot-Users] [PATCH] Fixup relocation patch.
Grant Likely
grant.likely at secretlab.ca
Tue Feb 13 16:06:59 CET 2007
On 2/13/07, Txema Lopez <tlopez at aotek.es> wrote:
> Hi all,
> This is a patch to make relocation simpler and more reliable. It's for a
> 1.1.6 U-Boot version.
>
> The FIXUP section in U-Boot is empty so when U-Boot is relocated from
> flash to sdram these lines in the file start.S have no effect:
> /*
> * Now adjust the fixups and the pointers to the fixups
> * in case we need to move ourselves again.
> */
> 2: li r0,__fixup_entries at sectoff@l
> lwz r3,GOT(_FIXUP_TABLE_)
> cmpwi r0,0
> mtctr r0
> addi r3,r3,-4
> beq 4f
> 3: lwzu r4,4(r3)
> lwzux r0,r4,r11
> add r0,r0,r11
> stw r10,0(r3)
> stw r0,0(r4)
> bdnz 3b
> 4:
> Because of it, in some places of U-Boot the relocation must be done
> manually: i.e malloc_bin_reloc().
>
> I submit the patch only for the Lite5200 boards and the rest of boards
> will be not affected. If someone want to use or test the fixup
> relocation for his board only has to do two changes:
> - cleanup the fixup section from the text section in the u-boot.lds
> file.
> - define CFG_FIXUP_RELOCATION in the board configuration file.
>
> I'm not sure if this patch could work for not PowerPC based
> architectures. By example, taking a look in the U-Boot starting files
> for mips and bf533 cpu's, it seems that only the GOT section is
> relocated in ram, so the patch probably won't work.
>
> Signed-off-by: Jose Maria Lopez <tlopez at aotek.es>
Txema,
Thanks for this patch; it's good work! I've got it working for my
ml403 target (ppc405). Static pointers are now updated appropriately
in my build. No manual fixup needed.
I needed to add the -mrelocatable flag to the linker flags in
cpu/ppc4xx/config.mk (I did not remove the -fPIC flag when I did
this). Without -mrelocatable, the .fixup section would remain empty.
However, -mrelocatable is a powerpc-only flag. I don't know what the
magic flag is to do the same on arm/mips/etc. It would be great if
this can get sorted out for all u-boot targets. It's an invasive
change though. I think your right that having it wrapped in a
conditional is the right way to start, but I would start with a
patchset that fixes up all powerpc targets first and get it out for
comments/testing before it gets merged to mainline. Once powerpc is
proven, then turn to look at the other architectures. I'll happily
help you with this task.
Thanks again,
g.
--
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195
More information about the U-Boot
mailing list