| |||
| Home > Programmer’s Model > Exceptions > Fast interrupt request | |||
The Fast Interrupt Request (FIQ) exception supports fast interrupts. In ARM state, FIQ mode has eight private registers to reduce, or even remove the requirement for register saving. This minimizes the overhead of context switching.
An FIQ is externally generated by taking the nFIQ signal input LOW. The nFIQ input is registered internally to the processor. It is the output of this register that the processor control logic uses.
Irrespective of whether exception entry is from ARM state, Thumb state, or Java state, an FIQ handler returns from the interrupt by executing:
SUBS PC,R14_fiq,#4
You can disable FIQ exceptions within a privileged mode by setting the CPSR F flag. When the F flag is cleared to 0, the processor checks for a LOW level on the output of the nFIQ register at the end of each instruction.
The FW bit and FIQ bit in the SCR register configure the FIQ as:
nonmaskable in Nonsecure state (FW bit in SCR)
branch to either current FIQ mode or Monitor mode (FIQ bit in SCR).
FIQs and IRQs are disabled when an FIQ occurs. You can use nested interrupts but it is up to you to save any corruptible registers and to re-enable FIQs and interrupts.