(old) | htmldiff from- | (new) |
The EDSCR characteristics are:
Main control register for the debug implementation.
External register EDSCR bits [30:29] are architecturally mapped to AArch64 System register MDCCSR_EL0[30:29].
EDSCR is in the Core power domain.
EDSCR is a 32-bit register.
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 |
TFO | RXfull | TXfull | ITO | RXO | TXU | PipeAdv | ITE | INTdis | TDA | MA | SC2 | NS | RES0 | SDD | NSE | HDE | RW | EL | A | ERR | STATUS |
Trace Filter Override. Overrides the Trace Filter controls allowing the external debugger to trace any visible Exception level.
TFO | Meaning |
---|---|
0b0 | Trace Filter controls are not affected. |
0b1 | Trace Filter controls in TRFCR_EL1 and TRFCR_EL2 are ignored. |
When OSLSR_EL1.OSLK is== 1, this bit can be indirectly read and written through the MDSCR_EL1 and DBGDSCRext System registers.
This bit is ignored by the PE when anyExternalSecureNoninvasiveDebugEnabled() of== FALSE and the followingEffective isvalue true:ofMDCR_EL3.STE == 1.
The reset behavior of this field is:
Reserved, RES0.
DTRRX full.
The reset behavior of this field is:
Access to this field is RO.
DTRTX full.
The reset behavior of this field is:
Access to this field is RO.
ITR overrun. Set to 0 on entry to Debug state.
Accessing this field has the following behavior:
If the PE is in Non-debug state, this bit is UNKNOWN. ITO is set to 0 on entry to Debug state.
Access to this field is RO.
DTRRX overrun.
The reset behavior of this field is:
Access to this field is RO.
DTRTX underrun.
The reset behavior of this field is:
Access to this field is RO.
Pipeline Advance.advance. IndicatesSet thatto software1 executionevery istime progressing.the PE pipeline retires one or more instructions. Cleared to 0 by a write toEDRCR.CSPA.
The architecture does not define precisely when this bit is set to 1. It requires only that this happen periodically in Non-debug state to indicate that software execution is progressing.
PipeAdv | Meaning |
---|---|
0b0 | No progress has been made by the PE since the last time this field was cleared to zero by writing 1 to EDRCR.CSPA. |
0b1 | Progress has been made by the PE since the last time this field was cleared to zero by writing 1 to EDRCR.CSPA. |
The architecture does not define precisely when this field is set to 1. It requires only that this happen periodically in Non-debug state to indicate that software execution is progressing. For example, a PE might set this field to 1 each time the PE retires one or more instructions, or at periodic intervals during the progression of an instruction.
When FEAT_MOPS is implemented, CPY, CPYF, SET, and SETG Memory Set and Copy instructions are examples of instructions that periodically make forward progress.
The reset behavior of this field is:
Access to this field is RO.
ITR empty.
Accessing this field has the following behavior:
If the PE is in Non-debug state, this bit is UNKNOWN. It is always valid in Debug state.
Access to this field is RO.
Interrupt disable. Disables taking interrupts in Non-debug state.
INTdis | Meaning |
---|---|
0b00 | This bit has no effect on the masking of interrupts. |
0b01 | If ExternalInvasiveDebugEnabled() is TRUE, then all interrupts taken to Non-secure state are masked. If ExternalSecureInvasiveDebugEnabled() is TRUE, then all interrupts taken to Secure state are masked. If ExternalRootInvasiveDebugEnabled() is TRUE, then all interrupts taken to Root state are masked. If ExternalRealmInvasiveDebugEnabled() is TRUE, then all interrupts taken to Realm state are masked. |
All interrupts includes virtual and SError interrupts.
When OSLSR_EL1.OSLK is 1, this field can be indirectly read and written through the MDSCR_EL1 and DBGDSCRext System registers.
The Effective value of this field is 0b00 when ExternalInvasiveDebugEnabled() is FALSE.
When FEAT_RME is implemented, bit[23] of this register is RES0.
The reset behavior of this field is:
Interrupt disable. Disables taking interrupts in Non-debug state.
INTdis | Meaning |
---|---|
0b00 | Masking of interrupts is controlled by PSTATE and interrupt routing controls. |
0b01 | If ExternalInvasiveDebugEnabled() is TRUE, then all interrupts taken to Non-secure state are masked. If ExternalSecureInvasiveDebugEnabled() is TRUE, then all interrupts taken to Secure state are masked. |
All interrupts includes virtual and SError interrupts.
When OSLSR_EL1.OSLK is 1, this field can be indirectly read and written through the MDSCR_EL1 and DBGDSCRext System registers.
The Effective value of this field is 0b00 when ExternalInvasiveDebugEnabled() is FALSE.
When FEAT_Debugv8p4 is implemented, bit[23] of this register is RES0.
The reset behavior of this field is:
Interrupt disable. Disables taking interrupts in Non-debug state.
INTdis | Meaning |
---|---|
0b00 | Masking of interrupts is controlled by PSTATE and interrupt routing controls. |
0b01 | If ExternalInvasiveDebugEnabled() is TRUE, then all interrupts taken to Non-secure EL1 are masked. |
0b10 | If ExternalInvasiveDebugEnabled() is TRUE, then all interrupts taken to Non-secure state are masked. If ExternalSecureInvasiveDebugEnabled() is TRUE, then all interrupts taken to Secure EL1 are masked. |
0b11 | If ExternalInvasiveDebugEnabled() is TRUE, then all interrupts taken to Non-secure state are masked. If ExternalSecureInvasiveDebugEnabled() is TRUE, then all interrupts taken to Secure state are masked. |
All interrupts includes virtual and SError interrupts.
When OSLSR_EL1.OSLK is 1, this field can be indirectly read and written through the MDSCR_EL1 and DBGDSCRext System registers.
The Effective value of this field is 0b00 when ExternalInvasiveDebugEnabled() is FALSE.
Support for the values 0b01 and 0b10 is IMPLEMENTATION DEFINED. If these values are not supported, they are reserved. If programmed with a reserved value, the PE behaves as if INTdis has been programmed with a defined value, other than for a direct read of EDSCR, and the value returned by a read of EDSCR.INTdis is UNKNOWN.
The reset behavior of this field is:
Traps accesses to the following debug System registers:
The possible values of this field are:
TDA | Meaning |
---|---|
0b0 | Accesses to debug System registers do not generate a Software Access Debug event. |
0b1 | Accesses to debug System registers generate a Software Access Debug event, if OSLSR_EL1.OSLK is 0 and if halting is allowed. |
The reset behavior of this field is:
Memory access mode. Controls the use of memory-access mode for accessing ITR and the DCC. This bit is ignored if in Non-debug state and set to zero on entry to Debug state.
Possible values of this field are:
MA | Meaning |
---|---|
0b0 | Normal access mode. |
0b1 | Memory access mode. |
The reset behavior of this field is:
Sample CONTEXTIDR_EL2. Controls whether the PC Sample-based Profiling Extension samples CONTEXTIDR_EL2 or VTTBR_EL2.VMID.
SC2 | Meaning |
---|---|
0b0 | Sample VTTBR_EL2.VMID. |
0b1 | Sample CONTEXTIDR_EL2. |
The reset behavior of this field is:
Reserved, RES0.
Non-secure status. Together with the NSE field, gives the current Security state:
NSE | NS | Meaning |
---|---|---|
0b0 | 0b0 | Secure. |
0b0 | 0b1 | Non-secure. |
0b1 | 0b0 | Root. |
0b1 | 0b1 | Realm. |
Accessing this field has the following behavior:
In Non-debug state, this bit is UNKNOWN.
Access to this field is RO.
Non-secure status. InWhen in Debug state, gives the current Security state:
NS | Meaning |
---|---|
0b0 | Secure state. |
0b1 | Non-secure state. |
Accessing this field has the following behavior:
In Non-debug state, this bit is UNKNOWN.
Access to this field is RO.
Reserved, RES0.
Secure debug disabled.
Reports the inverse of ExternalRootInvasiveDebugEnabled().
Access to this field is RO.
Secure debug disabled.
On entry to Debug state:
In Debug state, the value of the SDD bit does not change, even if ExternalSecureInvasiveDebugEnabled() changes.
In Non-debug state:
If EL3 is not implemented and the implementation is Non-secure, this bit is RES1.
Access to this field is RO.
Together with the NS field, this field gives the current Security state.
For a description of the values derived by evaluating NS and NSE together, see EDSCR.NS.
In Non-debug state, this bit is UNKNOWN.
Access to this field is RO.
Reserved, RES0.
Halting debug enable. The possible values of this field are:
HDE | Meaning |
---|---|
0b0 | Halting disabled for Breakpoint, Watchpoint and Halt Instruction debug events. |
0b1 | Halting enabled for Breakpoint, Watchpoint and Halt Instruction debug events. |
The reset behavior of this field is:
Exception level Execution state status. In Debug state, each bit gives the current Execution state of each Exception level.
RW | Meaning | Applies when |
---|---|---|
0b1111 | Any of the following:
| |
0b1110 | The PE is in Debug state at EL0. EL0 is using AArch32. EL1, EL2, and EL3 are using AArch64. | When AArch32 is supported |
0b110x | The PE is in Debug state. EL0 and EL1 are using AArch32. EL2 is enabled in the current Security state and is using AArch64. If implemented, EL3 is using AArch64. | When AArch32 is supported and EL2 is implemented |
0b10xx | The PE is in Debug state. EL0 and EL1 are using AArch32. EL2 is not implemented, disabled in the current Security state, or using AArch32. EL3 is using AArch64. | When AArch32 is supported and EL3 is implemented |
0b0xxx | The PE is in Debug state. All Exception levels are using AArch32. | When AArch32 is supported |
AccessingIn Non-debug state, this field hasis the following behavior:RAO.
Access to this field is RO.
Exception level. In Debug state, this gives the current Exception level of the PE.
AccessingIn Non-debug state, this field hasis the following behavior:RAZ.
Access to this field is RO.
SError interrupt pending. In Debug state, indicates whether an SError interrupt is pending:
A | Meaning |
---|---|
0b0 | No SError interrupt pending. |
0b1 | SError interrupt pending. |
A debugger can read EDSCR to check whether an SError interrupt is pending without having to execute further instructions. A pending SError might indicate data from target memory is corrupted.
Accessing this field has the following behavior:
UNKNOWN in Non-debug state.
Access to this field is RO.
Cumulative error flag. This bit is set to 1 following exceptions in Debug state and on any signaled overrun or underrun on the DTR or EDITR.
The reset behavior of this field is:
Access to this field is RO.
Debug status flags.
STATUS | Meaning |
---|---|
0b000001 | PE is restarting, exiting Debug state. |
0b000010 | PE is in Non-debug state. |
0b000111 | Breakpoint. |
0b010011 | External debug request. |
0b011011 | Halting step, normal. |
0b011111 | Halting step, exclusive. |
0b100011 | OS Unlock Catch. |
0b100111 | Reset Catch. |
0b101011 | Watchpoint. |
0b101111 | HLT instruction. |
0b110011 | Software access to debug register. |
0b110111 | Exception Catch. |
0b111011 | Halting step, no syndrome. |
All other values of STATUS are reserved.
Access to this field is RO.
Component | Offset | Instance |
---|---|---|
Debug | 0x088 | EDSCR |
This interface is accessible as follows:
3020/09/2021 1412:5337; 092b4e1bbfbb45a293b198f9330c5f529ead2b0fd4a233ffbdfb36e47856c443a7ce9a85f5e501ca
Copyright © 2010-2021 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.
(old) | htmldiff from- | (new) |