##hint_execute case op of when SystemHintOp_YIELD Hint_Yield(); end when SystemHintOp_WFE if EventRegistered() then ClearEventRegister(); else if PSTATE.EL == EL0 then AArch64.CheckForWFxTrap(EL1, TRUE); end if HaveEL(EL2) && !IsSecure() && PSTATE.EL IN {EL0,EL1} then AArch64.CheckForWFxTrap(EL2, TRUE); end if HaveEL(EL3) && PSTATE.EL != EL3 then AArch64.CheckForWFxTrap(EL3, TRUE); end WaitForEvent(); end end when SystemHintOp_WFI if !InterruptPending() then if PSTATE.EL == EL0 then AArch64.CheckForWFxTrap(EL1, FALSE); end if HaveEL(EL2) && !IsSecure() && PSTATE.EL IN {EL0,EL1} then AArch64.CheckForWFxTrap(EL2, FALSE); end if HaveEL(EL3) && PSTATE.EL != EL3 then AArch64.CheckForWFxTrap(EL3, FALSE); end WaitForInterrupt(); end end when SystemHintOp_SEV SendEvent(); end when SystemHintOp_SEVL EventRegisterSet(); end otherwise // do nothing @@