Trace ID Register 4
Returns the tracing capabilities of the trace unit.
AArch64 System register TRCIDR4 bits [31:0] are architecturally mapped to External register TRCIDR4[31:0].
This register is present only when FEAT_ETE is implemented and System register access to the trace unit registers is implemented. Otherwise, direct accesses to TRCIDR4 are UNDEFINED.
TRCIDR4 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 | |||||||||||||||||||||||||||||||
| NUMVMIDC | NUMCIDC | NUMSSCC | NUMRSPAIR | NUMPC | RES0 | SUPPDAC | NUMDVC | NUMACPAIRS | |||||||||||||||||||||||
Reserved, RES0.
Indicates the number of Virtual Context Identifier Comparators that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMVMIDC | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of Virtual Context Identifier Comparators in this implementation. |
All other values are reserved.
If the PE does not implement EL2 then this field is 0b0000.
The parameter NUM_TRACE_VIRTUAL_CONTEXT_IDENTIFIER_COMPARATORS is derived from this value.
Access to this field is RO.
Indicates the number of Context Identifier Comparators that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMCIDC | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of Context Identifier Comparators in this implementation. |
All other values are reserved.
The parameter NUM_TRACE_CONTEXT_IDENTIFIER_COMPARATORS is derived from this value.
Access to this field is RO.
Indicates the number of Single-shot Comparator Controls that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMSSCC | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of Single-shot Comparator Controls in this implementation. |
All other values are reserved.
The parameter NUM_TRACE_SINGLE_SHOT_COMPARATOR_CONTROLS is derived from this value.
Access to this field is RO.
Indicates the number of resource selector pairs that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMRSPAIR | Meaning |
|---|---|
| 0b0000 |
This implementation has zero resource selector pairs. |
| 0b0001..0b1111 |
The number of resource selector pairs in this implementation, minus one. |
All other values are reserved.
The parameter NUM_TRACE_RESOURCE_SELECTOR_PAIRS is derived from this value.
Access to this field is RO.
Indicates the number of PE Comparator Inputs that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMPC | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of PE Comparator Inputs in this implementation. |
All other values are reserved.
Access to this field is RO.
Reserved, RES0.
Indicates whether data address comparisons are implemented. Data address comparisons are not implemented in ETE and are reserved for other trace architectures. Allocated in other trace architectures.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| SUPPDAC | Meaning |
|---|---|
| 0b0 |
Data address comparisons not implemented. |
| 0b1 |
Data address comparisons implemented. |
When FEAT_ETE is implemented, the only permitted value is 0.
Access to this field is RO.
Reserved, RES0.
Indicates the number of data value comparators. Data value comparators are not implemented in ETE and are reserved for other trace architectures. Allocated in other trace architectures.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMDVC | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of data value comparators in this implementation. |
All other values are reserved.
When FEAT_ETE is implemented, the only permitted value is 0b0000.
Access to this field is RO.
Indicates the number of Address Comparator pairs that are available for tracing.
The value of this field is an IMPLEMENTATION DEFINED choice of:
| NUMACPAIRS | Meaning |
|---|---|
| 0b0000..0b1000 |
The number of Address Comparator pairs in this implementation. |
All other values are reserved.
The parameter NUM_TRACE_ADDRESS_COMPARATOR_PAIRS is derived from this value.
Access to this field is RO.
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, TRCIDR4
(op0 = 0b10, op1 = 0b001, CRn = 0b0000, CRm = 0b1100, op2 = 0b111)
if !(IsFeatureImplemented(FEAT_ETE) && IsFeatureImplemented(FEAT_TRC_SR)) then Undefined(); elsif HaveEL(EL3) && !(EffectivelyAtEL0InHost() || EffectivelyAtEL0NotInHost() || PSTATE.EL == EL3) && EL3SDDUndefPriority() && CPTR_EL3().TTA == '1' then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if CPACR_EL1().TTA == '1' then AArch64_SystemAccessTrap(EL1, 0x18); elsif EL2Enabled() && CPTR_EL2().TTA == '1' then AArch64_SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') && HDFGRTR_EL2().TRCID == '1' then AArch64_SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && CPTR_EL3().TTA == '1' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; elsif IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1().OSLK == '0' && HaltingAllowed() && EDSCR2().TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X{64}(t) = TRCIDR4(); end; elsif PSTATE.EL == EL2 then if CPTR_EL2().TTA == '1' then AArch64_SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && CPTR_EL3().TTA == '1' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; elsif IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1().OSLK == '0' && HaltingAllowed() && EDSCR2().TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X{64}(t) = TRCIDR4(); end; elsif PSTATE.EL == EL3 then if CPTR_EL3().TTA == '1' then AArch64_SystemAccessTrap(EL3, 0x18); elsif IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1().OSLK == '0' && HaltingAllowed() && EDSCR2().TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X{64}(t) = TRCIDR4(); end; 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.