Keil Logo

ARM registers

2.7 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
Organization of general-purpose registers and Program Status Registers

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 DUI0379H
Copyright © 2007, 2008, 2011, 2012, 2014-2016 ARM. All rights reserved. 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.