[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