From patchwork Sat Jan 12 21:39:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [U-Boot,3/3] pxa: Save lr register in relocate_code function Date: Sat, 12 Jan 2013 11:39:27 -0000 From: =?utf-8?b?xYF1a2FzeiBEYcWCZWsgPGx1azAxMDRAZ21haWwuY29tPg==?= X-Patchwork-Id: 211568 Message-Id: <1358026767-28130-3-git-send-email-luk0104@gmail.com> To: u-boot@lists.denx.de Cc: marex@denx.de 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 Acked-by: Marek Vasut --- arch/arm/cpu/pxa/start.S | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S index 72af869..e71803e 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