The CNTKCTL characteristics are:
Controls the generation of an event stream from the virtual counter, and access from EL0 modes to the physical counter, virtual counter, EL1 physical timers, and the virtual timer.
AArch32 System register CNTKCTL bits [31:0] are architecturally mapped to AArch64 System register CNTKCTL_EL1[31:0].
This register is present only when AArch32 is supported at any Exception level. Otherwise, direct accesses to CNTKCTL are UNDEFINED.
CNTKCTL is a 32-bit register.
The CNTKCTL bit assignments are:
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 | EVNTIS | RES0 | PL0PTEN | PL0VTEN | EVNTI | EVNTDIR | EVNTEN | PL0VCTEN | PL0PCTEN |
Reserved, RES0.
Controls the scale of the generation of the event stream.
EVNTIS | Meaning |
---|---|
0b0 |
The CNTKCTL.EVNTI field applies to CNTVCT[15:0]. |
0b1 |
The CNTKCTL.EVNTI field applies to CNTVCT[23:8]. |
This control applies regardless of the value of the CNTHCTL_EL2.ECV bit.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Reserved, RES0.
Reserved, RES0.
Traps PL0 accesses to the physical timer registers to Undefined mode.
PL0PTEN | Meaning |
---|---|
0b0 |
PL0 accesses to the CNTP_CTL, CNTP_CVAL, and CNTP_TVAL registers are trapped to Undefined mode. |
0b1 |
This control does not cause any instructions to be trapped. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Traps PL0 accesses to the virtual timer registers to Undefined mode.
PL0VTEN | Meaning |
---|---|
0b0 |
PL0 accesses to the CNTV_CTL, CNTV_CVAL, and CNTV_TVAL registers are trapped to Undefined mode. |
0b1 |
This control does not cause any instructions to be trapped. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Selects which bit of the counter register CNTVCT is the trigger for the event stream generated from that counter, when that stream is enabled.
If FEAT_ECV is implemented, and CNTKCTL.EVNTIS is 1, this field selects a trigger bit in the range 8 to 23 of the counter register CNTVCT.
Otherwise, this field selects a trigger bt in the range 0 to 15 of the counter register.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Controls which transition of the counter register CNTVCT trigger bit, 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. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Enables the generation of an event stream from the counter register CNTVCT:
EVNTEN | Meaning |
---|---|
0b0 |
Disables the event stream. |
0b1 |
Enables the event stream. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Traps PL0 accesses to the frequency register and virtual counter register to Undefined mode.
PL0VCTEN | Meaning |
---|---|
0b0 | PL0 accesses to the CNTVCT are trapped to Undefined mode. PL0 accesses to the CNTFRQ register are trapped to Undefined mode, if CNTKCTL.PL0PCTEN is also 0. |
0b1 |
This control does not cause any instructions to be trapped. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Traps PL0 accesses to the frequency register and physical counter register to Undefined mode.
PL0PCTEN | Meaning |
---|---|
0b0 | PL0 accesses to the CNTPCT are trapped to Undefined mode. PL0 accesses to the CNTFRQ register are trapped to Undefined mode, if CNTKCTL.PL0VCTEN is also 0. |
0b1 |
This control does not cause any instructions to be trapped. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Accesses to this register use the following encodings:
coproc | opc1 | CRn | CRm | opc2 |
---|---|---|---|---|
0b1111 | 0b000 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then return CNTKCTL; elsif PSTATE.EL == EL2 then return CNTKCTL; elsif PSTATE.EL == EL3 then return CNTKCTL;
coproc | opc1 | CRn | CRm | opc2 |
---|---|---|---|---|
0b1111 | 0b000 | 0b1110 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then CNTKCTL = R[t]; elsif PSTATE.EL == EL2 then CNTKCTL = R[t]; elsif PSTATE.EL == EL3 then CNTKCTL = R[t];
30/03/2021 20:51; e3551d56dc294a4d55296a6c10544191ada08a8e
Copyright © 2010-2021 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.