Messages in this thread | | | Date | Mon, 8 Sep 2014 11:49:39 -0400 (EDT) | From | Nicolas Pitre <> | Subject | Re: [PATCH v3 3/5] arm: fiq: Replace default FIQ handler |
| |
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.
Otherwise...
Acked-by: Nicolas Pitre <nico@linaro.org>
Nicolas
| |