← Home

HCRX_EL2: Extended Hypervisor Configuration Register

Purpose

Provides configuration controls for virtualization, including defining whether various operations are trapped to EL2.

Configuration

This register is present only when FEAT_HCX is implemented. Otherwise, direct accesses to HCRX_EL2 are UNDEFINED.

If EL2 is not implemented, this register is RES0 from EL3.

The bits in this register behave as if they are 0 for all purposes other than direct reads of the register if:

Attributes

HCRX_EL2 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0
RES0PACMEnEnFPMGCSEnEnIDCP128EnSDERRTMEAEnSNERRD128EnPTTWISCTLR2EnTCR2EnRES0MSCEnMCE2CMOWVFNMIVINMITALLINTSMPMEFGTnXSFnXSEnASREnALSEnAS0

Bits [63:25]

Reserved, RES0.

PACMEn, bit [24]

When FEAT_PAuth_LR is implemented:

PACM Enable. Controls the effect of a PACM instruction at EL1 and EL0.

PACMEnMeaning
0b0

The effects of PACM are disabled at EL1 and EL0, regardless of the value in any other controls.

0b1

This control does not disable the effect of PACM at EL1 and EL0.

The Effective value of this field is 1 when EL2 is disabled in the current Security state or the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}.

The Effective value of this field is 0 when EL2 is enabled in the current Security state and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1} and SCR_EL3.HXEn == 0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnFPM, bit [23]

When FEAT_FPMR is implemented:

Enables the following accesses to FPMR from EL0 and EL1 to EL2:

EnFPMMeaning
0b0

EL1 and EL0 accesses to FPMR are disabled and trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

Traps are not taken if there is a higher priority exception generated by the access.

The Effective value of this field is 1 when any of the following are true:

The Effective value of this field is 0 when all of the following are true:

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

GCSEn, bit [22]

When FEAT_GCS is implemented:

Guarded Control Stack enable. Controls Guarded Control Stack behavior at EL1 and EL0.

GCSEnMeaning
0b0

The Guarded Control Stack is disabled at EL1 and EL0.

0b1

Guarded Control Stack behavior at EL1 and EL0 is not affected by mechanism.

This field is ignored by the PE and treated as 1 when EL2 is disabled in the current Security state or the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}.

This field is ignored by the PE and treated as 0 when EL2 is enabled in the current Security state and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1} and SCR_EL3.HXEn == 0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnIDCP128, bit [21]

When FEAT_SYSREG128 is implemented:

Enables access to IMPLEMENTATION DEFINED 128-bit System registers.

EnIDCP128Meaning
0b0

If EL2 is implemented and enabled in the current Security state, accesses at EL1, EL0 to IMPLEMENTATION DEFINED 128-bit System registers are trapped to EL2 using an ESR_EL2.EC value of 0x14, unless the access generates a higher priority exception.

Disables the functionality of the 128-bit IMPLEMENTATION DEFINED System registers that are accessible at EL2.

0b1

No accesses are trapped by this control.

This field is ignored by the PE and treated as 1 when EL2 is disabled in the current Security state or the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}.

This field is ignored by the PE and treated as 0 when EL2 is enabled in the current Security state and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1} and SCR_EL3.HXEn == 0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnSDERR, bit [20]

When FEAT_ADERR is implemented:

Enable Synchronous Device Read Error. Override SCTLR2_EL1.EnADERR.

EnSDERRMeaning
0b0

This field has no effect on External aborts on Device memory reads in the EL1&0 translation regime.

0b1

External abort on Device memory reads generate synchronous Data Abort exceptions in the EL1&0 translation regime.

It is implementation-specific whether this field applies to memory reads generated by each of the following:

Setting this field to 1 does not guarantee that the PE is able to take a synchronous Data Abort exception for an External abort on a Device memory read in every case. There might be implementation-specific circumstances when an error on a load cannot be taken synchronously. These circumstances should be rare enough that treating such occurrences as fatal does not cause a significant increase in failure rate.

Setting this field to 1 might have a performance impact for Device memory reads.

This field is ignored by the PE and treated as 0 when any of the following are true:

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

TMEA, bit [19]

When FEAT_DoubleFault2 is implemented:

Trap Masked External Aborts. Controls whether a masked error exception at a lower Exception level is taken to EL2.

TMEAMeaning
0b0

Synchronous External abort exceptions, physical SError exceptions, and delegated SError exceptions at EL1 and EL0 are unaffected by this mechanism. That is, these exceptions are not taken to EL2 unless routed to EL2 by another control.

Virtual SError exceptions are not enabled by this mechanism.

0b1

When executing at Exception levels below EL2, if EL2 is enabled in the current Security state, then all of the following apply:

  • When PSTATE.A is 1, synchronous External abort exceptions are taken to EL2, unless they are routed to EL3.

  • Masked physical SError exceptions are taken to EL2, unless they are routed to EL3.

  • If FEAT_E3DSE is implemented then masked delegated SError exceptions enabled by SCR_EL3.DSE are taken to EL2.

  • If HCR_EL2.TGE is 0 then virtual SError exceptions are enabled.

This field is ignored by the PE and treated as 0 when any of the following are true:

Virtual SError exceptions are disabled when the Effective value of HCR_EL2.AMO is 0 and the Effective value of HCRX_EL2.TMEA is 0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnSNERR, bit [18]

When FEAT_ANERR is implemented:

Enable Synchronous Normal Read Error. Override SCTLR2_EL1.EnANERR.

EnSNERRMeaning
0b0

This field has no effect on External aborts on Normal memory reads in the EL1&0 translation regime.

0b1

External abort on Normal memory reads generate synchronous Data Abort exceptions in the EL1&0 translation regime.

It is implementation-specific whether this field applies to memory reads generated by each of the following:

Setting this field to 1 does not guarantee that the PE is able to take a synchronous Data Abort exception for an External abort on a Normal memory read in every case. There might be implementation-specific circumstances when an error on a load cannot be taken synchronously. These circumstances should be rare enough that treating such occurrences as fatal does not cause a significant increase in failure rate.

Setting this field to 1 might have a performance impact for Normal memory reads.

This field is ignored by the PE and treated as 0 when any of the following are true:

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

D128En, bit [17]

When FEAT_D128 is implemented:

128-bit System Register trap control. Enable access to 128-bit System Registers via MRRS, MSRR instructions.

D128EnMeaning
0b0

EL1 accesses to the specified registers are disabled, and trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

PTTWI, bit [16]

When FEAT_THE is implemented:

Permit Translation Table Walk Incoherence.

Permits RCWS instructions to generate writes that have the Reduced Coherence property.

PTTWIMeaning
0b0

If EL2 is implemented and enabled in the current Security state, write accesses generated by RCWS at EL1&0 do not have the Reduced Coherence property.

0b1

Write accesses generated by RCWS at EL1&0 have the Reduced Coherence property, if enabled by TCR2_EL1.PTTWI.

This bit is permitted to be cached in TLB.

This bit is permitted to be implemented as a read-only bit with a fixed value of 0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

SCTLR2En, bit [15]

When FEAT_SCTLR2 is implemented:

SCTLR2_EL1 Enable. In AArch64 state, accesses to SCTLR2_EL1 are trapped to EL2 and reported using EC syndrome value 0x18.

SCTLR2EnMeaning
0b0

Accesses to SCTLR2_EL1 at EL1 are trapped to EL2, unless the access generates a higher priority exception. The value in SCTLR2_EL1 is treated as 0.

0b1

This control does not cause any instructions to be trapped.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

TCR2En, bit [14]

When FEAT_TCR2 is implemented:

TCR2_EL1 Enable. In AArch64 state, accesses to TCR2_EL1 are trapped to EL2 and reported using EC syndrome value 0x18.

TCR2EnMeaning
0b0

Accesses to TCR2_EL1 at EL1 are trapped to EL2, unless the access generates a higher priority exception. The value in TCR2_EL1 is treated as 0.

0b1

This control does not cause any instructions to be trapped.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

Bits [13:12]

Reserved, RES0.

MSCEn, bit [11]

When FEAT_MOPS is implemented:

Memory Set and Memory Copy instructions Enable. Enables execution of the CPY*, SETG*, SETP*, SETM*, and SETE* instructions at EL1 or EL0.

MSCEnMeaning
0b0

Execution of the Memory Copy and Memory Set instructions is UNDEFINED at EL1 or EL0.

0b1

This control does not cause any instructions to be UNDEFINED.

This bit behaves as if it is 1 if any of the following are true:

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

MCE2, bit [10]

When FEAT_MOPS is implemented:

Controls Memory Copy and Memory Set exceptions generated as part of attempting to execute the Memory Copy and Memory Set instructions from EL1.

MCE2Meaning
0b0

Memory Copy and Memory Set exceptions generated from EL1 are taken to EL1.

0b1

Memory Copy and Memory Set exceptions generated from EL1 are taken to EL2.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this control does not affect any exceptions due to the higher priority SCTLR_EL2.MSCEn control.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

CMOW, bit [9]

When FEAT_CMOW is implemented:

Controls cache maintenance instruction permission for the following instructions executed at EL1 or EL0.

CMOWMeaning
0b0

These instructions executed at EL1 or EL0 with stage 2 read permission, but without stage 2 write permission do not generate a stage 2 permission fault.

0b1

These instructions executed at EL1 or EL0, if enabled as a result of SCTLR_EL1.UCI==1, with stage 2 read permission, but without stage 2 write permission generate a stage 2 permission fault.

For this control, stage 2 has write permission if S2AP[1] is 1 or DBM is 1 in the stage 2 descriptor. The instructions do not cause an update to the dirty state.

This bit is permitted to be cached in a TLB.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

VFNMI, bit [8]

When FEAT_NMI is implemented:

Virtual FIQ Interrupt with Superpriority. Enables signaling of virtual FIQ interrupts with Superpriority.

VFNMIMeaning
0b0

When HCR_EL2.VF is 1, a signaled pending virtual FIQ interrupt does not have Superpriority.

0b1

When HCR_EL2.VF is 1, a signaled pending virtual FIQ interrupt has Superpriority.

When HCR_EL2.VF is 0, this bit has no effect.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

VINMI, bit [7]

When FEAT_NMI is implemented:

Virtual IRQ Interrupt with Superpriority. Enables signaling of virtual IRQ interrupts with Superpriority.

VINMIMeaning
0b0

When HCR_EL2.VI is 1, a signaled pending virtual IRQ interrupt does not have Superpriority.

0b1

When HCR_EL2.VI is 1, a signaled pending virtual IRQ interrupt has Superpriority.

When HCR_EL2.VI is 0, this bit has no effect.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

TALLINT, bit [6]

When FEAT_NMI is implemented:

Traps the following writes at EL1 using AArch64 to EL2, when EL2 is implemented and enabled:

TALLINTMeaning
0b0

This control does not cause any instructions to be trapped.

0b1

The specified MSR accesses at EL1 using AArch64 are trapped to EL2.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

SMPME, bit [5]

When FEAT_SME is implemented:

Streaming Mode Priority Mapping Enable.

Controls mapping of the value of SMPRI_EL1.Priority for streaming execution priority at EL0 or EL1.

SMPMEMeaning
0b0

The effective priority value is taken from SMPRI_EL1.Priority.

0b1

The effective priority value is:

  • When the current Exception level is EL2 or EL3, the value of SMPRI_EL1.Priority.
  • When the current Exception level is EL0 or EL1, the value of the SMPRIMAP_EL2 field corresponding to the value of SMPRI_EL1.Priority.

When SMIDR_EL1.SMPS is '0', this field is RES0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

FGTnXS, bit [4]

When FEAT_XS is implemented:

Determines if the fine-grained traps in HFGITR_EL2 that apply to each of the TLBI maintenance instructions that are accessible at EL1 also apply to the corresponding TLBI maintenance instructions with the nXS qualifier.

FGTnXSMeaning
0b0

The fine-grained trap in the HFGITR_EL2 that applies to a TLBI maintenance instruction at EL1 also applies to the corresponding TLBI instruction with the nXS qualifier at EL1.

0b1

The fine-grained trap in the HFGITR_EL2 that applies to a TLBI maintenance instruction at EL1 does not apply to the corresponding TLBI instruction with the nXS qualifier at EL1.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

FnXS, bit [3]

When FEAT_XS is implemented:

Determines the behavior of TLBI instructions affected by the XS attribute.

This control bit also determines whether an AArch64 DSB instruction behaves as a DSB instruction with an nXS qualifier when executed at EL0 and EL1.

FnXSMeaning
0b0

This control does not have any effect on the behavior of the TLBI maintenance instructions.

0b1

A TLBI maintenance instruction without the nXS qualifier executed at EL1 behaves in the same way as the corresponding TLBI maintenance instruction with the nXS qualifier.

An AArch64 DSB instruction executed at EL1 or EL0 behaves in the same way as the corresponding DSB instruction with the nXS qualifier executed at EL1 or EL0.

This bit is permitted to be cached in a TLB.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnASR, bit [2]

When FEAT_LS64_V is implemented:

When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an ST64BV instruction at EL0 or EL1 to EL2.

EnASRMeaning
0b0

Execution of an ST64BV instruction at EL0 is trapped to EL2 if the execution is not trapped by SCTLR_EL1.EnASR.

Execution of an ST64BV instruction at EL1 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

A trap of an ST64BV instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000000.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnALS, bit [1]

When FEAT_LS64 is implemented:

When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an LD64B or ST64B instruction at EL0 or EL1 to EL2.

EnALSMeaning
0b0

Execution of an LD64B or ST64B instruction at EL0 is trapped to EL2 if the execution is not trapped by SCTLR_EL1.EnALS.

Execution of an LD64B or ST64B instruction at EL1 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

A trap of an LD64B or ST64B instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000002.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

EnAS0, bit [0]

When FEAT_LS64_ACCDATA is implemented:

When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an ST64BV0 instruction at EL0 or EL1 to EL2.

EnAS0Meaning
0b0

Execution of an ST64BV0 instruction at EL0 is trapped to EL2 if the execution is not trapped by SCTLR_EL1.EnAS0.

Execution of an ST64BV0 instruction at EL1 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

A trap of an ST64BV0 instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000001.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

Accessing HCRX_EL2

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, HCRX_EL2

op0op1CRnCRmop2
0b110b1000b00010b00100b010

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then X[t, 64] = NVMem[0xA0]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.HXEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.HXEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else X[t, 64] = HCRX_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = HCRX_EL2;

MSR HCRX_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00010b00100b010

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then NVMem[0xA0] = X[t, 64]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.HXEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.HXEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else HCRX_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then HCRX_EL2 = X[t, 64];