aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Dałek <luk0104@gmail.com>2013-01-12 11:39:27 +0000
committerTom Rini <trini@ti.com>2013-01-14 16:22:00 -0700
commitdf3ad6c81d3c0095879359778a7532160a4a0a30 (patch)
tree04de02bc4ce2d005c52830a62b7e4bddadb98b9c
parent981481958f98f17089bd3d776f71599756d9b9bd (diff)
downloadu-boot-linaro-stable-df3ad6c81d3c0095879359778a7532160a4a0a30.tar.gz
pxa: Save lr register in relocate_code function
When u-boot is compiled for PXA25x processor, pxa/start.S is calling cpu_init_crit by BL instruction. BL is overwriting lr register so relocate_code is going into infinite loop. This patch preservs lr register in r12 before calling cpu_init_crit and after function returns restores it. Signed-off-by: Lukasz Dalek <luk0104@gmail.com> Acked-by: Marek Vasut <marex@denx.de>
-rw-r--r--arch/arm/cpu/pxa/start.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S
index 72af86970..e71803eb2 100644
--- a/arch/arm/cpu/pxa/start.S
+++ b/arch/arm/cpu/pxa/start.S
@@ -183,7 +183,9 @@ relocate_code:
/* Disable the Dcache RAM lock for stack now */
#ifdef CONFIG_CPU_PXA25X
+ mov r12, lr
bl cpu_init_crit
+ mov lr, r12
#endif
adr r0, _start