EDPCSR, External Debug Program Counter Sample Register
The EDPCSR characteristics are:
Purpose
Holds a sampled instruction address value.
Configuration
EDPCSR is in the Core power domain.
This register is present only when FEAT_PCSRv8 is implemented and FEAT_PCSRv8p2 is not implemented. Otherwise, direct accesses to EDPCSR are RES0.
EDPCSR is a pair of 32-bit registers.
If FEAT_VHE is implemented, the format of this register differs depending on the value of EDSCR.SC2.
Implemented only if the OPTIONAL PC Sample-based Profiling Extension is implemented in the external debug registers space.
FEAT_PCSRv8p2 implements the PC Sample-based Profiling Extension in the Performance Monitors registers space.
Attributes
EDPCSR is a 64-bit register.
Field descriptions
The EDPCSR bit assignments are:
When FEAT_VHE is not implemented or EDSCR.SC2 == 0: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 PC Sample high word, EDPCSRhi PC Sample low word
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 |
PC Sample high word, EDPCSRhi | |||||||||||||||||||||||||||||||
PC Sample low word |
Bits [63:32]
PC Sample high word, EDPCSRhi. If EDVIDSR.HV == 0 then this field is RAZ, otherwise bits [63:32] of the sampled instruction address value. The translation regime that EDPCSR samples can be determined from EDVIDSR.{NS,E2,E3}.
On a Cold reset, this field resets to an architecturally UNKNOWN value.
Bits [31:0]
PC Sample low word. EDPCSRlo, bits[31:0] of the sampled instruction address value.
EDPCSRlo reads as 0xFFFFFFFF when any of the following are true:
- The PE is in Debug state.
- PC Sample-based profiling is prohibited.
If an instruction has retired since the PE left Reset state, then the first read of EDPCSR[31:0] is permitted but not required to return 0xFFFFFFFF.
EDPCSRlo reads as an UNKNOWN value when any of the following are true:
- The PE is in Reset state.
- No instruction has retired since the PE left Reset state, Debug state, or a state where PC Sample-based Profiling is prohibited.
- No instruction has retired since the last read of EDPCSR[31:0].
For the cases where a read of EDPCSR[31:0] returns 0xFFFFFFFF or an UNKNOWN value, the read has the side-effect of setting EDPCSRhi, EDCIDSR, and EDVIDSR to UNKNOWN values.
Otherwise, a read of EDPCSR[31:0] returns bits [31:0] of the sampled instruction address value and has the side-effect of indirectly writing to EDPCSRhi, EDCIDSR, and EDVIDSR. The translation regime that EDPCSR samples can be determined from EDVIDSR.{NS,E2,E3}.
For a read of EDPCSR[31:0] from the memory-mapped interface, if EDLSR.SLK == 1, meaning the OPTIONAL Software Lock is locked, then the side-effect of the access does not occur and EDPCSRhi, EDCIDSR, and EDVIDSR are unchanged.
On a Cold reset, this field resets to an architecturally UNKNOWN value.
When FEAT_VHE is implemented and EDSCR.SC2 == 1: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 NS EL RES0 PC Sample high word, EDPCSRhi PC Sample low word 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 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
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 |
NS | EL | RES0 | PC Sample high word, EDPCSRhi | ||||||||||||||||||||||||||||
PC Sample low word | |||||||||||||||||||||||||||||||
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 |
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 |
NS, bit [63]
Non-secure state sample. Indicates the Security state that is associated with the most recent EDPCSR sample or, when it is read as a single atomic 64-bit read, the current EDPCSR sample. The translation regime that EDPCSR samples can be determined from EDPCSR.{NS,EL}.
If EL3 is not implemented, this bit indicates the Effective value of SCR.NS.
NS | Meaning |
---|---|
0b0 |
Sample is from Secure state. |
0b1 |
Sample is from Non-secure state. |
On a Cold reset, this field resets to an architecturally UNKNOWN value.
EL, bits [62:61]
Exception level status sample. Indicates the Exception level that is associated with the most recent EDPCSR sample or, when it is read as a single atomic 64-bit read, the current EDPCSR sample. The translation regime that EDPCSR samples can be determined from EDPCSR.{NS,EL}.
EL | Meaning |
---|---|
0b00 |
Sample is from EL0. |
0b01 |
Sample is from EL1. |
0b10 |
Sample is from EL2. |
0b11 |
Sample is from EL3. |
On a Cold reset, this field resets to an architecturally UNKNOWN value.
Bits [60:56]
Reserved, RES0.
Bits [55:32]
PC Sample high word, EDPCSRhi. Bits [55:32] of the sampled instruction address value. The translation regime that EDPCSR samples can be determined from EDPCSR.{NS,EL}.
On a Cold reset, this field resets to an architecturally UNKNOWN value.
Bits [31:0]
PC Sample low word. EDPCSRlo, bits[31:0] of the sampled instruction address value.
EDPCSRlo reads as 0xFFFFFFFF when any of the following are true:
- The PE is in Debug state.
- PC Sample-based profiling is prohibited.
If an instruction has retired since the PE left Reset state, then the first read of EDPCSR[31:0] is permitted but not required to return 0xFFFFFFFF.
EDPCSRlo reads as an UNKNOWN value when any of the following are true:
- The PE is in Reset state.
- No instruction has retired since the PE left Reset state, Debug state, or a state where PC Sample-based Profiling is prohibited.
- No instruction has retired since the last read of EDPCSR[31:0].
For the cases where a read of EDPCSR[31:0] returns 0xFFFFFFFF or an UNKNOWN value, the read has the side-effect of setting EDPCSRhi, EDCIDSR, and EDVIDSR to UNKNOWN values.
Otherwise, a read of EDPCSR[31:0] returns bits [31:0] of the sampled instruction address value and has the side-effect of indirectly writing to EDPCSRhi, EDCIDSR, and EDVIDSR. The translation regime that EDPCSR samples can be determined from EDPCSR.{NS,EL}.
For a read of EDPCSR[31:0] from the memory-mapped interface, if EDLSR.SLK == 1, meaning the OPTIONAL Software Lock is locked, then the side-effect of the access does not occur and EDPCSRhi, EDCIDSR, and EDVIDSR are unchanged.
On a Cold reset, this field resets to an architecturally UNKNOWN value.
Accessing the EDPCSR
IMPLEMENTATION DEFINED extensions to external debug might make the value of this register UNKNOWN, see 'Permitted behavior that might make the PC Sample-based profiling registers UNKNOWN'
EDPCSR can be accessed through the memory-mapped interfaces:
Component | Offset | Instance | Range |
---|---|---|---|
Debug | 0x0A0 | EDPCSR | 31:0 |
This interface is accessible as follows:
- When IsCorePowered(), !DoubleLockStatus() and !OSLockStatus() accesses to this register are RO.
- Otherwise accesses to this register generate an error response.
Component | Offset | Instance | Range |
---|---|---|---|
Debug | 0x0AC | EDPCSR | 63:32 |
This interface is accessible as follows:
- When IsCorePowered(), !DoubleLockStatus() and !OSLockStatus() accesses to this register are RO.
- Otherwise accesses to this register generate an error response.