[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