You copied the Doc URL to your clipboard.

Processor modes, and privileged and unprivileged software execution

The Arm® architecture supports different levels of execution privilege. The privilege level depends on the processor mode.


Armv6‑M, Armv7‑M, Armv8‑M.baseline, and Armv8‑M.mainline do not support the same modes as other Arm architectures and profiles. Some of the processor modes listed here do not apply to these architectures.

Table 3-1 Arm processor modes

Processor mode Mode number
User 0b10000
FIQ 0b10001
IRQ 0b10010
Supervisor 0b10011
Monitor 0b10110
Abort 0b10111
Hyp 0b11010
Undefined 0b11011
System 0b11111

User mode is an unprivileged mode, and has restricted access to system resources. All other modes have full access to system resources in the current security state, can change mode freely, and execute software as privileged.

Applications that require task protection usually execute in User mode. Some embedded applications might run entirely in any mode other than User mode. An application that requires full access to system resources usually executes in System mode.

Modes other than User mode are entered to service exceptions, or to access privileged resources.

Code can run in either a Secure state or in a Non-secure state. Hypervisor (Hyp) mode has privileged execution in Non-secure state.