The Cortex-M4 Processor
ARM DUI 0553A Copyright © 2010 ARM. All rights reserved. 2-2
ID121610 Non-Confidential
2.1 Programmers model
This section describes the Cortex-M4 programmers model. In addition to the individual core
register descriptions, it contains information about the processor modes and privilege levels for
software execution and stacks.
2.1.1 Processor mode and privilege levels for software execution
The processor modes are:
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 privilege levels for software execution are:
Unprivileged The software:
• 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 CONTROL register on page 2-9. 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.
2.1.2 Stacks
The processor uses a full descending stack. This means the stack pointer holds the address of
the last stacked item in memory. When the processor pushes a new item onto the stack, it
decrements the stack pointer and then writes the item to the new memory location. The
processor implements two stacks, the main stack and the process stack, with a pointer for each
held in independent registers, see Stack Pointer on page 2-4.
In Thread mode, the CONTROL register controls whether the processor uses the main stack or
the process stack, see CONTROL register on page 2-9. In Handler mode, the processor always
uses the main stack. The options for processor operations are:
Table 2-1 Summary of processor mode, execution privilege level, and stack use options
Processor
mode
Used to execute
Privilege level for
software execution
Stack used
Thread Applications
Privileged or unprivileged
a
a. See CONTROL register on page 2-9.
Main stack or process stack
a
Handler Exception handlers Always privileged Main stack