diff options
| -rw-r--r-- | arch/arm/cpu/armv7/start.S | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index 61da7acde..5feae7ace 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -130,11 +130,15 @@ IRQ_STACK_START_IN:  reset:  	bl	save_boot_params  	/* -	 * set the cpu to SVC32 mode +	 * disable interrupts (FIQ and IRQ), also set the cpu to SVC32 mode, +	 * except if in HYP mode already  	 */  	mrs	r0, cpsr -	bic	r0, r0, #0x1f -	orr	r0, r0, #0xd3 +	and	r1, r0, #0x1f		@ mask mode bits +	teq	r1, #0x1a		@ test for HYP mode +	bicne	r0, r0, #0x1f		@ clear all mode bits +	orrne	r0, r0, #0x13		@ set SVC mode +	orr	r0, r0, #0xc0		@ disable FIQ and IRQ  	msr	cpsr,r0  /* |