VIC ports in PV models
The ARMCortexR4CT, ARM1176CT, and ARM1136CT models implement a simplified model of the Vectored Interrupt Controller (VIC) port.
The protocol consists of two ports:
- The vic_addr port signals the vectored interrupt address from the external VIC.
- The vic_ack port signals the VIC that an interrupt has been detected and is being serviced.
The expected interrupt sequence is:
- The software enables the VIC interface by setting the VE bit in the CP15 control register and setting up suitable interrupt routines.
- The VIC asserts IRQ.
- Some time later, the processor detects and responds to the IRQ by asserting vic_ack.
- The VIC writes the vector address to the processor using vic_addr.
- The processor de-asserts vic_ack.
- The processor transfers control to the vectored address returned from the VIC.
The interaction between the processor and the VIC is untimed after the processor acknowledges the interrupt, so certain interrupt sequences cannot occur in the code translation processor models.