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 <n...@linaro.org>


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to