[PATCH] arm/dt: Fix booting non-dt versatile

Lorenzo Pieralisi Lorenzo.Pieralisi at arm.com
Mon Jul 26 19:08:46 EST 2010


Hi Grant, Jeremy,

> -----Original Message-----
> From: devicetree-discuss-
> bounces+lorenzo.pieralisi=arm.com at lists.ozlabs.org [mailto:devicetree-
> discuss-bounces+lorenzo.pieralisi=arm.com at lists.ozlabs.org] On Behalf
> Of Grant Likely
> Sent: 23 July 2010 21:14
> To: jeremy.kerr at canonical.com; devicetree-discuss at lists.ozlabs.org
> Subject: [PATCH] arm/dt: Fix booting non-dt versatile
> 
> Without this patch, versatilepb will not boot in qemu
> 
> Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
> ---
> 
> Hi Jeremy,
> 
> I'm not sure if this is the best fix or not, but without it I cannot
> boot
> versatilepb anymore in QEMU.
> 
> g.
> 
>  arch/arm/kernel/head.S |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index 8683b3b..049d533 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -93,7 +93,7 @@ ENTRY(stext)
>  	 * Also, we don't need to call __vet_atags.
>  	 */
>  	add	r3, r1, #1
> -	bcs	1f
> +	beq	1f
> 
>  	bl	__lookup_machine_type		@ r5=machinfo
>  	movs	r8, r5				@ invalid machine (r5=0)?
> 

I think the issue is the add instruction not the conditional jump here.
It needs to be an "adds" to update the flags so the carry.
With beq (or bcs) you are jumping on a condition set by the movs a few lines
before, beq does not jump because the movs before did not set the zero flag
otherwise you wouldn't be executing that code, you would have branched to
__error_p. 
Please let me know if it works I have not tested so I might be wrong.

Patches for versatile express coming, 

Cheers,
Lorenzo




More information about the devicetree-discuss mailing list