[U-Boot] [PATCH] arm: rmobile: bugfix: wrong register saving in lowlevel_init

Albert ARIBAUD albert.u.boot at aribaud.net
Fri Oct 5 18:23:08 CEST 2012


Hi Tetsuyuki,

On Fri,  5 Oct 2012 13:39:22 +0900, Tetsuyuki Kobayashi
<koba at kmckk.co.jp> wrote:

> lowlevel_init() of rmobile badly assumed that ip register holds return address.
> The commit "63ee53a7 armv7 cpu_init_crit: Simplify code" breaks this assumption.
> This patch removes this bad assumption and simplify code.
> 
> Signed-off-by: Tetsuyuki Kobayashi <koba at kmckk.co.jp>
> ---
> Hello, Albert
> Hello, Tom
> Thank you for merging my patches.
> 
> I checked current u-boot-master and found kzm9g board fails to boot because bug.
> This bugfix patch solves it.
> I think 2012.10 release should have this bugfix.
> 
> Iwamatsu-san, could you double check this patch?
> 
> 
>  arch/arm/cpu/armv7/rmobile/lowlevel_init.S |   12 +-----------
>  1 file changed, 1 insertion(+), 11 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/rmobile/lowlevel_init.S b/arch/arm/cpu/armv7/rmobile/lowlevel_init.S
> index 1bd391e..4fdca06 100644
> --- a/arch/arm/cpu/armv7/rmobile/lowlevel_init.S
> +++ b/arch/arm/cpu/armv7/rmobile/lowlevel_init.S
> @@ -76,17 +76,7 @@ loop0:
>  	bne  loop0
>  
>  	ldr sp, MERAM_STACK

Is this load of sp still needed?

> -	str ip, [sp]    /* stash old link register */
> -	mov ip, lr      /* save link reg across call */
> -
> -	bl  s_init
> -
> -	ldr ip, [sp]    /* restore save ip */
> -	mov lr, ip      /* restore link reg */
> -
> -	/* back to arch calling code */
> -	mov pc, lr
> +	b s_init
>  
>  	.pool
>  	.align 4

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list