WFI Wait For Interrupt Wait For Interrupt is a hint instruction that indicates that the PE can enter a low-power state and remain there until a wakeup event occurs. For more information, see Wait For Interrupt. As described in Wait For Interrupt, the execution of a WFI instruction that would otherwise cause entry to a low-power state can be trapped to a higher Exception level, see: Traps to Undefined mode of PL0 execution of WFE and WFI instructions. Traps to Hyp mode of Non-secure EL0 and EL1 execution of WFE and WFI instructions. Traps to Monitor mode of the execution of WFE and WFI instructions in modes other than Monitor mode. For more information about the constrained unpredictable behavior of this instruction, see Architectural Constraints on UNPREDICTABLE behaviors. It has encodings from the following instruction sets: A32 ( A1 ) and T32 ( T1 and T2 ) . != 1111 0 0 1 1 0 0 1 0 0 0 0 0 (1) (1) (1) (1) (0) (0) (0) (0) 0 0 0 0 0 0 1 1 WFI{<c>}{<q>} // No additional decoding required 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 WFI{<c>}{<q>} // No additional decoding required 1 1 1 1 0 0 1 1 1 0 1 0 (1) (1) (1) (1) 1 0 (0) 0 (0) 0 0 0 0 0 0 0 0 0 1 1 WFI{<c>}.W // No additional decoding required <c> See Standard assembler syntax fields. <q> See Standard assembler syntax fields. if ConditionPassed() then EncodingSpecificOperations(); if !InterruptPending() then if PSTATE.EL == EL0 then // Check for traps described by the OS. AArch32.CheckForWFxTrap(EL1, WFxType_WFI); if PSTATE.EL IN {EL0, EL1} && EL2Enabled() && !IsInHost() then // Check for traps described by the Hypervisor. AArch32.CheckForWFxTrap(EL2, WFxType_WFI); if HaveEL(EL3) && PSTATE.M != M32_Monitor then // Check for traps described by the Secure Monitor. AArch32.CheckForWFxTrap(EL3, WFxType_WFI); integer localtimeout = 1 << 64; // No local timeout event is generated WaitForInterrupt(localtimeout);