14.5.1 Processor Operating Modes

The following operation modes are present in all states:

  • User mode (USR) is the usual ARM program execution state. It is used for executing most application programs.
  • Fast Interrupt (FIQ) mode is used for handling fast interrupts. It is suitable for high-speed data transfer or channel process.
  • Interrupt (IRQ) mode is used for general-purpose interrupt handling.
  • Supervisor mode (SVC) is a protected mode for the operating system.
  • Abort mode (ABT) is entered after a data or instruction prefetch abort.
  • System mode (SYS) is a privileged user mode for the operating system.
  • Undefined mode (UND) is entered when an undefined instruction exception occurs.
  • Monitor mode (MON) is secure mode that enables change between Secure and Non-secure states, and can also be used to handle any of FIQs, IRQs and external aborts. Entered on execution of a Secure Monitor Call (SMC) instruction.

Mode changes may be made under software control, or may be brought about by external interrupts or exception processing. Most application programs execute in User Mode. The non-user modes, known as privileged modes, are entered in order to service interrupts or exceptions or to access protected resources.