[U-Boot] [PATCH] armv7: do not relocate _start twice
Vincent Stehlé
v-stehle at ti.com
Fri Mar 15 17:54:00 CET 2013
The _start symbol is already relocated, so do not add the relocation the second
time in c_runtime_cpu_setup.
This fixes e.g. the abort exception handling path, which ended in double fault
due to bad address in VBAR.
Signed-off-by: Vincent Stehlé <v-stehle at ti.com>
Reported-by: Lubomir Popov <lpopov at mm-sol.com>
---
Hello,
Here is a fix for a bug reported by Lubomir. He noticed that exceptions were
not handled correctly anymore. This can be seen with e.g. the 'dhcp' command on
some OMAP platforms.
Looking at the code, I would says the fix applies to all armv7 platforms except
Tegra but I did only test on OMAP5. On this platform at least the abort is now
handled:
OMAP5430 EVM # dhcp
data abort
MAYBE you should read doc/README.arm-unaligned-accesses
pc : [<fef9bd78>] lr : [<fefa1790>]
sp : feef9dc4 ip : fefed0f8 fp : 00000000
r10: 00000001 r9 : 00000001 r8 : feef9f48
r7 : feef9fe0 r6 : 00000000 r5 : 00000000 r4 : 00000014
r3 : 00000000 r2 : 00000002 r1 : 00000014 r0 : fefed0f4
Flags: Nzcv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
resetting ...
It would be appreciated if folks could verify on other ARMv7 platforms, when
running from flash for example (where relocation may differ?)
arch/arm/cpu/armv7/start.S | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 6b59529d..d06b35f 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -254,7 +254,6 @@ ENTRY(c_runtime_cpu_setup)
#if !defined(CONFIG_TEGRA)
/* Set vector address in CP15 VBAR register */
ldr r0, =_start
- add r0, r0, r9
mcr p15, 0, r0, c12, c0, 0 @Set VBAR
#endif /* !Tegra */
--
1.7.10.4
More information about the U-Boot
mailing list