The DSPSR characteristics are:
Holds the saved process state on entry to Debug state.
This register is part of:
There is one instance of this register that is used in both Secure and Non-secure states.
AArch32 System register DSPSR is architecturally mapped to AArch64 System register DSPSR_EL0.
DSPSR is a 32-bit register.
The DSPSR bit assignments are:
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 |
N | Z | C | V | Q | IT[1:0] | J | 0 | PAN | SS | IL | GE | IT[7:2] | E | A | I | F | T | M[4] | M[3:0] |
Set to the value of CPSR.N on entering Debug state, and copied to CPSR.N on exiting Debug state.
Set to the value of CPSR.Z on entering Debug state, and copied to CPSR.Z on exiting Debug state.
Set to the value of CPSR.C on entering Debug state, and copied to CPSR.C on exiting Debug state.
Set to the value of CPSR.V on entering Debug state, and copied to CPSR.V on exiting Debug state.
Set to the value of CPSR.Q on entering Debug state, and copied to CPSR.Q on exiting Debug state.
IT block state bits for the T32 IT (If-Then) instruction. See IT[7:2] for explanation of this field.
RES0.
In previous versions of the architecture, the {J, T} bits determined the AArch32 Instruction set state. ARMv8 does not support either Jazelle state or T32EE state, and the T bit determines the Instruction set state.
Reserved, RES0.
When ARMv8.1-PAN is implemented, set to the value of CPSR.PAN on entering Debug state, and copied to CPSR.PAN on exiting Debug state.
When ARMv8.1-PAN is not implemented, this bit is RES0.
Reserved, RES0.
Software step. Shows the value of PSTATE.SS immediately before Debug state was entered.
Illegal Execution state bit. Shows the value of PSTATE.IL immediately before Debug state was entered.
Greater than or Equal flags, for parallel addition and subtraction.
IT block state bits for the T32 IT (If-Then) instruction. This field must be interpreted in two parts.
The IT field is 0b00000000 when no IT block is active.
Endianness state bit. Controls the load and store endianness for data accesses:
E | Meaning |
---|---|
0 |
Little-endian operation |
1 |
Big-endian operation. |
Instruction fetches ignore this bit.
When the reset value of the SCTLR.EE bit is defined by a configuration input signal, that value also applies to the CPSR.E bit on reset, and therefore applies to software execution from reset.
If an implementation does not provide Big-endian support, this bit is RES0. If it does not provide Little-endian support, this bit is RES1.
If an implementation provides Big-endian support but only at EL0, this bit is RES0 for an exception return to any Exception level other than EL0.
Likewise, if it provides Little-endian support only at EL0, this bit is RES1 for an exception return to any Exception level other than EL0.
SError interrupt mask bit. The possible values of this bit are:
A | Meaning |
---|---|
0 |
Exception not masked. |
1 |
Exception masked. |
IRQ mask bit. The possible values of this bit are:
I | Meaning |
---|---|
0 |
Exception not masked. |
1 |
Exception masked. |
FIQ mask bit. The possible values of this bit are:
F | Meaning |
---|---|
0 |
Exception not masked. |
1 |
Exception masked. |
T32 Instruction set state bit. Determines the AArch32 instruction set state that the Debug state entry was taken from. Possible values of this bit are:
T | Meaning |
---|---|
0 |
Taken from A32 state. |
1 |
Taken from T32 state. |
Execution state that Debug state was entered from. Possible values of this bit are:
M[4] | Meaning |
---|---|
1 |
Exception taken from AArch32. |
AArch32 mode that Debug state was entered from. The possible values are:
M[3:0] | Mode |
---|---|
0b0000 | User |
0b0001 | FIQ |
0b0010 | IRQ |
0b0011 | Supervisor |
0b0110 | Monitor (only valid in Secure state, if EL3 is implemented and can use AArch32) |
0b0111 | Abort |
0b1010 | Hyp |
0b1011 | Undefined |
0b1111 | System |
Other values are reserved. The effect of programming this field to a Reserved value is that behavior is CONSTRAINED UNPREDICTABLE, as described in 'Unallocated values in fields of AArch32 System registers and translation table entries' in the ARM ARM, section K1.1.11.
This register can be read using MRC with the following syntax:
MRC <syntax>
This register can be written using MCR with the following syntax:
MCR <syntax>
This syntax uses the following encoding in the System instruction encoding space:
<syntax> | opc1 | opc2 | CRn | coproc | CRm |
---|---|---|---|---|---|
p15, 3, <Rt>, c4, c5, 0 | 011 | 000 | 0100 | 1111 | 0101 |
The register is accessible as follows:
Control | Accessibility | |||||
---|---|---|---|---|---|---|
E2H | TGE | NS | EL0 | EL1 | EL2 | EL3 |
x | x | 0 | RW | RW | n/a | RW |
x | 0 | 1 | RW | RW | RW | RW |
x | 1 | 1 | RW | n/a | RW | RW |
This table applies to all instructions that can access this register.
Access to this register is from Debug state only. During normal execution this register is unallocated.
02/05/2017 15:43
Copyright © 2010-2017 ARM Limited or its affiliates. All rights reserved. This document is Non-Confidential.