mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-22 22:31:32 +02:00
arm32: Fix relocation of env_addr if POSITION_INDEPENDENT=y
Apply commit 534f0fbd6520 ("arm64: Fix relocation of env_addr if POSITION_INDEPENDENT=y") also for 32-bit ARM. This change fixes crashing of U-Boot on ARMv7 (Omap3 / Cortex-A8) Nokia N900 phone (real HW). Note that qemu emulator of this board with same u-boot.bin binary has not triggered this crash. Crash happened after U-Boot printed following debug lines to serial console: initcall: 0001ea8c (relocated to 8fe0aa8c) Loading Environment from <NULL>... Using default environment Destroy Hash Table: 8fe25a98 table = 00000000 Create Hash Table: N=387 Signed-off-by: Pali Rohár <pali@kernel.org>
This commit is contained in:
parent
2827c2f07d
commit
04bb5e95be
@ -147,6 +147,11 @@ ENTRY(_main)
|
||||
ldr r1, =CONFIG_TEXT_BASE
|
||||
sub r1, r0
|
||||
add lr, r1
|
||||
#if defined(CONFIG_SYS_RELOC_GD_ENV_ADDR)
|
||||
ldr r0, [r9, #GD_ENV_ADDR] /* r0 = gd->env_addr */
|
||||
add r0, r0, r1
|
||||
str r0, [r9, #GD_ENV_ADDR]
|
||||
#endif
|
||||
#endif
|
||||
ldr r0, [r9, #GD_RELOC_OFF] /* r0 = gd->reloc_off */
|
||||
add lr, lr, r0
|
||||
|
Loading…
x
Reference in New Issue
Block a user