VirtualBox

Ignore:
Timestamp:
Oct 24, 2022 10:15:44 PM (2 years ago)
Author:
vboxsync
Message:

VMM/CPUM,IEM: Moved the CPUMCTX_INHIBIT_XXX flags into reserved EFLAGS space.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp

    r97231 r97286  
    197197VMM_INT_DECL(bool) CPUMAssertGuestRFlagsCookie(PVM pVM, PVMCPU pVCpu)
    198198{
    199     AssertLogRelMsgReturn(      (pVCpu->cpum.s.Guest.rflags.uBoth & ~(uint64_t)(X86_EFL_LIVE_MASK | X86_EFL_RA1_MASK))
     199    AssertLogRelMsgReturn(      (  pVCpu->cpum.s.Guest.rflags.uBoth
     200                                 & ~(uint64_t)(CPUMX86EFLAGS_HW_MASK_64 | CPUMX86EFLAGS_INT_MASK_64))
    200201                             == pVM->cpum.s.fReservedRFlagsCookie
    201                           && (pVCpu->cpum.s.Guest.rflags.uBoth & X86_EFL_RA1_MASK) == X86_EFL_RA1_MASK,
     202                          && (pVCpu->cpum.s.Guest.rflags.uBoth & X86_EFL_RA1_MASK) == X86_EFL_RA1_MASK
     203                          && (pVCpu->cpum.s.Guest.rflags.uBoth & X86_EFL_RAZ_MASK & CPUMX86EFLAGS_HW_MASK_64) == 0,
    202204                          ("rflags=%#RX64 vs fReservedRFlagsCookie=%#RX64\n",
    203205                           pVCpu->cpum.s.Guest.rflags.uBoth, pVM->cpum.s.fReservedRFlagsCookie),
     
    19511953         * or raw-mode). Hence we use the function below which handles the details.
    19521954         */
    1953         if (   pVCpu->cpum.s.Guest.fInhibit == 0
    1954             || (   !(pVCpu->cpum.s.Guest.fInhibit & CPUMCTX_INHIBIT_NMI)
     1955        if (   !(pVCpu->cpum.s.Guest.eflags.uBoth & CPUMCTX_INHIBIT_ALL_MASK)
     1956            || (   !(pVCpu->cpum.s.Guest.eflags.uBoth & CPUMCTX_INHIBIT_NMI)
    19551957                && pVCpu->cpum.s.Guest.uRipInhibitInt != pVCpu->cpum.s.Guest.rip))
    19561958        {
     
    19831985         *        NONMASKABLE INTERRUPT (NMI)" in SDM 3A seems pretty clear to me.
    19841986         */
    1985         if (!(pVCpu->cpum.s.Guest.fInhibit & CPUMCTX_INHIBIT_NMI))
     1987        if (!(pVCpu->cpum.s.Guest.eflags.uBoth & CPUMCTX_INHIBIT_NMI))
    19861988            return CPUMINTERRUPTIBILITY_INT_INHIBITED;
    19871989        return CPUMINTERRUPTIBILITY_NMI_INHIBIT;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette