2.8 ARM registers

ARM processors provide general-purpose and special-purpose registers. Some additional registers are available in privileged execution modes.

In all ARM processors, the following registers are available and accessible in any processor mode:

  • 13 general-purpose registers R0-R12.

  • One Stack Pointer (SP).

  • One Link Register (LR).

  • One Program Counter (PC).

  • One Application Program Status Register (APSR).

Note:

The Link Register can also be used as a general-purpose register. The Stack Pointer can be used as a general-purpose register in ARM state only.

Additional registers are available in privileged software execution.

ARM processors, with the exception of ARMv6-M and ARMv7-M based processors, have a total of 37 registers, with 3 additional registers if the Security Extensions are implemented, and in ARMv7-A only, 3 more if the Virtualization Extensions are implemented. The registers are arranged in partially overlapping banks. There is a different register bank for each processor mode. The banked registers give rapid context switching for dealing with processor exceptions and privileged operations.

The additional registers that are available in privileged software execution, with the exception of ARMv6-M and ARMv7-M, are:

  • Two Supervisor mode registers for banked SP and LR.

  • Two Abort mode registers for banked SP and LR.

  • Two Undefined mode registers for banked SP and LR.

  • Two Interrupt mode registers for banked SP and LR.

  • Seven FIQ mode registers for banked R8-R12, SP and LR.

  • Two Monitor mode registers for banked SP and LR. These are only present if the Security Extensions are implemented.

  • Two Hyp mode registers for banked SP, and to hold the return address from Hyp mode. These are only present if the Virtualization Extensions are implemented.

  • One Saved Program Status Register (SPSR) for each exception mode.

Note:

In privileged software execution, CPSR is an alias for APSR and gives access to additional bits.

The following figure shows how the registers are banked in the ARM architecture except ARMv6-M and ARMv7-M:

Figure 2-1 Organization of general-purpose registers and Program Status Registers
To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.

In ARMv6-M and ARMv7-M based processors, SP is an alias for the two banked stack pointer registers:

  • Main stack pointer register, which is only available in privileged software execution.

  • Process stack pointer register.

Non-ConfidentialPDF file icon PDF versionARM DUI0473M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.