MDCR_EL3, Monitor Debug Configuration Register (EL3)
The MDCR_EL3 characteristics are:
Purpose
Provides EL3 configuration options for self-hosted debug and the Performance Monitors Extension.
Configuration
AArch64 System register MDCR_EL3 bits [31:0] can be mapped to AArch32 System register SDCR[31:0] , but this is not architecturally mandated.
This register is present only when EL3 is implemented. Otherwise, direct accesses to MDCR_EL3 are UNDEFINED.
Attributes
MDCR_EL3 is a 64-bit register.
Field descriptions
The MDCR_EL3 bit assignments are:
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 |
RES0 | |||||||||||||||||||||||||||||||
RES0 | MTPME | TDCC | RES0 | NSTB | SCCD | ETAD | EPMAD | EDAD | TTRF | STE | SPME | SDD | SPD32 | NSPB | RES0 | TDOSA | TDA | RES0 | TPM | RES0 | |||||||||||
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 |
Bits [63:29]
Reserved, RES0.
MTPME, bit [28]
When FEAT_MTPMU is implemented:
When FEAT_MTPMU is implemented:
Multi-threaded PMU Enable. Enables use of the PMEVTYPER<n>_EL0.MT bits.
MTPME | Meaning |
---|---|
0b0 |
FEAT_MTPMU is disabled. The Effective value of PMEVTYPER<n>_EL0.MT is zero. |
0b1 |
PMEVTYPER<n>_EL0.MT bits not affected by this bit. |
If FEAT_MTPMU is disabled for any other PE in the system that has the same level 1 Affinity as the PE, it is IMPLEMENTATION DEFINED whether the PE behaves as if this bit is 0.
On a Cold reset, this field resets to 1.
Otherwise:
Otherwise:
Reserved, RES0.
TDCC, bit [27]
When FEAT_FGT is implemented:
When FEAT_FGT is implemented:
Trap DCC. Traps use of the Debug Comms Channel at EL2, EL1, and EL0 to EL3.
TDCC | Meaning |
---|---|
0b0 |
This control does not cause any register accesses to be trapped. |
0b1 |
Accesses to the DCC registers at EL2, EL1, and EL0 generate a Trap exception to EL3, unless the access also generates a higher priority exception. Traps on the DCC data transfer registers are ignored when the PE is in Debug state. |
The DCC registers trapped by this control are:
AArch64: OSDTRRX_EL1, OSDTRTX_EL1, MDCCSR_EL0, MDCCINT_EL1, and, when the PE is in Non-debug state, DBGDTR_EL0, DBGDTRRX_EL0, and DBGDTRTX_EL0.
AArch32: DBGDTRRXext, DBGDTRTXext, DBGDSCRint, DBGDCCINT, and, when the PE is in Non-debug state, DBGDTRRXint and DBGDTRTXint.
The traps are reported with EC syndrome value:
-
0x05 for trapped AArch32 MRC and MCR accesses with coproc == 0b1110.
-
0x06 for trapped AArch32 LDC to DBGDTRTXint and STC from DBGDTRRXint.
-
0x18 for trapped AArch64 MRS and MSR accesses.
When the PE is in Debug state, MDCR_EL3.TDCC does not trap any accesses to:
AArch64: DBGDTR_EL0, DBGDTRRX_EL0, and DBGDTRTX_EL0.
AArch32: DBGDTRRXint and DBGDTRTXint.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
Bit [26]
Reserved, RES0.
NSTB, bits [25:24]
When FEAT_TRBE is implemented:
When FEAT_TRBE is implemented:
Non-secure Trace Buffer. Controls the owning translation regime and accesses to Trace Buffer control registers from EL2 and EL1.
NSTB | Meaning |
---|---|
0b00 |
Trace Buffer owning security state is Secure state. If TraceBufferEnabled() == TRUE, tracing is prohibited in Non-secure state. Accesses to Trace Buffer control registers at EL2 and EL1 generate Trap exceptions to EL3. |
0b01 |
Trace Buffer owning security state is Secure state. If TraceBufferEnabled() == TRUE, tracing is prohibited in Non-secure state. Accesses to Trace Buffer control registers at EL2 and EL1 in Non-secure state generate Trap exceptions to EL3. |
0b10 |
Trace Buffer owning security state is Non-secure state. If TraceBufferEnabled() == TRUE, tracing is prohibited in Secure state. Accesses to Trace Buffer control registers at EL2 and EL1 generate Trap exceptions to EL3. |
0b11 |
Trace Buffer owning security state is Non-secure state. If TraceBufferEnabled() == TRUE, tracing is prohibited in Secure state. Accesses to Trace Buffer control registers at EL2 and EL1 in Secure state generate Trap exceptions to EL3. |
The Trace Buffer control registers trapped by this control are: TRBBASER_EL1, TRBLIMITR_EL1, TRBMAR_EL1, TRBPTR_EL1, TRBSR_EL1, and TRBTRG_EL1.
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b1, then the Effective value of this field is 0b11.
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this field is 0b01.
This field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
SCCD, bit [23]
When FEAT_PMUv3p5 is implemented:
When FEAT_PMUv3p5 is implemented:
Secure Cycle Counter Disable. Prohibits PMCCNTR_EL0 from counting in Secure state.
SCCD | Meaning |
---|---|
0b0 |
Cycle counting by PMCCNTR_EL0 is not affected by this bit. |
0b1 |
Cycle counting by PMCCNTR_EL0 is prohibited in Secure state. |
This bit does not affect the CPU_CYCLES event or any other event that counts cycles.
On a Warm reset, this field resets to 0.
Otherwise:
Otherwise:
Reserved, RES0.
ETAD, bit [22]
When external debugger access to the PE Trace Unit registers is implemented and FEAT_TRBE is implemented:
When external debugger access to the PE Trace Unit registers is implemented and FEAT_TRBE is implemented:
External Trace Access Disable. Controls Non-secure access to PE Trace Unit registers by an external debugger.
ETAD | Meaning |
---|---|
0b0 |
Non-secure accesses from an external debugger to PE Trace Unit are allowed. |
0b1 |
Non-secure accesses from an external debugger to some PE Trace Unit registers are prohibited. See individual registers for the effect of this bit. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this bit is 0b1.
This field resets to 0.
Otherwise:
Otherwise:
Reserved, RES0.
EPMAD, bit [21]
When FEAT_Debugv8p4 is implemented and FEAT_PMUv3 is implemented:
When FEAT_Debugv8p4 is implemented and FEAT_PMUv3 is implemented:
External Performance Monitors Non-secure Access Disable. Controls Non-secure access to Performance Monitor registers by an external debugger.
EPMAD | Meaning |
---|---|
0b0 |
Non-secure access to Performance Monitor registers from external debugger is permitted. |
0b1 |
Non-secure access to Performance Monitor registers from external debugger is not permitted. |
If the Performance Monitors Extension does not support external debug interface accesses this bit is RES0.
Otherwise, if EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this bit is 0b1.
On a Warm reset, this field resets to 0.
When FEAT_PMUv3 is implemented:
When FEAT_PMUv3 is implemented:
External Performance Monitors Access Disable. Controls access to Performance Monitor registers by an external debugger.
EPMAD | Meaning |
---|---|
0b0 |
Access to Performance Monitor registers from external debugger is permitted. |
0b1 |
Access to Performance Monitor registers from external debugger is not permitted, unless overridden by the IMPLEMENTATION DEFINED authentication interface. |
If the Performance Monitors Extension does not support external debug interface accesses this bit is RES0.
Otherwise, if EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this bit is 0b1.
On a Warm reset, this field resets to 0.
Otherwise:
Otherwise:
Reserved, RES0.
EDAD, bit [20]
When FEAT_Debugv8p4 is implemented:
When FEAT_Debugv8p4 is implemented:
External Debug Non-secure Access Disable. Controls Non-secure access to breakpoint, watchpoint, and OSLAR_EL1 registers by an external debugger.
EDAD | Meaning |
---|---|
0b0 |
Non-secure access to debug registers from external debugger is permitted. |
0b1 |
Non-secure access to breakpoint and watchpoint registers, and OSLAR_EL1 from external debugger is not permitted. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this field is 0b1.
On a Warm reset, this field resets to 0.
When FEAT_Debugv8p2 is implemented:
When FEAT_Debugv8p2 is implemented:
External Debug Access Disable. Controls access to breakpoint, watchpoint, and OSLAR_EL1 registers by an external debugger.
EDAD | Meaning |
---|---|
0b0 |
Access to debug registers, and to OSLAR_EL1 from external debugger is permitted. |
0b1 |
Access to breakpoint and watchpoint registers, and to OSLAR_EL1 from external debugger is not permitted, unless overridden by the IMPLEMENTATION DEFINED authentication interface. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this field is 0b1.
On a Warm reset, this field resets to 0.
Otherwise:
Otherwise:
External Debug Access disable. Controls access to breakpoint, watchpoint, and optionally OSLAR_EL1 registers by an external debugger.
EDAD | Meaning |
---|---|
0b0 |
Access to debug registers from external debugger is permitted. |
0b1 |
Access to breakpoint and watchpoint registers from an external debugger is not permitted, unless overridden by the IMPLEMENTATION DEFINED authentication interface. It is IMPLEMENTATION DEFINED whether access to the OSLAR_EL1 register from an external debugger is permitted or not permitted. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this field is 0b1.
On a Warm reset, this field resets to 0.
TTRF, bit [19]
When FEAT_TRF is implemented:
When FEAT_TRF is implemented:
Trap Trace Filter controls. Traps use of the Trace Filter control registers at EL2 and EL1 to EL3.
The Trace Filter registers trapped by this control are:
TTRF | Meaning |
---|---|
0b0 |
Accesses to Trace Filter registers at EL2 and EL1 are not affected by this bit. |
0b1 |
Accesses to Trace Filter registers at EL2 and EL1 generate a Trap exception to EL3, unless the access generates a higher priority exception. |
Otherwise:
Otherwise:
Reserved, RES0.
STE, bit [18]
When FEAT_TRF is implemented:
When FEAT_TRF is implemented:
Secure Trace enable. Enables tracing in Secure state.
STE | Meaning |
---|---|
0b0 |
Trace prohibited in Secure state unless overridden by the IMPLEMENTATION DEFINED authentication interface. |
0b1 |
Trace in Secure state is not affected by this bit. |
This bit also controls the level of authentication required by an external debugger to enable external tracing. See 'Register controls to enable self-hosted trace'.
If EL3 is not implemented the Effective value of SCR_EL3.NS is 0b0, the Effective value of this bit is 0b1.
On a Warm reset, this field resets to 0.
Otherwise:
Otherwise:
Reserved, RES0.
SPME, bit [17]
When FEAT_PMUv3 is implemented and FEAT_Debugv8p2 is implemented:
When FEAT_PMUv3 is implemented and FEAT_Debugv8p2 is implemented:
Secure Performance Monitors Enable. Controls event counting in Secure state.
SPME | Meaning |
---|---|
0b0 |
Event counting prohibited in Secure state. |
0b1 |
Event counting in Secure state not affected by this bit. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this bit is 0b1.
On a Warm reset, this field resets to 0.
When FEAT_PMUv3 is implemented:
When FEAT_PMUv3 is implemented:
Secure Performance Monitors Enable. Controls event counting in Secure state.
SPME | Meaning |
---|---|
0b0 |
Event counting prohibited in Secure state, unless ExternalSecureNoninvasiveDebugEnabled() is TRUE. |
0b1 |
Event counting in Secure state not affected by this bit. |
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this bit is 0b1.
On a Warm reset, this field resets to 0.
Otherwise:
Otherwise:
Reserved, RES0.
SDD, bit [16]
AArch64 Secure Self-hosted invasive debug disable. Disables Software debug exceptions in Secure state, other than Breakpoint Instruction exceptions.
SDD | Meaning |
---|---|
0b0 |
Debug exceptions in Secure state are not affected by this bit. |
0b1 |
Debug exceptions, other than Breakpoint Instruction exceptions, are disabled from all Exception levels in Secure state. |
The SDD bit is ignored unless both of the following are true:
- The PE is in Secure state.
- The Effective value of SCR_EL3.RW is 0b1.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
SPD32, bits [15:14]
When EL1 is capable of using AArch32:
When EL1 is capable of using AArch32:
AArch32 Secure self-hosted privileged debug. Enables or disables debug exceptions from Secure EL1 using AArch32, other than Breakpoint Instruction exceptions.
SPD32 | Meaning |
---|---|
0b00 |
Legacy mode. Debug exceptions from Secure EL1 are enabled by the IMPLEMENTATION DEFINED authentication interface. |
0b10 |
Secure privileged debug disabled. Debug exceptions from Secure EL1 are disabled. |
0b11 |
Secure privileged debug enabled. Debug exceptions from Secure EL1 are enabled. |
Other values are reserved, and have the CONSTRAINED UNPREDICTABLE behavior that they must have the same behavior as 0b00. Software must not rely on this property as the behavior of reserved values might change in a future revision of the architecture.
This field has no effect on Breakpoint Instruction exceptions. These are always enabled.
This field is ignored if the PE is either:
- In Non-secure state.
- In Secure state and Secure EL1 is using AArch64.
If Secure EL1 is using AArch32 then:
- If debug exceptions from Secure EL1 are enabled, then debug exceptions from Secure EL0 are also enabled.
- Otherwise, debug exceptions from Secure EL0 are enabled only if the value of SDER32_EL3.SUIDEN is 0b1.
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, then the Effective value of this field is 0b11.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
NSPB, bits [13:12]
When FEAT_SPE is implemented:
When FEAT_SPE is implemented:
Non-secure Profiling Buffer. This field controls the owning translation regime and accesses to Statistical Profiling and Profiling Buffer control registers.
NSPB | Meaning |
---|---|
0b00 |
Profiling Buffer uses Secure Virtual Addresses. Statistical Profiling enabled in Secure state and disabled in Non-secure state. Accesses to Statistical Profiling and Profiling Buffer control registers at EL2 and EL1 in both security states generate Trap exceptions to EL3. |
0b01 |
Profiling Buffer uses Secure Virtual Addresses. Statistical Profiling enabled in Secure state and disabled in Non-secure state. Accesses to Statistical Profiling and Profiling Buffer control registers at EL2 and EL1 in Non-secure state generate Trap exceptions to EL3. |
0b10 |
Profiling Buffer uses Non-secure Virtual Addresses. Statistical Profiling enabled in Non-secure state and disabled in Secure state. Accesses to Statistical Profiling and Profiling Buffer control registers at EL2 and EL1 in both security states generate Trap exceptions to EL3. |
0b11 |
Profiling Buffer uses Non-secure Virtual Addresses. Statistical Profiling enabled in Non-secure state and disabled in Secure state. Accesses to Statistical Profiling and Profiling Buffer control registers at EL2 and EL1 in Secure state generate Trap exceptions to EL3. |
The Statistical Profiling and Profiling Buffer control registers trapped by this control are: PMBLIMITR_EL1, PMBPTR_EL1, PMBSR_EL1, PMSCR_EL1, PMSCR_EL2, PMSEVFR_EL1, PMSFCR_EL1, PMSICR_EL1, PMSIDR_EL1, PMSIRR_EL1, and PMSLATFR_EL1.
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b1, the Effective value of this field is 0b11.
If EL3 is not implemented and the Effective value of SCR_EL3.NS is 0b0, the Effective value of this field is 0b01.
On a Warm reset, this field resets to an UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
Bit [11]
Reserved, RES0.
TDOSA, bit [10]
When FEAT_DoubleLock is implemented:
When FEAT_DoubleLock is implemented:
Trap debug OS-related register access. Traps EL2 and EL1 System register accesses to the powerdown debug registers to EL3.
Accesses to the registers are trapped as follows:
- Accesses from AArch64 state, OSLAR_EL1, OSLSR_EL1, OSDLR_EL1, DBGPRCR_EL1 and any IMPLEMENTATION DEFINED register with similar functionality that the implementation specifies as trapped by this bit, are trapped to EL3 and reported using EC syndrome value 0x18.
- Accesses using MCR or MRC to DBGOSLAR, DBGOSLSR, DBGOSDLR, and DBGPRCR, are trapped to EL3 and reported using EC syndrome value 0x05.
- Accesses to any IMPLEMENTATION DEFINED register with similar functionality that the implementation specifies as trapped by this bit.
TDOSA | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL2 and EL1 System register accesses to the powerdown debug registers are trapped to EL3, unless it is trapped by HDCR.TDOSA or MDCR_EL2.TDOSA. |
The powerdown debug registers are not accessible at EL0.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Trap debug OS-related register access. Traps EL2 and EL1 System register accesses to the powerdown debug registers to EL3.
The following registers are affected by this trap:
- AArch64: OSLAR_EL1, OSLSR_EL1, and DBGPRCR_EL1.
- AArch32: DBGOSLAR, DBGOSLSR, and DBGPRCR.
- AArch64 and AArch32: Any IMPLEMENTATION DEFINED register with similar functionality that the implementation specifies as trapped by this bit.
- It is IMPLEMENTATION DEFINED whether accesses to OSDLR_EL1 and DBGOSDLR are trapped.
TDOSA | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL2 and EL1 System register accesses to the powerdown debug registers are trapped to EL3, unless it is trapped by HDCR.TDOSA or MDCR_EL2.TDOSA. |
The powerdown debug registers are not accessible at EL0.
On a Warm reset, this field resets to an architecturally UNKNOWN value.
TDA, bit [9]
Trap Debug Access. Traps EL2, EL1, and EL0 System register accesses to those debug System registers that cannot be trapped using the MDCR_EL3.TDOSA field.
Accesses to the debug registers are trapped as follows:
- In AArch64 state, the following registers are trapped to EL3 and reported using EC syndrome value 0x18:
- In AArch32 state, SDER is trapped to EL3 and reported using EC syndrome value 0x03.
- In AArch32 state, accesses using MCR or MRC to the following registers are reported using EC syndrome value 0x05, accesses using MCRR or MRRC are reported using EC syndrome value 0x0C:
- In AArch32 state, STC accesses to DBGDTRRXint and LDC accesses to DBGDTRTXint are reported using EC syndrome value 0x06.
- When not in Debug state, the following registers are also trapped to EL3:
- AArch64 accesses to DBGDTR_EL0, DBGDTRRX_EL0, and DBGDTRTX_EL0, reported using EC syndrome value 0x18.
- AArch32 accesses using MCR or MRC to DBGDTRRXint and DBGDTRTXint, reported using EC syndrome value 0x05.
TDA | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL0, EL1, and EL2 accesses to the debug registers, other than the registers that can be trapped by MDCR_EL3.TDOSA, are trapped to EL3, from both Security states and both Execution states, unless it is trapped by DBGDSCRext.UDCCdis, MDSCR_EL1.TDCC, HDCR.TDA or MDCR_EL2.TDA. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Bits [8:7]
Reserved, RES0.
TPM, bit [6]
When FEAT_PMUv3 is implemented:
When FEAT_PMUv3 is implemented:
Trap Performance Monitor register accesses. Accesses to all Performance Monitor registers from EL0, EL1 and EL2 to EL3, from both Security states and both Execution states are trapped as follows:
- In AArch64 state, accesses to the following registers are trapped to EL3 and are reported using EC syndrome value 0x18:
- PMCR_EL0, PMCNTENSET_EL0, PMCNTENCLR_EL0, PMOVSCLR_EL0, PMSWINC_EL0, PMSELR_EL0, PMCEID0_EL0, PMCEID1_EL0, PMCCNTR_EL0, PMXEVTYPER_EL0, PMXEVCNTR_EL0, PMUSERENR_EL0, PMINTENSET_EL1, PMINTENCLR_EL1, PMOVSSET_EL0, PMEVCNTR<n>_EL0, PMEVTYPER<n>_EL0, PMCCFILTR_EL0.
- If FEAT_PMUv3p4 is implemented, PMMIR_EL1
- In AArch32 state, accesses using MCR or MRC to the following registers are reported using EC syndrome value 0x03, accesses using MCRR or MRRC are reported using EC syndrome value 0x04:
- PMCR, PMCNTENSET, PMCNTENCLR, PMOVSR, PMSWINC, PMSELR, PMCEID0, PMCEID1, PMCCNTR, PMXEVTYPER, PMXEVCNTR, PMUSERENR, PMINTENSET, PMINTENCLR, PMOVSSET, PMEVCNTR<n>, PMEVTYPER<n>, PMCCFILTR.
- If FEAT_PMUv3p1 is implemented, PMCEID2, and PMCEID3.
- If FEAT_PMUv3p4 is implemented, PMMIR.
TPM | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL2, EL1, and EL0 System register accesses to all Performance Monitor registers are trapped to EL3, unless it is trapped by HDCR.TPM or MDCR_EL2.TPM. |
On a Warm reset, this field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
Bits [5:0]
Reserved, RES0.
Accessing the MDCR_EL3
Accesses to this register use the following encodings:
MRS <Xt>, MDCR_EL3
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b110 | 0b0001 | 0b0011 | 0b001 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then UNDEFINED; elsif PSTATE.EL == EL2 then UNDEFINED; elsif PSTATE.EL == EL3 then return MDCR_EL3;
MSR MDCR_EL3, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b110 | 0b0001 | 0b0011 | 0b001 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then UNDEFINED; elsif PSTATE.EL == EL2 then UNDEFINED; elsif PSTATE.EL == EL3 then MDCR_EL3 = X[t];