Controls the generation of an event stream from the physical counter, and access from EL1 to the physical counter and the EL1 physical timer.
AArch64 System register CNTHCTL_EL2 bits [31:0] are architecturally mapped to AArch32 System register CNTHCTL[31:0].
If EL2 is not implemented, this register is RES0 from EL3.
This register has no effect if EL2 is not enabled in the current Security state.
CNTHCTL_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 | CNTPMASK | CNTVMASK | EVNTIS | EL1NVVCT | EL1NVPCT | EL1TVCT | EL1TVT | ECV | EL1PTEN | EL1PCTEN | EL0PTEN | EL0VTEN | EVNTI | EVNTDIR | EVNTEN | EL0VCTEN | EL0PCTEN |
Reserved, RES0.
CNTPMASK | Meaning |
---|---|
0b0 |
This control has no effect on CNTP_CTL_EL0.IMASK. |
0b1 |
CNTP_CTL_EL0.IMASK behaves as if set to 1 for all purposes other than a direct read of the field. |
This bit is RES0 in Non-secure and Secure state.
The reset behavior of this field is:
Reserved, RES0.
CNTVMASK | Meaning |
---|---|
0b0 |
This control has no effect on CNTV_CTL_EL0.IMASK. |
0b1 |
CNTV_CTL_EL0.IMASK behaves as if set to 1 for all purposes other than a direct read of the field. |
This bit is RES0 in Non-secure and Secure state.
The reset behavior of this field is:
Reserved, RES0.
Controls the scale of the generation of the event stream.
EVNTIS | Meaning |
---|---|
0b0 |
The CNTHCTL_EL2.EVNTI field applies to CNTPCT_EL0[15:0]. |
0b1 |
The CNTHCTL_EL2.EVNTI field applies to CNTPCT_EL0[23:8]. |
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
When HCR_EL2.TGE is 0 and the Effective value of HCR_EL2.{NV2, NV1, NV} is {1, 0, 1}, traps EL1 accesses to the specified EL1 virtual timer registers using the EL02 descriptors to EL2 as follows:
Accesses to CNTV_CTL_EL02 and CNTV_CVAL_EL02 are trapped to EL2 and reported with EC syndrome value 0x18.
EL1NVVCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL1 accesses to the specified registers are trapped to EL2. |
If HCR_EL2.TGE is 1 or the Effective value of HCR_EL2.{NV2, NV1, NV} is not {1, 0, 1}, this control does not cause any instructions to be trapped.
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
When HCR_EL2.TGE is 0 and the Effective value of HCR_EL2.{NV2, NV1, NV} is {1, 0, 1}, traps EL1 accesses to the specified EL1 physical timer registers using the EL02 descriptors to EL2 as follows:
Accesses to CNTP_CTL_EL02 and CNTP_CVAL_EL02 are trapped to EL2 and reported with EC syndrome value 0x18.
EL1NVPCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL1 accesses to the specified registers are trapped to EL2. |
If HCR_EL2.TGE is 1 or the Effective value of HCR_EL2.{NV2, NV1, NV} is not {1, 0, 1}, this control does not cause any instructions to be trapped.
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
Traps EL0 and EL1 accesses to the EL1 virtual counter registers to EL2 when EL2 is enabled in the current Security state, as follows:
EL1TVCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
If HCR_EL2.TGE is 1, this control does not cause any instructions to be trapped.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps EL0 and EL1 accesses to the EL1 virtual timer registers to EL2, when EL2 is enabled for the current Security state, as follows:
EL1TVT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
If HCR_EL2.TGE is 1, this control does not cause any instructions to be trapped.
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
Enables the Enhanced Counter Virtualization functionality registers.
When SCR_EL3.NS or SCR_EL3.EEL2 are 1, and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, then Enhanced Counter Virtualization functionality is enabled when EL2 is enabled for the current Security state, as follows:
ECV | Meaning |
---|---|
0b0 |
Enhanced Counter Virtualization functionality is disabled. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
When HCR_EL2.TGE is 1 or SCR_EL3.{NS, EEL2} is {0, 0}, then Enhanced Counter Virtualization functionality is disabled.
The reset behavior of this field is:
Reserved, RES0.
When HCR_EL2.TGE is 0, traps EL0 and EL1 accesses to the EL1 physical timer registers to EL2 when EL2 is enabled in the current Security state, as follows:
EL1PTEN | Meaning |
---|---|
0b0 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
When HCR_EL2.TGE is 1, this control does not cause any instructions to be trapped.
The reset behavior of this field is:
When HCR_EL2.TGE is 0, traps EL0 and EL1 accesses to the EL1 physical counter registers to EL2 when EL2 is enabled in the current Security state, as follows:
EL1PCTEN | Meaning |
---|---|
0b0 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
When HCR_EL2.TGE is 1, this control does not cause any instructions to be trapped.
The reset behavior of this field is:
When HCR_EL2.TGE is 1, traps EL0 accesses to the physical timer registers to EL2, as follows:
EL0PTEN | Meaning |
---|---|
0b0 |
EL0 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
When HCR_EL2.TGE is 0, this control does not cause any instructions to be trapped.
The reset behavior of this field is:
When HCR_EL2.TGE is 1, traps EL0 accesses to the virtual timer registers to EL2 as follows:
EL0VTEN | Meaning |
---|---|
0b0 |
EL0 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
When HCR_EL2.TGE is 0, this control does not cause any instructions to be trapped.
The reset behavior of this field is:
Selects which bit of CNTPCT_EL0, as seen from EL2, is the trigger for the event stream generated from that counter when that stream is enabled.
If FEAT_ECV is implemented, and CNTHCTL_EL2.EVNTIS is 1, this field selects a trigger bit in the range 8 to 23 of CNTPCT_EL0.
Otherwise, this field selects a trigger bit in the range 0 to 15 of CNTPCT_EL0.
The reset behavior of this field is:
Controls which transition of the CNTPCT_EL0 trigger bit, as seen from EL2 and defined by EVNTI, generates an event when the event stream is enabled.
EVNTDIR | Meaning |
---|---|
0b0 |
A 0 to 1 transition of the trigger bit triggers an event. |
0b1 |
A 1 to 0 transition of the trigger bit triggers an event. |
The reset behavior of this field is:
Enables the generation of an event stream from CNTPCT_EL0 as seen from EL2.
EVNTEN | Meaning |
---|---|
0b0 |
Disables the event stream. |
0b1 |
Enables the event stream. |
The reset behavior of this field is:
When HCR_EL2.TGE is 1, traps EL0 accesses to the frequency register and virtual counter registers to EL2, as follows:
EL0VCTEN | Meaning |
---|---|
0b0 |
EL0 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
If HCR_EL2.TGE is 0, the field is ignored for all purposes other than direct reads and writes of the register.
The reset behavior of this field is:
Traps EL0 accesses to the frequency register and physical counter registers to EL2, as follows:
EL0PCTEN | Meaning |
---|---|
0b0 |
From AArch64 state: EL0 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
If HCR_EL2.TGE is 0, the control does not cause any instructions to be trapped for all purposes other than direct reads and writes of the register.
The reset behavior of this field is:
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 | CNTPMASK | CNTVMASK | EVNTIS | EL1NVVCT | EL1NVPCT | EL1TVCT | EL1TVT | ECV | RES0 | EVNTI | EVNTDIR | EVNTEN | EL1PCEN | EL1PCTEN |
The following field descriptions apply in all Armv8.0 implementations.
The descriptions also explain the behavior when EL3 is implemented and EL2 is not implemented.
Reserved, RES0.
CNTPMASK | Meaning |
---|---|
0b0 |
This control has no effect on CNTP_CTL_EL0.IMASK. |
0b1 |
CNTP_CTL_EL0.IMASK behaves as if set to 1 for all purposes other than a direct read of the field. |
This bit is RES0 in Non-secure and Secure state.
The reset behavior of this field is:
Reserved, RES0.
CNTVMASK | Meaning |
---|---|
0b0 |
This control has no effect on CNTV_CTL_EL0.IMASK. |
0b1 |
CNTV_CTL_EL0.IMASK behaves as if set to 1 for all purposes other than a direct read of the field. |
This bit is RES0 in Non-secure and Secure state.
The reset behavior of this field is:
Reserved, RES0.
Controls the scale of the generation of the event stream.
EVNTIS | Meaning |
---|---|
0b0 |
The CNTHCTL_EL2.EVNTI field applies to CNTPCT_EL0[15:0]. |
0b1 |
The CNTHCTL_EL2.EVNTI field applies to CNTPCT_EL0[23:8]. |
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{NV2, NV1, NV} is {1, 0, 1}, traps EL1 accesses to the specified EL1 virtual timer registers using the EL02 descriptors to EL2 as follows:
Accesses to CNTV_CTL_EL02 and CNTV_CVAL_EL02 are trapped to EL2 and reported with EC syndrome value 0x18.
EL1NVVCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL1 accesses to the specified registers are trapped to EL2. |
If the Effective value of HCR_EL2.{NV2, NV1, NV} is not {1, 0, 1}, this control does not cause any instructions to be trapped.
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{NV2, NV1, NV} is {1, 0, 1}, traps EL1 accesses to the specified EL1 physical timer registers using the EL02 descriptors to EL2 as follows:
Accesses to CNTP_CTL_EL02 and CNTP_CVAL_EL02 are trapped to EL2 and reported with EC syndrome value 0x18.
EL1NVPCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL1 accesses to the specified registers are trapped to EL2. |
If the Effective value of HCR_EL2.{NV2, NV1, NV} is not {1, 0, 1}, this control does not cause any instructions to be trapped.
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
Traps EL0 and EL1 accesses to the EL1 virtual counter registers to EL2, when EL2 is enabled in the current Security state, as follows:
EL1TVCT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
If the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, then traps EL0 and EL1 accesses to the EL1 virtual timer registers to EL2, when EL2 is enabled for the current Security state, as follows:
EL1TVT | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 0 other than for the purpose of a direct read.
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
The reset behavior of this field is:
Reserved, RES0.
Enables the Enhanced Counter Virtualization functionality registers.
When SCR_EL3.NS or SCR_EL3.EEL2 are 1 and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, then Enhanced Counter Virtualization functionality is enabled when EL2 is enabled for the current Security state, as follows:
ECV | Meaning |
---|---|
0b0 |
Enhanced Counter Virtualization functionality is disabled. |
0b1 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
When SCR_EL3.{NS, EEL2} is {0, 0}, then Enhanced Counter Virtualization functionality is disabled.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
Selects which bit of CNTPCT_EL0, as seen from EL2,is the trigger for the event stream generated from that counter when that stream is enabled.
If FEAT_ECV is implemented, and CNTHCTL_EL2.EVNTIS is 1, this field selects a trigger bit in the range 8 to 23 of CNTPCT_EL0.
Otherwise, this field selects a trigger bit in the range 0 to 15 of CNTPCT_EL0.
The reset behavior of this field is:
Controls which transition of the CNTPCT_EL0 trigger bit, as seen from EL2 and defined by EVNTI, generates an event when the event stream is enabled.
EVNTDIR | Meaning |
---|---|
0b0 |
A 0 to 1 transition of the trigger bit triggers an event. |
0b1 |
A 1 to 0 transition of the trigger bit triggers an event. |
The reset behavior of this field is:
Enables the generation of an event stream from CNTPCT_EL0 as seen from EL2.
EVNTEN | Meaning |
---|---|
0b0 |
Disables the event stream. |
0b1 |
Enables the event stream. |
The reset behavior of this field is:
Traps EL0 and EL1 accesses to the EL1 physical timer registers to EL2 when EL2 is enabled in the current Security state, as follows:
EL1PCEN | Meaning |
---|---|
0b0 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 1 other than for the purpose of a direct read.
The reset behavior of this field is:
Traps EL0 and EL1 accesses to the EL1 physical counter registers to EL2 when EL2 is enabled in the current Security state, as follows:
EL1PCTEN | Meaning |
---|---|
0b0 |
EL0 and EL1 accesses to the specified registers are trapped to EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
If EL3 is implemented and EL2 is not implemented, behavior is as if this bit is 1 other than for the purpose of a direct read.
The reset behavior of this field is:
When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, access from EL2 using the mnemonic CNTHCTL_EL2 or CNTKCTL_EL1 are not guaranteed to be ordered with respect to accesses using the other mnemonic.
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, CNTHCTL_EL2
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b100 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then X[t, 64] = CNTHCTL_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = CNTHCTL_EL2;
MSR CNTHCTL_EL2, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b100 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then CNTHCTL_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then CNTHCTL_EL2 = X[t, 64];
When FEAT_VHE is implementedMRS <Xt>, CNTKCTL_EL1
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then X[t, 64] = CNTKCTL_EL1; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then X[t, 64] = CNTHCTL_EL2; else X[t, 64] = CNTKCTL_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = CNTKCTL_EL1;
When FEAT_VHE is implementedMSR CNTKCTL_EL1, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then CNTKCTL_EL1 = X[t, 64]; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then CNTHCTL_EL2 = X[t, 64]; else CNTKCTL_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then CNTKCTL_EL1 = X[t, 64];