VirtualBox

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


Ignore:
Timestamp:
Feb 25, 2009 12:35:15 AM (16 years ago)
Author:
vboxsync
Message:

VMM,REM: Removed the single page limitation on the TSS monitoring and going over the interrupt redirection bitmap monitoring.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

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

    r17035 r17106  
    640640    PCPUMCPU pCpumCpu = cpumGetCpumCpu(pVM);
    641641
    642     if (    (cr4                   & (X86_CR4_PGE | X86_CR4_PAE | X86_CR4_PSE))
     642    if (    (cr4                 & (X86_CR4_PGE | X86_CR4_PAE | X86_CR4_PSE))
    643643        !=  (pCpumCpu->Guest.cr4 & (X86_CR4_PGE | X86_CR4_PAE | X86_CR4_PSE)))
    644644        pCpumCpu->fChanged |= CPUM_CHANGED_GLOBAL_TLB_FLUSH;
  • trunk/src/VBox/VMM/VMMAll/EMAll.cpp

    r15635 r17106  
    20942094        oldval = CPUMGetGuestCR4(pVM);
    20952095        rc = CPUMSetGuestCR4(pVM, val); AssertRC(rc);
    2096         val   = CPUMGetGuestCR4(pVM);
    2097 
     2096        val = CPUMGetGuestCR4(pVM);
     2097
     2098        /* Illegal to disable PAE when long mode is active. (AMD Arch. Programmer's Manual Volume 2: Table 14-5) */
    20982099        msrEFER = CPUMGetGuestEFER(pVM);
    2099         /* Illegal to disable PAE when long mode is active. (AMD Arch. Programmer's Manual Volume 2: Table 14-5) */
    21002100        if (    (msrEFER & MSR_K6_EFER_LMA)
    21012101            &&  (oldval & X86_CR4_PAE)
    21022102            &&  !(val & X86_CR4_PAE))
    21032103        {
    2104             return VERR_EM_INTERPRETER; /* @todo generate #GP(0) */
     2104            return VERR_EM_INTERPRETER; /** @todo generate #GP(0) */
    21052105        }
    21062106
     
    21122112            AssertRCReturn(rc, rc);
    21132113        }
     2114
     2115        /* Feeling extremely lazy. */
    21142116# ifdef IN_RC
    2115         /* Feeling extremely lazy. */
    21162117        if (    (oldval & (X86_CR4_OSFSXR|X86_CR4_OSXMMEEXCPT|X86_CR4_PCE|X86_CR4_MCE|X86_CR4_PAE|X86_CR4_DE|X86_CR4_TSD|X86_CR4_PVI|X86_CR4_VME))
    21172118            !=  (val    & (X86_CR4_OSFSXR|X86_CR4_OSXMMEEXCPT|X86_CR4_PCE|X86_CR4_MCE|X86_CR4_PAE|X86_CR4_DE|X86_CR4_TSD|X86_CR4_PVI|X86_CR4_VME)))
     
    21212122        }
    21222123# endif
     2124        if ((val ^ oldval) & X86_CR4_VME)
     2125            VM_FF_SET(pVM, VM_FF_SELM_SYNC_TSS);
     2126
    21232127        return PGMChangeMode(pVM, CPUMGetGuestCR0(pVM), CPUMGetGuestCR4(pVM), CPUMGetGuestEFER(pVM));
    21242128
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