VirtualBox

Changeset 50866 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Mar 25, 2014 3:47:11 PM (11 years ago)
Author:
vboxsync
Message:

VMM/EMAll: Disallow writing to reserved bits while loading CR0.

File:
1 edited

Legend:

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

    r49975 r50866  
    14471447    uint64_t oldval;
    14481448    uint64_t msrEFER;
     1449    uint32_t fValid;
    14491450    int      rc, rc2;
    14501451    NOREF(pVM);
     
    15381539            &&  !(val & X86_CR4_PAE))
    15391540        {
     1541            return VERR_EM_INTERPRETER; /** @todo generate #GP(0) */
     1542        }
     1543
     1544        /* From IEM iemCImpl_load_CrX. */
     1545        /** @todo Check guest CPUID bits for determining corresponding valid bits. */
     1546        fValid = X86_CR4_VME | X86_CR4_PVI
     1547               | X86_CR4_TSD | X86_CR4_DE
     1548               | X86_CR4_PSE | X86_CR4_PAE
     1549               | X86_CR4_MCE | X86_CR4_PGE
     1550               | X86_CR4_PCE | X86_CR4_OSFSXR
     1551               | X86_CR4_OSXMMEEXCPT;
     1552        //if (xxx)
     1553        //    fValid |= X86_CR4_VMXE;
     1554        //if (xxx)
     1555        //    fValid |= X86_CR4_OSXSAVE;
     1556        if (val & ~(uint64_t)fValid)
     1557        {
     1558            Log(("Trying to set reserved CR4 bits: NewCR4=%#llx InvalidBits=%#llx\n", val, val & ~(uint64_t)fValid));
    15401559            return VERR_EM_INTERPRETER; /** @todo generate #GP(0) */
    15411560        }
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