Hypervisor GIC Fine-Grained Read Trap Register
Provides controls for traps of MRS reads of GIC System registers.
This register is present only when FEAT_GCIE is implemented, (EL2 is implemented or EL3 is implemented), and FEAT_AA64 is implemented. Otherwise, direct accesses to ICH_HFGRTR_EL2 are UNDEFINED.
If EL2 is not implemented, this register is RES0 from EL3.
ICH_HFGRTR_EL2 is a 64-bit register.
| 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RES0 | |||||||||||||||||||||||||||||||
| RES0 | ICC_PPI_ACTIVERn_EL1 | ICC_PPI_PRIORITYRn_EL1 | ICC_PPI_PENDRn_EL1 | ICC_PPI_ENABLERn_EL1 | ICC_PPI_HMRn_EL1 | RES0 | ICC_IAFFIDR_EL1 | ICC_ICSR_EL1 | ICC_PCR_EL1 | ICC_HPPIR_EL1 | RES1 | ICC_CR0_EL1 | ICC_IDRn_EL1 | ICC_APR_EL1 | |||||||||||||||||
Reserved, RES0.
Trap MRS reads of ICC_PPI_CACTIVER<n>_EL1, ICC_PPI_SACTIVER<n>_EL1, ICV_PPI_CACTIVER<n>_EL1 and ICV_PPI_SACTIVER<n>_EL1 at EL1 using AArch64 to EL2.
| ICC_PPI_ACTIVERn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_PPI_PRIORITYR<n>_EL1 and ICV_PPI_PRIORITYR<n>_EL1 at EL1 using AArch64 to EL2.
| ICC_PPI_PRIORITYRn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_PPI_CPENDR<n>_EL1, ICC_PPI_SPENDR<n>_EL1 ICV_PPI_CPENDR<n>_EL1 and ICV_PPI_SPENDR<n>_EL1 at EL1 using AArch64 to EL2.
| ICC_PPI_PENDRn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_PPI_ENABLER<n>_EL1 and ICV_PPI_ENABLER<n>_EL1 at EL1 using AArch64 to EL2.
| ICC_PPI_ENABLERn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_PPI_HMR<n>_EL1 and ICV_PPI_HMR<n>_EL1 at EL1 using AArch64 to EL2.
| ICC_PPI_HMRn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Reserved, RES0.
Trap MRS reads of ICC_IAFFIDR_EL1 at EL1 using AArch64 to EL2.
| ICC_IAFFIDR_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_ICSR_EL1 at EL1 using AArch64 to EL2.
| ICC_ICSR_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_PCR_EL1 and ICV_PCR_EL1 at EL1 using AArch64 to EL2.
| ICC_PCR_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_HPPIR_EL1 and ICV_HPPIR_EL1 at EL1 using AArch64 to EL2.
| ICC_HPPIR_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Reserved, RES1.
Trap MRS reads of ICC_CR0_EL1 and ICV_CR0_EL1 at EL1 using AArch64 to EL2.
| ICC_CR0_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_IDR0_EL1 at EL1 using AArch64 to EL2.
| ICC_IDRn_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Trap MRS reads of ICC_APR_EL1 and ICV_APR_EL1 at EL1 using AArch64 to EL2.
| ICC_APR_EL1 | Meaning |
|---|---|
| 0b0 |
If EL2 is implemented and enabled in the current Security state, then MRS reads of the specified registers at EL1 using AArch64 are trapped to EL2 and reported with EC syndrome value 0x18, unless the read generates a higher priority exception. |
| 0b1 |
MRS reads of the specified registers are not trapped by this mechanism. |
The reset behavior of this field is:
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, ICH_HFGRTR_EL2
(op0 = 0b11, op1 = 0b100, CRn = 0b1100, CRm = 0b1001, op2 = 0b100)
if !(IsFeatureImplemented(FEAT_GCIE) && (HaveEL(EL2) || HaveEL(EL3)) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} && (!IsFeatureImplemented(FEAT_GCIE_LEGACY) || (IsFeatureImplemented(FEAT_GCIE_LEGACY) && ICH_VCTLR_EL2().V3 == '0')) then X{64}(t) = NVMem(0xB18); elsif EffectiveHCR_EL2_NVx() IN {'xx1'} && (!IsFeatureImplemented(FEAT_GCIE_LEGACY) || (IsFeatureImplemented(FEAT_GCIE_LEGACY) && ICH_VCTLR_EL2().V3 == '0')) then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then X{64}(t) = ICH_HFGRTR_EL2(); elsif PSTATE.EL == EL3 then X{64}(t) = ICH_HFGRTR_EL2(); end;
MSR ICH_HFGRTR_EL2, <Xt>
(op0 = 0b11, op1 = 0b100, CRn = 0b1100, CRm = 0b1001, op2 = 0b100)
if !(IsFeatureImplemented(FEAT_GCIE) && (HaveEL(EL2) || HaveEL(EL3)) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} && (!IsFeatureImplemented(FEAT_GCIE_LEGACY) || (IsFeatureImplemented(FEAT_GCIE_LEGACY) && ICH_VCTLR_EL2().V3 == '0')) then NVMem(0xB18) = X{64}(t); elsif EffectiveHCR_EL2_NVx() IN {'xx1'} && (!IsFeatureImplemented(FEAT_GCIE_LEGACY) || (IsFeatureImplemented(FEAT_GCIE_LEGACY) && ICH_VCTLR_EL2().V3 == '0')) then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then ICH_HFGRTR_EL2() = X{64}(t); elsif PSTATE.EL == EL3 then ICH_HFGRTR_EL2() = X{64}(t); end;
Version 2026.06 — Copyright © 2010-2026 Arm Limited or its affiliates.
This site is provided as a community resource and is NOT affiliated with nor endorsed by Arm Limited.