[PATCH 02/17] ARM: set BE8 if LE in head code

Nicolas Pitre nico at fluxnic.net
Fri Feb 8 22:33:33 EST 2013


On Fri, 8 Feb 2013, Ben Dooks wrote:

> If we are booting in LE and compiled for BE8, then change the processor
> state in the head code. Since the instruction stream is always LE, we
> do not need to do anything special.
> 
> Also ensure that the secondary processors are started in the same mode.
> 
> Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
> ---
>  arch/arm/boot/compressed/head.S |    3 +++
>  arch/arm/kernel/head.S          |    3 +++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
> index fe4d9c3..39940a7 100644
> --- a/arch/arm/boot/compressed/head.S
> +++ b/arch/arm/boot/compressed/head.S
> @@ -134,6 +134,9 @@ start:
>  		.word	_edata			@ zImage end address
>   THUMB(		.thumb			)
>  1:
> +#ifdef CONFIG_CPU_BE8_BOOT_LE
> +		setend	be			@ go BE-8 if we booted LE / no-op if already BE-8
> +#endif
>  		mrs	r9, cpsr
>  #ifdef CONFIG_ARM_VIRT_EXT
>  		bl	__hyp_stub_install	@ get into SVC mode, reversibly
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index 486a15a..f1ab279 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -333,6 +333,9 @@ ENTRY(secondary_startup)
>  	 * the processor type - there is no need to check the machine type
>  	 * as it has already been validated by the primary processor.
>  	 */
> +#ifdef CONFIG_CPU_BE8_BOOT_LE
> +	setend	be				@ if system starts LE, go to BE-8
> +#endif
>  #ifdef CONFIG_ARM_VIRT_EXT
>  	bl	__hyp_stub_install_secondary
>  #endif

For consistency, you should add a setend on the primary CPU entry path 
in kernel/head.S and not rely on the decompressor.  Some people don't 
use the compressed image.


Nicolas



More information about the linux-arm-kernel mailing list