This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: FIQ on ARM


>>>>> Jonathan Larmour writes:

>         // If FIQ interrupted IRQ mode, just return with FIQ disabled.
>         // The common interrupt handling takes care of the rest.
>         orr     r8,r8,#CPSR_FIQ_DISABLE
>         msr     spsr,r8
>         subs    pc,lr,#4

> I believe this means that the FIQ gets processed after the current IRQ. And
> if we already have an IRQ, the FIQ could be interrupting it at any point,
> such as when it's using __exception_stack.

That's not exactly the case. There is only a small window where FIQ can
interrupt IRQ mode. Notice, the IRQ handler switches to supervior mode
early on. So, if there is an IRQ and FIQ interrupts it before the switch
to SVR mode, the FIQ handler returns to the IRQ handler with FIQ disabled.
The common interrupt handling will eventually call hal_IRQ_handler in the
platform HAL. It is there that you could give priority to FIQs over IRQs.

--Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]