This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
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