GICD_TYPER, Interrupt Controller Type Register
The GICD_TYPER characteristics are:
Provides information about what features the GIC implementation supports. It indicates:
- Whether the GIC implementation supports two Security states.
- The maximum number of INTIDs that the GIC implementation supports.
- The number of PEs that can be used as interrupt targets.
This register is available in all configurations of the GIC. When GICD_CTLR.DS==0, this register is Common.
GICD_TYPER is a 32-bit register.
The GICD_TYPER bit assignments are:
ESPI_range field, bits [31:27]
When GICD_TYPER.ESPI == 1:
When GICD_TYPER.ESPI == 1:
Indicates the maximum INTID in the Extended SPI range.
- Maximum Extended SPI INTID is (32*(ESPI_range + 1) + 4095)
RSS, bit 
Range Selector Support. Possible values are:
The IRI supports targeted SGIs with affinity level 0 values of 0 - 15.
The IRI supports targeted SGIs with affinity level 0 values of 0 - 255.
No1N, bit 
Indicates whether 1 of N SPI interrupts are supported.
1 of N SPI interrupts are supported.
1 of N SPI interrupts are not supported.
A3V, bit 
Affinity 3 valid. Indicates whether the Distributor supports nonzero values of Affinity level 3. Possible values are:
The Distributor only supports zero values of Affinity level 3.
The Distributor supports nonzero values of Affinity level 3.
IDbits, bits [23:19]
The number of interrupt identifier bits supported, minus one.
DVIS, bit 
Indicates whether the implementation supports Direct Virtual LPI injection.
The implementation does not support Direct Virtual LPI injection.
The implementation supports Direct Virtual LPI injection.
For GICv3, this field is RES0.
LPIS, bit 
Indicates whether the implementation supports LPIs.
The implementation does not support LPIs.
The implementation supports LPIs.
MBIS, bit 
Indicates whether the implementation supports message-based interrupts by writing to Distributor registers.
The implementation does not support message-based interrupts by writing to Distributor registers.
num_LPIs, bits [15:11]
Number of supported LPIs.
0b00000 Number of LPIs as indicated by GICD_TYPER.IDbits.
All other values Number of LPIs supported is 2^(num_LPIs+1) .
Available LPI INTIDs are 8192..(8192 + 2^(num_LPIs+1) - 1).
This field cannot indicate a maximum LPI INTID greater than that indicated by GICD_TYPER.IDbits.
When the supported INTID width is less than 14 bits, this field is RES0 and no LPIs are supported.
SecurityExtn, bit 
Indicates whether the GIC implementation supports two Security states:
When GICD_CTLR.DS == 1, this field is RAZ.
The GIC implementation supports only a single Security state.
The GIC implementation supports two Security states.
ESPI, bit 
Extended SPI range not implemented.
Extended SPI range implemented.
CPUNumber, bits [7:5]
Reports the number of PEs that can be used when affinity routing is not enabled, minus 1.
These PEs must be numbered contiguously from zero, but the relationship between this number and the affinity hierarchy from MPIDR is IMPLEMENTATION DEFINED. If the implementation does not support ARE being zero, this field is 000.
ITLinesNumber, bits [4:0]
Indicates the maximum SPI INTID that the GIC implementation supports. If the value of this field is N, the maximum SPI INTID is 32(N+1)-1. For example, 00011 specifies that the maximum SPI INTID is 127.
The maximum SPI INTID an implementation might support is 1019 (field value 11111). Regardless of the range of INTIDs defined by this field, interrupt IDs 1020-1023 are reserved for special purposes.
A value of 0 indicates no SPIs are support.
The value derived from this field specifies the maximum number of SPIs that the GIC implementation might support. An implementation might not implement all SPIs up to this maximum.
The ITLinesNumber field only indicates the maximum number of SPIs that the GIC implementation might support. This value determines the number of instances of the following interrupt registers:
The GIC architecture does not require a GIC implementation to support a continuous range of SPI interrupt IDs. Software must check which SPI INTIDs are supported, up to the maximum value indicated by GICD_TYPER.ITLinesNumber.
Accessing the GICD_TYPER
GICD_TYPER can be accessed through the memory-mapped interfaces:
This interface is accessible as follows:
- When GICD_CTLR.DS == 0b0 access to this register is RO.
- When IsAccessSecure() access to this register is RO.
- When !IsAccessSecure() access to this register is RO.