The GICSS supports four types of interrupts:
- Software Generated Interrupts (SGIs): There are 16 SGIs (ID0-ID15). These are inter-processor interrupts. SGIs can be sent using either Arm system registers or by writing to the Software Generated Interrupt Register (GICD_SGIR).
- Private Peripheral Interrupts (PPIs): There are 16 PPIs (ID16-ID31). These are wired interrupts dedicated to a specific CPU. Many are reserved to specific functions via convention. These can be either active-low levels (by default), or rising edge triggered (software programmable).
- Shared Peripheral Interrupts (SPIs): There are 256 SPIs (ID32-ID288). These are wired interrupts that can be routed to any core or cluster, based on the programming of that interrupt in the GICSS. These are active-high levels (by default), or rising edge triggered (software programmable).
- Locality-Specific Peripheral Interrupts
(LPIs): There are 57,344 of these. These interrupts are used for
message-based interrupts from a peripheral. They are generated through writes to
the GICSS peripheral interface. The information associated with these is located
in memory. The GICSS keeps a small 64-entries cache on-board in order to reduce
latency either for specific interrupts or for most-recently-used. LPIs can be
routed to different CPUs based on programmed rules.