diff options
author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2023-05-10 17:28:24 +0000 |
---|---|---|
committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2023-05-10 17:28:24 +0000 |
commit | d3bd81c0c3fc003a91f8b3109777bb3df4a01e30 (patch) | |
tree | 86ff4a51d8f9153a4c9b894e8ba988179dc11eda /include/VBox/gic.h | |
parent | c03068b5b05c37277ce58920c715eb0ef002441e (diff) | |
download | VirtualBox-svn-d3bd81c0c3fc003a91f8b3109777bb3df4a01e30.tar.gz |
VMM/GIC: Updates to the implementation, implement forwarding of SGIs and PPIs, bugref:10404
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@99734 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'include/VBox/gic.h')
-rw-r--r-- | include/VBox/gic.h | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/include/VBox/gic.h b/include/VBox/gic.h index 34c5d124f3f..7379dcd236e 100644 --- a/include/VBox/gic.h +++ b/include/VBox/gic.h @@ -42,6 +42,45 @@ #include <iprt/types.h> #include <iprt/armv8.h> +/** @name INTIDs - Interrupt identifier ranges. + * @{ */ +/** Start of the SGI (Software Generated Interrupts) range. */ +#define GIC_INTID_RANGE_SGI_START 0 +/** Last valid SGI (Software Generated Interrupts) identifier. */ +#define GIC_INTID_RANGE_SGI_LAST 15 + +/** Start of the PPI (Private Peripheral Interrupts) range. */ +#define GIC_INTID_RANGE_PPI_START 16 +/** Last valid PPI (Private Peripheral Interrupts) identifier. */ +#define GIC_INTID_RANGE_PPI_LAST 31 + +/** Start of the SPI (Shared Peripheral Interrupts) range. */ +#define GIC_INTID_RANGE_SPI_START 32 +/** Last valid SPI (Shared Peripheral Interrupts) identifier. */ +#define GIC_INTID_RANGE_SPI_LAST 1019 + +/** Start of the special interrupt range. */ +#define GIC_INTID_RANGE_SPECIAL_START 1020 +/** Last valid special interrupt identifier. */ +#define GIC_INTID_RANGE_SPECIAL_LAST 1023 +/** Value for an interrupt acknowledge if no pending interrupt with sufficient + * priority, security state or interrupt group. */ +# define GIC_INTID_RANGE_SPECIAL_NO_INTERRUPT 1023 + +/** Start of the extended PPI (Private Peripheral Interrupts) range. */ +#define GIC_INTID_RANGE_EPPI_START 1056 +/** Last valid extended PPI (Private Peripheral Interrupts) identifier. */ +#define GIC_INTID_RANGE_EPPI_LAST 1119 + +/** Start of the extended SPI (Shared Peripheral Interrupts) range. */ +#define GIC_INTID_RANGE_ESPI_START 4096 +/** Last valid extended SPI (Shared Peripheral Interrupts) identifier. */ +#define GIC_INTID_RANGE_ESPI_LAST 5119 + +/** Start of the LPI (Locality-specific Peripheral Interrupts) range. */ +#define GIC_INTID_RANGE_LPI_START 8192 +/** @} */ + /** @name GICD - GIC Distributor registers. * @{ */ @@ -367,11 +406,11 @@ #define GIC_REDIST_SGI_PPI_REG_ISENABLER2E_OFF 0x0108 /** Interrupt Clear Enable Register 0 - RW. */ -#define GIC_REDIST_SGI_PPI_REG_ICENABLER0_OFF 0x0100 +#define GIC_REDIST_SGI_PPI_REG_ICENABLER0_OFF 0x0180 /** Interrupt Clear Enable Register 1 for extended PPI range - RW. */ -#define GIC_REDIST_SGI_PPI_REG_ICENABLER1E_OFF 0x0104 +#define GIC_REDIST_SGI_PPI_REG_ICENABLER1E_OFF 0x0184 /** Interrupt Clear Enable Register 2 for extended PPI range - RW. */ -#define GIC_REDIST_SGI_PPI_REG_ICENABLER2E_OFF 0x0108 +#define GIC_REDIST_SGI_PPI_REG_ICENABLER2E_OFF 0x0188 /** Interrupt Set Pend Register 0 - RW. */ #define GIC_REDIST_SGI_PPI_REG_ISPENDR0_OFF 0x0200 |