2.5.1.1 Processor Mode and Privilege Levels for Software Execution

The following is a list of processor modes for software execution:

  • Thread mode: Used to execute application software. The processor enters Thread mode when it comes out of reset.
  • Handler mode: Used to handle exceptions. The processor returns to Thread mode when it has finished all exception processing.

The following is a list of privilege levels for software execution:

  • Unprivileged:
    • has limited access to the MSR and MRS instructions, and cannot use the CPS instruction
    • cannot access the system timer, NVIC, or system control block
    • might have restricted access to memory or peripherals.

      Unprivileged software executes at the unprivileged level.

  • Privileged: The software can use all the instructions and has access to all resources.

    Privileged software executes at the privileged level.

In Thread mode, the CONTROL register controls whether software execution is privileged or unprivileged, see 2.5.1.3.10 CONTROL Register. In Handler mode, software execution is always privileged.

Only privileged software can write to the CONTROL register to change the privilege level for software execution in Thread mode. Unprivileged software can use the SVC instruction to make a supervisor call to transfer control to privileged software.