[PATCH] ARM: proc-v7: Ensure correct instruction set after cpu_reset

Nicolas Pitre nicolas.pitre at linaro.org
Wed Oct 3 11:04:54 EDT 2012


On Wed, 3 Oct 2012, Dave Martin wrote:

> Because mov pc,<Rn> never switches instruction set when executed in
> Thumb code, Thumb-2 kernels will silently execute the target code
> after cpu_reset as Thumb code, even if the passed code pointer
> denotes ARM (bit 0 clear).
> 
> This patch uses bx instead, ensuring the correct instruction set
> for the target code.
> 
> Thumb code in the kernel is not supported prior to ARMv7, so other
> CPUs are not affected.
> 
> Signed-off-by: Dave Martin <dave.martin at linaro.org>

Acked-by: Nicolas Pitre <nico at linaro.org>

> ---
>  arch/arm/mm/proc-v7.S |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
> index c2e2b66..ca5b575 100644
> --- a/arch/arm/mm/proc-v7.S
> +++ b/arch/arm/mm/proc-v7.S
> @@ -57,7 +57,7 @@ ENTRY(cpu_v7_reset)
>   THUMB(	bic	r1, r1, #1 << 30 )		@ SCTLR.TE (Thumb exceptions)
>  	mcr	p15, 0, r1, c1, c0, 0		@ disable MMU
>  	isb
> -	mov	pc, r0
> +	bx	r0
>  ENDPROC(cpu_v7_reset)
>  	.popsection
>  
> -- 
> 1.7.4.1
> 



More information about the linux-arm-kernel mailing list