User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 234
UG585 (v1.11) September 27, 2016
Chapter 7: Interrupts
Controller registers. The CFGSDISABLE bit can only be cleared by a power-on reset (POR.) After the
CFGSDISABLE bit is set, it changes the protected register bits to read-only and therefore the behavior of
these secure interrupts cannot be changed, even in the presence of rogue code executing in the secure
domain.
7.4 Programming Model
7.4.1 Interrupt Prioritization
All of the interrupt requests (PPI, SGI and SPI) are assigned a unique ID number. The controller uses
the ID number to arbitrate. The interrupt distributor holds the list of pending interrupts for each
CPU, and then selects the highest priority interrupt before issuing it to the CPU interface. Interrupts
of equal priority are resolved by selecting the lowest ID.
The prioritization logic is physically duplicated to enable the simultaneous selection of the highest
priority interrupt for each CPU. The interrupt distributor holds the central list of interrupts,
processors and activation information, and is responsible for triggering software interrupts to the
CPUs.
SGI and PPI distributor registers are banked to provide a separate copy for each connected
processor. Hardware ensures that an interrupt targeting several CPUs can only be taken by one CPU
at a time.
The interrupt distributor transmits to the CPU interfaces the highest pending interrupt. It receives
back the information that the interrupt has been acknowledged, and can then change the status of
the corresponding interrupt. Only the CPU that acknowledges the interrupt can end that interrupt.
7.4.2 Interrupt Handling
The response of the GIC to a pending interrupt when an IRQ line de-asserts is described in the ARM
document: IHI0048B_gic_architecture_specification.pdf (see Appendix A, Additional Resources). See
the Note in Section 1.4.2 with additional information in Section 3.2.4.
If the interrupt is pending in the GIC and IRQ is de-asserted, the interrupt in the GIC becomes
inactive (and the CPU never sees it).
If the interrupt is active in the GIC (because the CPU interface has acknowledged the interrupt), then
the software ISR determines the cause by checking the GIC registers first and then polling the I/O
Peripheral interrupt status registers.