[U-Boot] [PATCH 14/26 v2][NEXT] ARM: implement relocation for ARM V7 (OMAP)

John Rigby john.rigby at linaro.org
Fri Sep 17 23:40:58 CEST 2010


On Fri, Sep 17, 2010 at 5:10 AM, Heiko Schocher <hs at denx.de> wrote:
> Change the implementation for ARM V7 to relocate the code to an
> arbitrary address in RAM.
>
> Adapt the Beagle board (Cortex A8) to test the changes.
>
Heiko,

I'm running  -next on a Beagle board (first version of arm reloc not v2).

I noticed that when I wrote to ram in the range where u-boot runs
before being relocated sometimes the board hangs.  I then narrowed it
down to being able to reproduce the hang by writing to a single byte.
Turns out that __aeabi_uidiv gets called in its original location
after relocation.  I believe the culprit is ____aeabi_uidiv_veneer.

Here is a disassembly of my u-boot elf file:
80035c98 <____aeabi_uidiv_veneer>:
80035c98:       e51ff004        ldr     pc, [pc, #-4]   ; 80035c9c
<_end+0xfffc2498>
80035c9c:       800356f1        .word   0x800356f1

My relocaton offset is 0x07f7c000 so the relocated
____aeabi_uidiv_veneer is at 0x80035c98+0x07f7c000 or 0x87fb1c98.  If
I dump memory there:

OMAP3 beagleboard.org # md 0x87fb1c98
87fb1c98: e51ff004 800356f1 e51ff004 80035bfd    .....V.......[..

The original 800356f1 is still there.

Looks like these *veneer routines need to be relocated.

Please disregard if this is fixed in v2.

Regards,
John


More information about the U-Boot mailing list