2.5.1. Entering sleep mode

This section describes the mechanisms software can use to put the processor into sleep mode.

The system can generate spurious wakeup events, for example a debug operation wakes up the processor. Therefore software must be able to put the processor back into sleep mode after such an event. A program might have an idle loop to put the processor back to sleep mode.

Wait for interrupt

The wait for interrupt instruction, WFI, causes immediate entry to sleep mode unless the wakeup condition is true, see Wakeup from WFI or sleep-on-exit. When the processor executes a WFI instruction it stops executing instructions and enters sleep mode. See WFI for more information.

Wait for event

The wait for event instruction, WFE, causes entry to sleep mode depending on the value of a one-bit event register. When the processor executes a WFE instruction, it checks the value of the event register:


The processor stops executing instructions and enters sleep mode.


The processor clears the register to 0 and continues executing instructions without entering sleep mode.

See WFE for more information.

If the event register is 1, it indicates that the processor must not enter sleep mode on execution of a WFE instruction. Typically, this is because an external event signal, if implemented, is asserted, or a processor in the system has executed an SEV instruction, see SEV. Software cannot access this register directly.


If the SLEEPONEXIT bit of the SCR is set to 1, when the processor completes the execution of all exception handlers it returns to Thread mode and immediately enters sleep mode. Use this mechanism in applications that only require the processor to run when an exception occurs.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C