13.136 SRS

Store Return State onto a stack.


SRS{addr_mode}{cond} sp{!}, #modenum

SRS{addr_mode}{cond} #modenum{!} ; This is pre-UAL syntax



is any one of the following:


Increment address After each transfer


Increment address Before each transfer (A32 only)


Decrement address After each transfer (A32 only)


Decrement address Before each transfer (Full Descending stack).

If addr_mode is omitted, it defaults to Increment After. You can also use stack oriented addressing mode suffixes, for example, when implementing stacks.


is an optional condition code.


cond is permitted only in T32 code, using a preceding IT instruction, but this is deprecated in the Arm®v8 architecture. This is an unconditional instruction in A32.

is an optional suffix. If ! is present, the final address is written back into the SP of the mode specified by modenum.


specifies the number of the mode whose banked SP is used as the base register. You must use only the defined mode numbers.


SRS stores the LR and the SPSR of the current mode, at the address contained in SP of the mode specified by modenum, and the following word respectively. Optionally updates SP of the mode specified by modenum. This is compatible with the normal use of the STM instruction for stack accesses.


For full descending stack, you must use SRSFD or SRSDB.


You can use SRS to store return state for an exception handler on a different stack from the one automatically selected.


Where addresses are not word-aligned, SRS ignores the least significant two bits of the specified address.

The time order of the accesses to individual words of memory generated by SRS is not architecturally defined. Do not use this instruction on memory-mapped I/O locations where access order matters.

Do not use SRS in User and System modes because these modes do not have a SPSR.

SRS is not permitted in a non-secure state if modenum specifies monitor mode.


This 32-bit instruction is available in A32 and T32.

The 32-bit T32 instruction is not available in the Armv7‑M architecture.

There is no 16-bit version of this instruction in T32.


R13_usr  EQU     16
         SRSFD   sp,#R13_usr
Non-ConfidentialPDF file icon PDF versionDUI0801J
Copyright © 2014–2017, 2019 Arm Limited or its affiliates. All rights reserved.