Returns the base architecture of the trace unit.
AArch64 System register TRCIDR3 bits [31:0] are architecturally mapped to External register TRCIDR3[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 TRCIDR3 are UNDEFINED.
TRCIDR3 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 | |||||||||||||||||||||||||||||||
NOOVERFLOW | NUMPROC[2:0] | SYSSTALL | STALLCTL | SYNCPR | TRCERR | RES0 | EXLEVEL_NS_EL2 | EXLEVEL_NS_EL1 | EXLEVEL_NS_EL0 | EXLEVEL_S_EL3 | EXLEVEL_S_EL2 | EXLEVEL_S_EL1 | EXLEVEL_S_EL0 | RES0 | NUMPROC[4:3] | CCITMIN |
Reserved, RES0.
Indicates if overflow prevention is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
NOOVERFLOW | Meaning |
---|---|
0b0 |
Overflow prevention is not implemented. |
0b1 |
Overflow prevention is implemented. |
If TRCIDR3.STALLCTL == 0 then this field is 0.
Access to this field is RO.
Indicates the number of PEs available for tracing.
NUMPROC | Meaning |
---|---|
0b00000 |
The trace unit can trace one PE. |
This field reads as 0b00000.
The NUMPROC field is split as follows:
Access to this field is RO.
Indicates if stalling of the PE is permitted.
The value of this field is an IMPLEMENTATION DEFINED choice of:
SYSSTALL | Meaning |
---|---|
0b0 |
Stalling of the PE is not permitted. |
0b1 |
Stalling of the PE is permitted. |
The value of this field might be dynamic and change based on system conditions.
If TRCIDR3.STALLCTL == 0 then this field is 0.
Access to this field is RO.
Indicates if trace unit implements stalling of the PE.
The value of this field is an IMPLEMENTATION DEFINED choice of:
STALLCTL | Meaning |
---|---|
0b0 |
Stalling of the PE is not implemented. |
0b1 |
Stalling of the PE is implemented. |
Access to this field is RO.
Indicates if an implementation has a fixed synchronization period.
The value of this field is an IMPLEMENTATION DEFINED choice of:
SYNCPR | Meaning |
---|---|
0b0 |
TRCSYNCPR is read/write so software can change the synchronization period. |
0b1 |
TRCSYNCPR is read-only so the synchronization period is fixed. |
This field reads as 0.
Access to this field is RO.
Indicates forced tracing of System Error exceptions is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
TRCERR | Meaning |
---|---|
0b0 |
Forced tracing of System Error exceptions is not implemented. |
0b1 |
Forced tracing of System Error exceptions is implemented. |
This field reads as 1.
Access to this field is RO.
Reserved, RES0.
Indicates if Non-secure EL2 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_NS_EL2 | Meaning |
---|---|
0b0 |
Non-secure EL2 is not implemented. |
0b1 |
Non-secure EL2 is implemented. |
Access to this field is RO.
Indicates if Non-secure EL1 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_NS_EL1 | Meaning |
---|---|
0b0 |
Non-secure EL1 is not implemented. |
0b1 |
Non-secure EL1 is implemented. |
Access to this field is RO.
Indicates if Non-secure EL0 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_NS_EL0 | Meaning |
---|---|
0b0 |
Non-secure EL0 is not implemented. |
0b1 |
Non-secure EL0 is implemented. |
Access to this field is RO.
Indicates if EL3 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_S_EL3 | Meaning |
---|---|
0b0 |
EL3 is not implemented. |
0b1 |
EL3 is implemented. |
Access to this field is RO.
Indicates if Secure EL2 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_S_EL2 | Meaning |
---|---|
0b0 |
Secure EL2 is not implemented. |
0b1 |
Secure EL2 is implemented. |
Access to this field is RO.
Indicates if Secure EL1 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_S_EL1 | Meaning |
---|---|
0b0 |
Secure EL1 is not implemented. |
0b1 |
Secure EL1 is implemented. |
Access to this field is RO.
Indicates if Secure EL0 is implemented.
The value of this field is an IMPLEMENTATION DEFINED choice of:
EXLEVEL_S_EL0 | Meaning |
---|---|
0b0 |
Secure EL0 is not implemented. |
0b1 |
Secure EL0 is implemented. |
Access to this field is RO.
Reserved, RES0.
Indicates the minimum value that can be programmed in TRCCCCTLR.THRESHOLD.
Reads as 0x000.
Access to this field is RO.
Indicates the minimum value that can be programmed in TRCCCCTLR.THRESHOLD.
The value of this field is an IMPLEMENTATION DEFINED choice of:
CCITMIN | Meaning |
---|---|
0x001..0xFFF |
The minimum value that can be programmed in TRCCCCTLR.THRESHOLD. |
The minimum value of this field is 0x001.
Access to this field is RO.
Reserved, RES0.
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, TRCIDR3
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b10 | 0b001 | 0b0000 | 0b1011 | 0b111 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && CPTR_EL3.TTA == '1' then UNDEFINED; elsif 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); elsif IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1.OSLK == '0' && HaltingAllowed() && EDSCR2.TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X[t, 64] = TRCIDR3; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && CPTR_EL3.TTA == '1' then UNDEFINED; elsif 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); elsif !ELUsingAArch32(EL1) && IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1.OSLK == '0' && HaltingAllowed() && EDSCR2.TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X[t, 64] = TRCIDR3; elsif PSTATE.EL == EL3 then if CPTR_EL3.TTA == '1' then AArch64.SystemAccessTrap(EL3, 0x18); elsif !ELUsingAArch32(EL1) && IsFeatureImplemented(FEAT_TRBE_EXT) && OSLSR_EL1.OSLK == '0' && HaltingAllowed() && EDSCR2.TTA == '1' then Halt(DebugHalt_SoftwareAccess); else X[t, 64] = TRCIDR3;