TRCVICTLR, ViewInst Main Control Register
The TRCVICTLR characteristics are:
Purpose
Controls instruction trace filtering.
Configuration
External register TRCVICTLR bits [31:0] are architecturally mapped to AArch64 System register TRCVICTLR[31:0] .
RW fields in this register reset to architecturally UNKNOWN values.
This register is present only when ETE is implemented. Otherwise, direct accesses to TRCVICTLR are RES0.
Attributes
TRCVICTLR is a 32-bit register.
Field descriptions
The TRCVICTLR 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 | EXLEVEL_NS_EL2 | EXLEVEL_NS_EL1 | EXLEVEL_NS_EL0 | EXLEVEL_S_EL3 | EXLEVEL_S_EL2 | EXLEVEL_S_EL1 | EXLEVEL_S_EL0 | RES0 | TRCERR | TRCRESET | SSSTATUS | RES0 | EVENT_TYPE | RES0 | EVENT_SEL |
Bits [31:23]
Reserved, RES0.
EXLEVEL_NS_EL2, bit [22]
When Non-secure EL2 is implemented:
When Non-secure EL2 is implemented:
Filter instruction trace for EL2 in Non-secure state.
EXLEVEL_NS_EL2 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL2 in Non-secure state. |
0b1 |
The trace unit does not generate instruction trace for EL2 in Non-secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_NS_EL1, bit [21]
When Non-secure EL1 is implemented:
When Non-secure EL1 is implemented:
Filter instruction trace for EL1 in Non-secure state.
EXLEVEL_NS_EL1 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL1 in Non-secure state. |
0b1 |
The trace unit does not generate instruction trace for EL1 in Non-secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_NS_EL0, bit [20]
When Non-secure EL0 is implemented:
When Non-secure EL0 is implemented:
Filter instruction trace for EL0 in Non-secure state.
EXLEVEL_NS_EL0 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL0 in Non-secure state. |
0b1 |
The trace unit does not generate instruction trace for EL0 in Non-secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_S_EL3, bit [19]
When HaveEL(EL3):
When HaveEL(EL3):
Filter instruction trace for EL3 in Secure state.
EXLEVEL_S_EL3 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL3 in Secure state. |
0b1 |
The trace unit does not generate instruction trace for EL3 in Secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_S_EL2, bit [18]
When HaveEL(EL2) and ARMv8.4-SecEL2 is implemented:
When HaveEL(EL2) and ARMv8.4-SecEL2 is implemented:
Filter instruction trace for EL2 in Secure state.
EXLEVEL_S_EL2 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL2 in Secure state. |
0b1 |
The trace unit does not generate instruction trace for EL2 in Secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_S_EL1, bit [17]
When Secure EL1 is implemented:
When Secure EL1 is implemented:
Filter instruction trace for EL1 in Secure state.
EXLEVEL_S_EL1 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL1 in Secure state. |
0b1 |
The trace unit does not generate instruction trace for EL1 in Secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
EXLEVEL_S_EL0, bit [16]
When Secure EL0 is implemented:
When Secure EL0 is implemented:
Filter instruction trace for EL0 in Secure state.
EXLEVEL_S_EL0 | Meaning |
---|---|
0b0 |
The trace unit generates instruction trace for EL0 in Secure state. |
0b1 |
The trace unit does not generate instruction trace for EL0 in Secure state. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
Bits [15:12]
Reserved, RES0.
TRCERR, bit [11]
When TRCIDR3.TRCERR == 0b1:
When TRCIDR3.TRCERR == 0b1:
Controls the forced tracing of System Error exceptions.
TRCERR | Meaning |
---|---|
0b0 |
Forced tracing of System Error exceptions is disabled. |
0b1 |
Forced tracing of System Error exceptions is enabled. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
TRCRESET, bit [10]
Controls the forced tracing of PE Resets.
TRCRESET | Meaning |
---|---|
0b0 |
Forced tracing of PE Resets is disabled. |
0b1 |
Forced tracing of PE Resets is enabled. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
SSSTATUS, bit [9]
ViewInst start/stop function status.
SSSTATUS | Meaning |
---|---|
0b0 |
Stopped State. The ViewInst start/stop function is in the stopped state. |
0b1 |
Started State. The ViewInst start/stop function is in the started state. |
Before software enables the trace unit, it must write to this bit to set the initial state of the ViewInst start/stop function. If the ViewInst start/stop function is not used then set this bit to 0b1. Arm recommends that the value of this bit is set before each trace session begins.
If the trace unit becomes disabled while a start point or stop point is still speculative, then the value of TRCVICTLR.SSSTATUS is UNKNOWN and might represent the result of a speculative start point or stop point.
If software which is running on the PE being traced disables the trace unit, either by clearing TRCPRGCTLR.EN or locking the OS Lock, Arm recommends that a DSB and an ISB instruction are executed before disabling the trace unit to prevent any start points or stop points being speculative at the point of disabling the trace unit. This procedure assumes that all start points or stop points occur before the barrier instructions are executed. The procedure does not guarantee that there are no speculative start points or stop points when disabling, although it helps minimize the probability.
This bit is RES1 if TRCIDR4.NUMACPAIRS == 0b0000 and TRCIDR4.NUMPC == 0b0000 .
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Bit [8]
Reserved, RES0.
EVENT_TYPE, bit [7]
When TRCIDR4.NUMRSPAIR != 0b0000:
When TRCIDR4.NUMRSPAIR != 0b0000:
Chooses the type of Resource Selector.
EVENT_TYPE | Meaning |
---|---|
0b0 |
A single Resource Selector. TRCVICTLR.EVENT.SEL[4:0] selects the single Resource Selector, from 0-31, used to activate the resource event. |
0b1 |
A Boolean-combined pair of Resource Selectors. TRCVICTLR.EVENT.SEL[3:0] selects the Resource Selector pair, from 0-15, that has a Boolean function that is applied to it whose output is used to activate the resource event. TRCVICTLR.EVENT.SEL[4] is RES0. |
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
Bits [6:5]
Reserved, RES0.
EVENT_SEL, bits [4:0]
When TRCIDR4.NUMRSPAIR != 0b0000:
When TRCIDR4.NUMRSPAIR != 0b0000:
Defines the selected Resource Selector or pair of Resource Selectors. TRCVICTLR.EVENT.TYPE controls whether TRCVICTLR.EVENT.SEL is the index of a single Resource Selector, or the index of a pair of Resource Selectors.
If an unimplemented Resource Selector is selected using this field, the behavior of the resource event is UNPREDICTABLE, and the resource event might fire or might not fire.
On a Trace unit reset, this field resets to an architecturally UNKNOWN value.
When TRCIDR4.NUMRSPAIR == 0b0000:
When TRCIDR4.NUMRSPAIR == 0b0000:
This field is reserved:
- Bits [4:1] are RES0.
- Bit [0] is RES1.
Otherwise:
Otherwise:
Reserved, RES0.
Accessing the TRCVICTLR
Must be programmed.
Reads from this register might return an UNKNOWN value if the trace unit is not in either of the Idle or Stable states.
TRCVICTLR can be accessed through the external debug interface:
Component | Offset |
---|---|
ETE | 0x080 |
This interface is accessible as follows:
- When !AllowExternalTraceAccess(), or OSLockStatus() or !IsTraceCorePowered() accesses to this register generate an error response.
- Otherwise accesses to this register are RW.