SPSR, Saved Program Status Register

The SPSR characteristics are:

Purpose

Holds the saved process state for the current mode.

This register is part of the Special-purpose registers functional group.

Usage constraints

The SPSR can be read using the MRS instruction and written using the MSR (immediate) or MSR (register) instructions. For more details on the instruction syntax, see 'PSTATE and banked register access instructions' in the ARMv8 ARM, section F1.5.

Traps and Enables

There are no traps or enables affecting this register.

Configuration

There is one instance of this register that is used in both Secure and Non-secure states.

Attributes

SPSR is a 32-bit register.

Field descriptions

The SPSR bit assignments are:

313029282726252423222120191817161514131211109876543210
NZCVQIT[1:0]J0PAN0ILGEIT[7:2]EAIFTM[4]M[3:0]

N, bit [31]

Set to the value of CPSR.N on taking an exception to the current mode, and copied to CPSR.N on executing an exception return operation in the current mode.

Z, bit [30]

Set to the value of CPSR.Z on taking an exception to the current mode, and copied to CPSR.Z on executing an exception return operation in the current mode.

C, bit [29]

Set to the value of CPSR.C on taking an exception to the current mode, and copied to CPSR.C on executing an exception return operation in the current mode.

V, bit [28]

Set to the value of CPSR.V on taking an exception to the current mode, and copied to CPSR.V on executing an exception return operation in the current mode.

Q, bit [27]

Set to the value of CPSR.Q on taking an exception to the current mode, and copied to CPSR.Q on executing an exception return operation in the current mode.

IT[1:0], bits [26:25]

IT block state bits for the T32 IT (If-Then) instruction. See IT[7:2] for explanation of this field.

J, bit [24]

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.

Bit [23]

Reserved, RES0.

PAN, bit [22]
In ARMv8.2 and ARMv8.1:

When ARMv8.1-PAN is implemented, set to the value of CPSR.PAN on taking an exception to the current mode, and copied to CPSR.PAN on executing an exception return operation in the current mode.

When ARMv8.1-PAN is not implemented, this bit is RES0.


In ARMv8.0:

Reserved, RES0.

Bit [21]

Reserved, RES0.

IL, bit [20]

Illegal Execution state bit. Shows the value of PSTATE.IL immediately before the exception was taken.

GE, bits [19:16]

Greater than or Equal flags, for parallel addition and subtraction.

IT[7:2], bits [15:10]

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.

E, bit [9]

Endianness state bit. Controls the load and store endianness for data accesses:

EMeaning
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.

A, bit [8]

SError interrupt mask bit. The possible values of this bit are:

AMeaning
0

Exception not masked.

1

Exception masked.

I, bit [7]

IRQ mask bit. The possible values of this bit are:

IMeaning
0

Exception not masked.

1

Exception masked.

F, bit [6]

FIQ mask bit. The possible values of this bit are:

FMeaning
0

Exception not masked.

1

Exception masked.

T, bit [5]

T32 Instruction set state bit. Determines the AArch32 instruction set state that the exception was taken from. Possible values of this bit are:

TMeaning
0

Taken from A32 state.

1

Taken from T32 state.

M[4], bit [4]

Execution state that the exception was taken from. Possible values of this bit are:

M[4]Meaning
1

Exception taken from AArch32.

M[3:0], bits [3:0]

AArch32 mode that an exception was taken 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.




02/05/2017 15:43

Copyright © 2010-2017 ARM Limited or its affiliates. All rights reserved. This document is Non-Confidential.