The EDPRSR characteristics are:
Holds information about the reset and powerdown state of the PE.
When FEAT_DoPD is implemented, EDPRSR is in the Core power domain. Otherwise, EDPRSR contains fields that are in the Core power domain and fields that are in the Debug power domain.
If FEAT_DoPD is implemented then all fields in this register are in the Core power domain.
EDPRSR 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 |
RES0 | EPMADE | ETADE | EDADE | STAD | ETAD | SDR | SPMAD | EPMAD | SDAD | EDAD | DLK | OSLK | HALTED | SR | R | SPD | PU |
Reserved, RES0.
External Performance Monitors Access Disable Extended status. Together with EDPRSR.EPMAD, reports whether access to Performance Monitor registers by an external debugger is prohibited by the MDCR_EL3.{EPMAD, EPMADE} controls.
For a description of the values derived by evaluating EDPRSR.EPMAD and EDPRSR.EPMADE together, see EDPRSR.EPMAD.
This field is in the Core power domain.
Accessing this field has the following behavior:
Reserved, RES0.
External Trace Access Disable Extended status. Together with EDPRSR.ETAD, reports whether access to trace unit registers by an external debugger is prohibited by the MDCR_EL3.{ETAD, ETADE} controls.
For a description of the values derived by evaluating EDPRSR.ETAD and EDPRSR.ETADE together, see EDPRSR.ETAD.
This field is in the Core power domain.
Accessing this field has the following behavior:
Reserved, RES0.
External Debug Access Disable Extended status. Together with EDPRSR.EDAD, reports whether access to breakpoint registers, watchpoint registers, and OSLAR_EL1 by an external debugger is prohibited by the MDCR_EL3.{EDAD, EDADE} controls.
For a description of the values derived by evaluating EDPRSR.EDAD and EDPRSR.EDADE together, see EDPRSR.EDAD.
This field is in the Core power domain.
Accessing this field has the following behavior:
Reserved, RES0.
Sticky ETAD error. Set to 1 when a Non-secure external debug interface access to an external trace register returns an error because AllowExternalTraceAccess() == FALSE for the access.
STAD | Meaning |
---|---|
0b0 |
Since EDPRSR was last read, no external accesses to the trace unit registers have failed because AllowExternalTraceAccess() was FALSE for the access. |
0b1 |
Since EDPRSR was last read, at least one external access to the trace unit registers has failed because AllowExternalTraceAccess() was FALSE for the access. |
If IsCorePowered() == TRUE, the Core power domain is powered up, then, following a read of EDPRSR, then this bit clears to 0.
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
Reserved, RES0.
External Trace Access Disable status. Together with EDPRSR.ETADE, reports whether access to trace unit registers by an external debugger is prohibited by the MDCR_EL3.{ETAD, ETADE} controls.
ETADE | ETAD | Meaning |
---|---|---|
0b0 | 0b0 | No accesses from an external debugger to trace unit registers are prohibited. |
0b0 | 0b1 | Realm and Non-secure accesses from an external debugger to trace unit registers are prohibited. Other accesses from an external debugger to trace unit registers are not affected. |
0b1 | 0b0 | Secure and Non-secure accesses from an external debugger to trace unit registers are prohibited. Other accesses from an external debugger to trace unit registers are not affected. |
0b1 | 0b1 | Secure, Non-secure, and Realm accesses from an external debugger to trace unit registers are prohibited. Other accesses from an external debugger to trace unit registers are not affected. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Trace Access Disable status. Reports whether Non-secure access to trace unit registers by an external debugger is prohibited by the MDCR_EL3.ETAD control.
ETAD | Meaning |
---|---|
0b0 |
External Non-secure trace unit accesses not affected. AllowExternalTraceAccess() == TRUE for a Non-secure access. |
0b1 |
External Non-secure trace unit accesses are prohibited. AllowExternalTraceAccess() == FALSE for a Non-secure access. |
This field is in the Core power domain.
Accessing this field has the following behavior:
Reserved, RES0.
Sticky Debug Restart. Set to 1 when the PE exits Debug state.
SDR | Meaning |
---|---|
0b0 |
The PE has not restarted since EDPRSR was last read. |
0b1 |
The PE has restarted since EDPRSR was last read. |
If a reset occurs when the PE is in Debug state, the PE exits Debug state. SDR is UNKNOWN on Warm reset, meaning a debugger must also use the SR bit to determine whether the PE has left Debug state.
If the Core power domain is powered up, then following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
Sticky EPMAD error. Set to 1 if an external debug interface access to a Performance Monitors register returns an error because AllowExternalPMUAccess() == FALSE.
SPMAD | Meaning |
---|---|
0b0 |
No Non-secure external debug interface accesses to the external Performance Monitors registers have failed because AllowExternalPMUAccess() == FALSE for the access since EDPRSR was last read. |
0b1 |
At least one Non-secure external debug interface access to the external Performance Monitors register has failed and returned an error because AllowExternalPMUAccess() == FALSE for the access since EDPRSR was last read. |
If the Core power domain is powered up, then following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
Sticky EPMAD error.
SPMAD | Meaning |
---|---|
0b0 |
No external debug interface accesses to the Performance Monitors registers have failed because AllowExternalPMUAccess() == FALSE since EDPRSR was last read. |
0b1 |
At least one external debug interface access to the Performance Monitors registers has failed and returned an error because AllowExternalPMUAccess() == FALSE since EDPRSR was last read. |
If the Core power domain is powered up, then, following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
Reserved, RES0.
External Performance Monitors Access Disable status. Together with EDPRSR.EPMADE, reports whether access to Performance Monitor registers by an external debugger is prohibited by the MDCR_EL3.{EPMAD, EPMADE} controls.
See MDCR_EL3.EPMAD for the list of affected external Performance Monitor registers.
EPMADE | EPMAD | Meaning |
---|---|---|
0b0 | 0b0 | No accesses from an external debugger to affected Performance Monitor registers are prohibited. |
0b0 | 0b1 | Realm and Non-secure accesses from an external debugger to affected Performance Monitor registers are prohibited. Other accesses from an external debugger to affected Performance Monitor registers are not affected. |
0b1 | 0b0 | Secure and Non-secure accesses from an external debugger to affected Performance Monitor registers are prohibited. Other accesses from an external debugger to affected Performance Monitor registers are not affected. |
0b1 | 0b1 | Secure, Non-secure, and Realm accesses from an external debugger to affected Performance Monitor registers are prohibited. Other accesses from an external debugger to affected Performance Monitor registers are not affected. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Performance Monitors Access Disable status. Reports whether Non-secure access to Performance Monitor registers by an external debugger is prohibited by the MDCR_EL3.EPMAD control.
See MDCR_EL3.EPMAD for the list of affected external Performance Monitor registers.
EPMAD | Meaning |
---|---|
0b0 |
External Non-secure access to Performance Monitor registers not affected. AllowExternalPMUAccess() == TRUE for a Non-secure access. |
0b1 |
External Non-secure access to affected Performance Monitor registers is prohibited. AllowExternalPMUAccess() == FALSE for a Non-secure access. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Performance Monitors Access Disable status. Reports whether access to Performance Monitor registers by an external debugger is prohibited by the MDCR_EL3.EPMAD control.
See MDCR_EL3.EPMAD for the list of affected external Performance Monitor registers.
EPMAD | Meaning |
---|---|
0b0 |
External access to Performance Monitor registers not affected. AllowExternalPMUAccess() == TRUE. |
0b1 |
External access to affected Performance Monitor registers is prohibited. AllowExternalPMUAccess() == FALSE. |
This field is in the Core power domain.
Accessing this field has the following behavior:
Reserved, UNKNOWN.
Reserved, RES0.
Sticky EDAD error. Set to 1 if an external debug interface access to a debug register returns an error because AllowExternalDebugAccess() == FALSE.
SDAD | Meaning |
---|---|
0b0 |
No Non-secure external debug interface accesses to the debug registers have failed because AllowExternalDebugAccess() == FALSE for the access since EDPRSR was last read. |
0b1 |
At least one Non-secure external debug interface access to the debug registers has failed and returned an error because AllowExternalDebugAccess() == FALSE for the access since EDPRSR was last read. |
If the Core power domain is powered up, then, following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
Sticky EDAD error. Set to 1 if an external debug interface access to a debug register returns an error because AllowExternalDebugAccess() == FALSE.
SDAD | Meaning |
---|---|
0b0 |
No external debug interface accesses to the debug registers have failed because AllowExternalDebugAccess() == FALSE since EDPRSR was last read. |
0b1 |
At least one external debug interface access to the debug registers has failed and returned an error because AllowExternalDebugAccess() == FALSE since EDPRSR was last read. |
If the Core power domain is powered up, then, following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
External Debug Access Disable status. Together with EDPRSR.EDADE, reports whether access to breakpoint registers, watchpoint registers, and OSLAR_EL1 by an external debugger is prohibited by the MDCR_EL3.{EDAD, EDADE} controls.
See MDCR_EL3.EDAD for the list of affected external debug registers.
EDADE | EDAD | Meaning |
---|---|---|
0b0 | 0b0 | No accesses from an external debugger to affected debug registers are prohibited. |
0b0 | 0b1 | Realm and Non-secure accesses from an external debugger to affected debug registers are prohibited. Other accesses from an external debugger to affected debug registers are not affected. |
0b1 | 0b0 | Secure and Non-secure accesses from an external debugger to affected debug registers are prohibited. Other accesses from an external debugger to affected debug registers are not affected. |
0b1 | 0b1 | Secure, Non-secure, and Realm accesses from an external debugger to affected debug registers are prohibited. Other accesses from an external debugger to affected debug registers are not affected. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Debug Access Disable status. Reports whether Non-secure access to breakpoint registers, watchpoint registers, and OSLAR_EL1 by an external debugger is prohibited by the MDCR_EL3.EDAD control.
See MDCR_EL3.EDAD for the list of affected external debug registers.
EDAD | Meaning |
---|---|
0b0 |
External Non-secure access to debug registers not affected. AllowExternalDebugAccess() == TRUE for a Non-secure access. |
0b1 |
External Non-secure access to affected debug registers is prohibited. AllowExternalDebugAccess() == FALSE for a Non-secure access. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Debug Access Disable status. Reports whether access to breakpoint registers, watchpoint registers, and OSLAR_EL1 by an external debugger is prohibited by the MDCR_EL3.EDAD control.
See MDCR_EL3.EDAD for the list of affected external debug registers.
EDAD | Meaning |
---|---|
0b0 |
External access to debug registers not affected. AllowExternalDebugAccess() == TRUE. |
0b1 |
External access to affected debug registers is prohibited. AllowExternalDebugAccess() == FALSE. |
This field is in the Core power domain.
Accessing this field has the following behavior:
External Debug Access Disable status. Reports whether access to breakpoint registers, watchpoint registers, and optionally OSLAR_EL1 by an external debugger is prohibited by the MDCR_EL3.EDAD control.
See MDCR_EL3.EDAD for the list of affected external debug registers.
EDAD | Meaning |
---|---|
0b0 |
External access to debug registers not affected. AllowExternalDebugAccess() == TRUE. |
0b1 |
External access to affected debug registers is prohibited. AllowExternalDebugAccess() == FALSE. |
This field is in the Core power domain.
Accessing this field has the following behavior:
This field is RES0.
Double Lock. From Armv8.2, use of this field is deprecated.
This field is in the Core power domain.
Accessing this field has the following behavior:
Double Lock.
This field returns the result of the pseudocode function DoubleLockStatus().
If the Core power domain is powered up and DoubleLockStatus() == TRUE, it is IMPLEMENTATION DEFINED whether:
This field is in the Core power domain.
DLK | Meaning |
---|---|
0b0 |
DoubleLockStatus() returns FALSE. |
0b1 |
DoubleLockStatus() returns TRUE and the Core power domain is powered up. |
Accessing this field has the following behavior:
Reserved, RES0.
OS Lock status bit.
A read of this bit returns the value of OSLSR_EL1.OSLK.
This field is in the Core power domain.
Accessing this field has the following behavior:
Halted status bit.
HALTED | Meaning |
---|---|
0b0 |
PE is in Non-debug state. |
0b1 |
PE is in Debug state. |
This field is in the Core power domain.
Accessing this field has the following behavior:
Sticky core Reset status bit.
SR | Meaning |
---|---|
0b0 |
The non-debug logic of the PE is not in reset state and has not been reset since the last time EDPRSR was read. |
0b1 |
The non-debug logic of the PE is in reset state or has been reset since the last time EDPRSR was read. |
If EDPRSR.PU reads as 1 and EDPRSR.R reads as 0, which means that the Core power domain is in a powerup state and that the non-debug logic of the PE is not in reset state, then following a read of EDPRSR:
This field is in the Core power domain.
The reset behavior of this field is:
Accessing this field has the following behavior:
PE Reset status bit.
R | Meaning |
---|---|
0b0 |
The non-debug logic of the PE is not in reset state. |
0b1 |
The non-debug logic of the PE is in reset state. |
If FEAT_DoubleLock is implemented, the PE is in reset state, and the PE entered reset state with the OS Double Lock locked this bit has a CONSTRAINED UNPREDICTABLE value. For more information, see 'EDPRSR.{DLK, R} and reset state'.
This field is in the Core power domain.
Accessing this field has the following behavior:
Sticky core Powerdown status bit.
If FEAT_DoubleLock is implemented and DoubleLockStatus() == TRUE, then:
For more information, see 'EDPRSR.{DLK, SPD, PU} and the Core power domain'.
SPD | Meaning |
---|---|
0b0 | If EDPRSR.PU is 0, it is not known whether the state of the debug registers in the Core power domain is lost. If EDPRSR.PU is 1, the state of the debug registers in the Core power domain has not been lost. |
0b1 |
The state of the debug registers in the Core power domain has been lost. |
If the Core power domain is powered up, then, following a read of EDPRSR:
EDPRSR.{DLK, SPD, PU} describe whether registers in the Core power domain can be accessed, and whether their state has been lost since the last time the register was read. For more information, see 'EDPRSR.{DLK, SPD, PU} and the Core power domain'.
When FEAT_DoPD is not implemented and the Core power domain is in either retention or powerdown state, the value of EDPRSR.SPD is IMPLEMENTATION DEFINED. For more information, see 'EDPRSR.SPD when the Core domain is in either retention or powerdown state'.
The reset behavior of this field is:
Accessing this field has the following behavior:
Core powerup status bit.
Access to this field is RAO/WI.
Core Powerup status bit. Indicates whether the debug registers in the Core power domain can be accessed.
PU | Meaning |
---|---|
0b0 |
Either the Core power domain is in a low-power or powerdown state, or FEAT_DoubleLock is implemented and DoubleLockStatus() == TRUE, meaning the debug registers in the Core power domain cannot be accessed. |
0b1 |
The Core power domain is in a powerup state, and either FEAT_DoubleLock is not implemented or DoubleLockStatus() == FALSE, meaning the debug registers in the Core power domain can be accessed. |
If FEAT_DoubleLock is implemented, the PE is in reset state, and the PE entered reset state with the OS Double Lock locked this bit has a CONSTRAINED UNPREDICTABLE value. For more information, see 'EDPRSR.{DLK, R} and reset state'
EDPRSR.{DLK, SPD, PU} describe whether registers in the Core power domain can be accessed, and whether their state has been lost since the last time the register was read. For more information, see 'EDPRSR.{DLK, SPD, PU} and the Core power domain'
Access to this field is RO.
Core Powerup status bit. Indicates whether the debug registers in the Core power domain can be accessed.
PU | Meaning |
---|---|
0b0 |
Core power domain is in a low-power or powerdown state where the debug registers in the Core power domain cannot be accessed. |
0b1 |
Core power domain is in a powerup state where the debug registers in the Core power domain can be accessed. |
If FEAT_DoubleLock is implemented, the PE is in reset state, and the PE entered reset state with the OS Double Lock locked this bit has a CONSTRAINED UNPREDICTABLE value. For more information see 'EDPRSR.{DLK, R} and reset state'
EDPRSR.{DLK, SPD, PU} describe whether registers in the Core power domain can be accessed, and whether their state has been lost since the last time the register was read. For more information, see 'EDPRSR.{DLK, SPD, PU} and the Core power domain'.
When the Core power domain is powered-up and DoubleLockStatus() == TRUE, then the value of EDPRSR.PU is IMPLEMENTATION DEFINED. See the description of the DLK bit for more information.
If FEAT_DoubleLock is implemented, the Core power domain is powered up, and DoubleLockStatus() == TRUE, it is IMPLEMENTATION DEFINED whether this bit reads as 0 or 1.
Access to this field is RO.
On permitted accesses to the register, other access controls affect the behavior of some fields. See the field descriptions for more information.
If the Core power domain is powered up (EDPRSR.PU == 1), then following a read of EDPRSR:
If FEAT_DoPD is not implemented and the Core power domain is powered down (EDPRSR.PU == 0), then:
The clearing of bits is an indirect write to EDPRSR.
Component | Offset | Instance |
---|---|---|
Debug | 0x314 | EDPRSR |
Accessible as follows:
15/12/2024 22:27; 5e0a212688c6bd7aee92394b6f5e491b4d0fee1d
Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.