You copied the Doc URL to your clipboard.

WFI

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:

It has encodings from the following instruction sets: A32 ( A1 ) and T32 ( T1 and T2 ) .

A1

313029282726252423222120191817161514131211109876543210
!= 1111001100100000(1)(1)(1)(1)(0)(0)(0)(0)00000011
cond

A1

WFI{<c>}{<q>}

// No additional decoding required

T1

1514131211109876543210
1011111100110000

T1

WFI{<c>}{<q>}

// No additional decoding required

T2

15141312111098765432101514131211109876543210
111100111010(1)(1)(1)(1)10(0)0(0)00000000011

T2

WFI{<c>}.W

// No additional decoding required

For more information about the constrained unpredictable behavior of this instruction, see Architectural Constraints on UNPREDICTABLE behaviors.

Assembler Symbols

Operation

if ConditionPassed() then
    EncodingSpecificOperations();
    if !InterruptPending() then
        if PSTATE.EL == EL0 then
            // Check for traps described by the OS which may be EL1 or EL2.
            AArch32.CheckForWFxTrap(EL1, FALSE);
        if EL2Enabled() && PSTATE.EL IN {EL0,EL1} && !IsInHost() then
            // Check for traps described by the Hypervisor.
            AArch32.CheckForWFxTrap(EL2, FALSE);
        if HaveEL(EL3) && PSTATE.M != M32_Monitor then
            // Check for traps described by the Secure Monitor.
            AArch32.CheckForWFxTrap(EL3, FALSE);
        WaitForInterrupt();
Was this page helpful? Yes No