[PATCH v3 3/5] arm: fiq: Replace default FIQ handler

Daniel Thompson daniel.thompson at linaro.org
Mon Sep 8 08:57:06 PDT 2014


On 08/09/14 16:49, Nicolas Pitre wrote:
> On Mon, 8 Sep 2014, Daniel Thompson wrote:
> 
>> +@
>> +@ Taking a FIQ in abort mode is similar to taking a FIQ in SVC mode
>> +@ and reuses the same macros. However in abort mode we must also
>> +@ save/restore lr_abt and spsr_abt to make nested aborts safe.
>> +@
>> +	.align 5
>> +__fiq_abt:
>> +	svc_entry 0, 0
>> +
>> + ARM(	msr	cpsr_c, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
>> + THUMB( mov	r0, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
>> + THUMB( msr	cpsr_c, r0 )
>> +	mov	r1, lr		@ Save lr_abt
>> +	mrs	r2, spsr	@ Save spsr_abt, abort is now safe
>> + ARM(	msr	cpsr_c, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
>> + THUMB( mov	r0, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
>> + THUMB( msr	cpsr_c, r0 )
>> +	push	{r1 - r2}
> 
> 	stmfd sp!, {r1 - r2}
> 
>> +
>> +	sub	r0, sp, #8			@ struct pt_regs *regs
>> +	bl	handle_fiq_as_nmi
>> +
>> +	pop	{r1 - r2}
> 
> 	ldmfd sp!, {r1 - r2}
> 
> ... so that old binutils we still accept to compile the kernel (in ARM 
> mode) are happy.

Will do.


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

Thanks :-)




More information about the linux-arm-kernel mailing list