Hypervisor Configuration Masking Register
Mask register to prevent updates of fields in HCR_EL2 on direct writes to HCR_EL2.
This register is present only when FEAT_SRMASK2 is implemented and FEAT_AA64 is implemented. Otherwise, direct accesses to HCRMASK_EL2 are UNDEFINED.
HCRMASK_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 | TWEDEL | TWEDEn | TID5 | DCT | ATA | TTLBOS | TTLBIS | EnSCXT | TOCU | AMVOFFEN | TICAB | TID4 | GPF | FIEN | FWB | NV2 | AT | NV1 | NV | API | APK | RES0 | TEA | TERR | TLOR | E2H | ID | CD | |||
| RW | TRVM | HCD | TDZ | TGE | TVM | TTLB | TPU | TPCP | TSW | TACR | TIDCP | TSC | TID3 | TID2 | TID1 | TID0 | TWE | TWI | DC | RES0 | BSU | FB | VSE | VI | VF | AMO | IMO | FMO | PTW | SWIO | VM |
Reserved, RES0.
Mask bit for TWEDEL.
| TWEDEL | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TWEDEL is writable. |
| 0b1 |
HCR_EL2.TWEDEL is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TWEDEn.
| TWEDEn | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TWEDEn is writable. |
| 0b1 |
HCR_EL2.TWEDEn is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TID5.
| TID5 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID5 is writable. |
| 0b1 |
HCR_EL2.TID5 is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for DCT.
| DCT | Meaning |
|---|---|
| 0b0 |
HCR_EL2.DCT is writable. |
| 0b1 |
HCR_EL2.DCT is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for ATA.
| ATA | Meaning |
|---|---|
| 0b0 |
HCR_EL2.ATA is writable. |
| 0b1 |
HCR_EL2.ATA is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TTLBOS.
| TTLBOS | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TTLBOS is writable. |
| 0b1 |
HCR_EL2.TTLBOS is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TTLBIS.
| TTLBIS | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TTLBIS is writable. |
| 0b1 |
HCR_EL2.TTLBIS is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for EnSCXT.
| EnSCXT | Meaning |
|---|---|
| 0b0 |
HCR_EL2.EnSCXT is writable. |
| 0b1 |
HCR_EL2.EnSCXT is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TOCU.
| TOCU | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TOCU is writable. |
| 0b1 |
HCR_EL2.TOCU is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for AMVOFFEN.
| AMVOFFEN | Meaning |
|---|---|
| 0b0 |
HCR_EL2.AMVOFFEN is writable. |
| 0b1 |
HCR_EL2.AMVOFFEN is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TICAB.
| TICAB | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TICAB is writable. |
| 0b1 |
HCR_EL2.TICAB is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TID4.
| TID4 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID4 is writable. |
| 0b1 |
HCR_EL2.TID4 is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for GPF.
| GPF | Meaning |
|---|---|
| 0b0 |
HCR_EL2.GPF is writable. |
| 0b1 |
HCR_EL2.GPF is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for FIEN.
| FIEN | Meaning |
|---|---|
| 0b0 |
HCR_EL2.FIEN is writable. |
| 0b1 |
HCR_EL2.FIEN is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for FWB.
| FWB | Meaning |
|---|---|
| 0b0 |
HCR_EL2.FWB is writable. |
| 0b1 |
HCR_EL2.FWB is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for NV2.
| NV2 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.NV2 is writable. |
| 0b1 |
HCR_EL2.NV2 is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for AT.
| AT | Meaning |
|---|---|
| 0b0 |
HCR_EL2.AT is writable. |
| 0b1 |
HCR_EL2.AT is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for NV1.
| NV1 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.NV1 is writable. |
| 0b1 |
HCR_EL2.NV1 is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for NV.
| NV | Meaning |
|---|---|
| 0b0 |
HCR_EL2.NV is writable. |
| 0b1 |
HCR_EL2.NV is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for API.
| API | Meaning |
|---|---|
| 0b0 |
HCR_EL2.API is writable. |
| 0b1 |
HCR_EL2.API is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for APK.
| APK | Meaning |
|---|---|
| 0b0 |
HCR_EL2.APK is writable. |
| 0b1 |
HCR_EL2.APK is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
Mask bit for TEA.
| TEA | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TEA is writable. |
| 0b1 |
HCR_EL2.TEA is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TERR.
| TERR | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TERR is writable. |
| 0b1 |
HCR_EL2.TERR is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TLOR.
| TLOR | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TLOR is writable. |
| 0b1 |
HCR_EL2.TLOR is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for E2H.
| E2H | Meaning |
|---|---|
| 0b0 |
HCR_EL2.E2H is writable. |
| 0b1 |
HCR_EL2.E2H is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for ID.
| ID | Meaning |
|---|---|
| 0b0 |
HCR_EL2.ID is writable. |
| 0b1 |
HCR_EL2.ID is not writable. |
The reset behavior of this field is:
Mask bit for CD.
| CD | Meaning |
|---|---|
| 0b0 |
HCR_EL2.CD is writable. |
| 0b1 |
HCR_EL2.CD is not writable. |
The reset behavior of this field is:
Mask bit for RW.
| RW | Meaning |
|---|---|
| 0b0 |
HCR_EL2.RW is writable. |
| 0b1 |
HCR_EL2.RW is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TRVM.
| TRVM | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TRVM is writable. |
| 0b1 |
HCR_EL2.TRVM is not writable. |
The reset behavior of this field is:
Mask bit for HCD.
| HCD | Meaning |
|---|---|
| 0b0 |
HCR_EL2.HCD is writable. |
| 0b1 |
HCR_EL2.HCD is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TDZ.
| TDZ | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TDZ is writable. |
| 0b1 |
HCR_EL2.TDZ is not writable. |
The reset behavior of this field is:
Mask bit for TGE.
| TGE | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TGE is writable. |
| 0b1 |
HCR_EL2.TGE is not writable. |
The reset behavior of this field is:
Mask bit for TVM.
| TVM | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TVM is writable. |
| 0b1 |
HCR_EL2.TVM is not writable. |
The reset behavior of this field is:
Mask bit for TTLB.
| TTLB | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TTLB is writable. |
| 0b1 |
HCR_EL2.TTLB is not writable. |
The reset behavior of this field is:
Mask bit for TPU.
| TPU | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TPU is writable. |
| 0b1 |
HCR_EL2.TPU is not writable. |
The reset behavior of this field is:
Mask bit for TPCP.
| TPCP | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TPCP is writable. |
| 0b1 |
HCR_EL2.TPCP is not writable. |
The reset behavior of this field is:
Mask bit for TSW.
| TSW | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TSW is writable. |
| 0b1 |
HCR_EL2.TSW is not writable. |
The reset behavior of this field is:
Mask bit for TACR.
| TACR | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TACR is writable. |
| 0b1 |
HCR_EL2.TACR is not writable. |
The reset behavior of this field is:
Mask bit for TIDCP.
| TIDCP | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TIDCP is writable. |
| 0b1 |
HCR_EL2.TIDCP is not writable. |
The reset behavior of this field is:
Mask bit for TSC.
| TSC | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TSC is writable. |
| 0b1 |
HCR_EL2.TSC is not writable. |
The reset behavior of this field is:
Mask bit for TID3.
| TID3 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID3 is writable. |
| 0b1 |
HCR_EL2.TID3 is not writable. |
The reset behavior of this field is:
Mask bit for TID2.
| TID2 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID2 is writable. |
| 0b1 |
HCR_EL2.TID2 is not writable. |
The reset behavior of this field is:
Mask bit for TID1.
| TID1 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID1 is writable. |
| 0b1 |
HCR_EL2.TID1 is not writable. |
The reset behavior of this field is:
Mask bit for TID0.
| TID0 | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TID0 is writable. |
| 0b1 |
HCR_EL2.TID0 is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for TWE.
| TWE | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TWE is writable. |
| 0b1 |
HCR_EL2.TWE is not writable. |
The reset behavior of this field is:
Mask bit for TWI.
| TWI | Meaning |
|---|---|
| 0b0 |
HCR_EL2.TWI is writable. |
| 0b1 |
HCR_EL2.TWI is not writable. |
The reset behavior of this field is:
Mask bit for DC.
| DC | Meaning |
|---|---|
| 0b0 |
HCR_EL2.DC is writable. |
| 0b1 |
HCR_EL2.DC is not writable. |
The reset behavior of this field is:
Reserved, RES0.
Mask bit for BSU.
| BSU | Meaning |
|---|---|
| 0b0 |
HCR_EL2.BSU is writable. |
| 0b1 |
HCR_EL2.BSU is not writable. |
The reset behavior of this field is:
Mask bit for FB.
| FB | Meaning |
|---|---|
| 0b0 |
HCR_EL2.FB is writable. |
| 0b1 |
HCR_EL2.FB is not writable. |
The reset behavior of this field is:
Mask bit for VSE.
| VSE | Meaning |
|---|---|
| 0b0 |
HCR_EL2.VSE is writable. |
| 0b1 |
HCR_EL2.VSE is not writable. |
The reset behavior of this field is:
Mask bit for VI.
| VI | Meaning |
|---|---|
| 0b0 |
HCR_EL2.VI is writable. |
| 0b1 |
HCR_EL2.VI is not writable. |
The reset behavior of this field is:
Mask bit for VF.
| VF | Meaning |
|---|---|
| 0b0 |
HCR_EL2.VF is writable. |
| 0b1 |
HCR_EL2.VF is not writable. |
The reset behavior of this field is:
Mask bit for AMO.
| AMO | Meaning |
|---|---|
| 0b0 |
HCR_EL2.AMO is writable. |
| 0b1 |
HCR_EL2.AMO is not writable. |
The reset behavior of this field is:
Mask bit for IMO.
| IMO | Meaning |
|---|---|
| 0b0 |
HCR_EL2.IMO is writable. |
| 0b1 |
HCR_EL2.IMO is not writable. |
The reset behavior of this field is:
Mask bit for FMO.
| FMO | Meaning |
|---|---|
| 0b0 |
HCR_EL2.FMO is writable. |
| 0b1 |
HCR_EL2.FMO is not writable. |
The reset behavior of this field is:
Mask bit for PTW.
| PTW | Meaning |
|---|---|
| 0b0 |
HCR_EL2.PTW is writable. |
| 0b1 |
HCR_EL2.PTW is not writable. |
The reset behavior of this field is:
Mask bit for SWIO.
| SWIO | Meaning |
|---|---|
| 0b0 |
HCR_EL2.SWIO is writable. |
| 0b1 |
HCR_EL2.SWIO is not writable. |
The reset behavior of this field is:
Mask bit for VM.
| VM | Meaning |
|---|---|
| 0b0 |
HCR_EL2.VM is writable. |
| 0b1 |
HCR_EL2.VM is not writable. |
The reset behavior of this field is:
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, HCRMASK_EL2
(op0 = 0b11, op1 = 0b100, CRn = 0b0001, CRm = 0b0101, op2 = 0b110)
if !(IsFeatureImplemented(FEAT_SRMASK2) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif HaveEL(EL3) && PSTATE.EL == EL2 && EL3SDDUndefPriority() && SCR2_EL3().SRMASK2En == '0' then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCRX_EL2_NVTGE() == '1' && (!HaveEL(EL3) || SCR2_EL3().SRMASK2En == '1') then X{64}(t) = NVHCRMASK_EL2(); elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && IsFeatureImplemented(FEAT_SCR2) && SCR2_EL3().SRMASK2En == '0' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; else X{64}(t) = HCRMASK_EL2(); end; elsif PSTATE.EL == EL3 then X{64}(t) = HCRMASK_EL2(); end;
MSR HCRMASK_EL2, <Xt>
(op0 = 0b11, op1 = 0b100, CRn = 0b0001, CRm = 0b0101, op2 = 0b110)
if !(IsFeatureImplemented(FEAT_SRMASK2) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif HaveEL(EL3) && PSTATE.EL == EL2 && EL3SDDUndefPriority() && SCR2_EL3().SRMASK2En == '0' then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCRX_EL2_NVTGE() == '1' && (!HaveEL(EL3) || SCR2_EL3().SRMASK2En == '1') then if !IsZero(NVHCRMASK_EL2()) then Undefined(); else NVHCRMASK_EL2() = X{64}(t); end; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && IsFeatureImplemented(FEAT_SCR2) && SCR2_EL3().SRMASK2En == '0' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; elsif !IsZero(HCRMASK_EL2()) then Undefined(); else HCRMASK_EL2() = X{64}(t); end; elsif PSTATE.EL == EL3 then HCRMASK_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.