RM0082
CPU subsystem_Vectored interrupt controller (VIC)
Doc ID 018672 Rev 1
8.5
How to reduce interrupt latency
The interrupt latency depends on the type of interrupt, see
To reduce interrupt latency, you can re-enable the IRQ interrupts in the processor after the
ISR is entered, so the current ISR is interrupted, and the higher-priority ISR is executed.
The VIC then only enables a higher priority interrupt than the interrupt currently being
serviced. If a higher priority interrupt goes active, the current ISR is interrupted and the
higher-priority ISR is executed. Before the interrupt enable bits in the processor can be re-
enabled, the LR and SPSR must be saved, preferably on a software stack. When the ISR is
exited, you must disable the interrupts, reload the LR and SPSR, and write to the vector
address register, VICVECTADDR.
8.6 Programming
model
8.6.1 Register
map
The VIC can be fully configured by programming its 32 bit wide registers which can be
accessed at the base addresses 0xF110_0000.
VIC registers can be logically divided in four main groups:
●
Interrupt control and status registers (listed in
), for interrupt configuration.
●
Vector address registers (listed in
), containing the address of the ISRs.
●
Vector control registers (listed in
), which select the interrupt source for the
vectored interrupt.
●
Identification registers (listed in
), namely eight 8 bit RO registers reporting
VIC-specific information (part number, revision number and so on). Refer to ARM
technical documentation for further details.
Note:
Offset addresses from 0x300 to 0x310 are reserved for test purposes.
Table 24.
Interrupt latency for different types of interrupts
Event
Worst case (cycles)
FIQ
IRQ
IRQ (reduced latency)
Interrupt synchronization
3
3
3
Worst case interrupt disable period
7
10
10
Entry to first instruction
2
2
2
Nesting, assuming single-state AHB
-
10
-
Load IRQ vector to PC
-
-
5
Total
12
25
20
Table 25.
VIC interrupt control registers summary
Name
Offset
Type
Reset value
Description
VICIRQSTATUS
0x000
RO
32’h0
IRQ status
VICFIQSTATUS
0x004
RO
32’h0
FIQ status