[PATCH v3 3/5] arm: fiq: Replace default FIQ handler
From: Daniel Thompson <hidden>
Date: 2014-09-08 15:57:07
Also in:
lkml
From: Daniel Thompson <hidden>
Date: 2014-09-08 15:57:07
Also in:
lkml
On 08/09/14 16:49, Nicolas Pitre wrote:
On Mon, 8 Sep 2014, Daniel Thompson wrote:quoted
+@ +@ 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}quoted
+ + 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 <redacted>
Thanks :-)