##nop_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
@@
