Changeset 32512 in vbox
- Timestamp:
- Sep 15, 2010 11:44:46 AM (14 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/HWACCMInternal.h
r32506 r32512 82 82 #define HWACCM_CHANGED_GUEST_LDTR RT_BIT(6) 83 83 #define HWACCM_CHANGED_GUEST_TR RT_BIT(7) 84 #define HWACCM_CHANGED_GUEST_ SYSENTER_MSRRT_BIT(8)84 #define HWACCM_CHANGED_GUEST_MSR RT_BIT(8) 85 85 #define HWACCM_CHANGED_GUEST_SEGMENT_REGS RT_BIT(9) 86 86 #define HWACCM_CHANGED_GUEST_DEBUG RT_BIT(10) … … 95 95 | HWACCM_CHANGED_GUEST_LDTR \ 96 96 | HWACCM_CHANGED_GUEST_TR \ 97 | HWACCM_CHANGED_GUEST_ SYSENTER_MSR\97 | HWACCM_CHANGED_GUEST_MSR \ 98 98 | HWACCM_CHANGED_GUEST_FPU \ 99 99 | HWACCM_CHANGED_GUEST_DEBUG \ … … 108 108 | HWACCM_CHANGED_GUEST_LDTR \ 109 109 | HWACCM_CHANGED_GUEST_TR \ 110 | HWACCM_CHANGED_GUEST_ SYSENTER_MSR\110 | HWACCM_CHANGED_GUEST_MSR \ 111 111 | HWACCM_CHANGED_GUEST_DEBUG \ 112 112 | HWACCM_CHANGED_GUEST_FPU) -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r32506 r32512 1560 1560 1561 1561 /* 1562 * Sysenter MSRs (unconditional)1562 * Sysenter MSRs 1563 1563 */ 1564 rc = VMXWriteVMCS(VMX_VMCS32_GUEST_SYSENTER_CS, pCtx->SysEnter.cs); 1565 rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_EIP, pCtx->SysEnter.eip); 1566 rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_ESP, pCtx->SysEnter.esp); 1567 AssertRC(rc); 1564 if (pVCpu->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_GUEST_MSR) 1565 { 1566 rc = VMXWriteVMCS(VMX_VMCS32_GUEST_SYSENTER_CS, pCtx->SysEnter.cs); 1567 rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_EIP, pCtx->SysEnter.eip); 1568 rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_ESP, pCtx->SysEnter.esp); 1569 AssertRC(rc); 1570 } 1568 1571 1569 1572 /* Control registers */ … … 1830 1833 pVCpu->hwaccm.s.vmx.pfnStartVM = VMXR0StartVM64; 1831 1834 #endif 1832 /* Unconditionally update these as wrmsr might have changed them. */ 1833 rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_FS_BASE, pCtx->fsHid.u64Base); 1834 AssertRC(rc); 1835 rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_GS_BASE, pCtx->gsHid.u64Base); 1836 AssertRC(rc); 1835 if (pVCpu->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_GUEST_MSR) 1836 { 1837 /* Update these as wrmsr might have changed them. */ 1838 rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_FS_BASE, pCtx->fsHid.u64Base); 1839 AssertRC(rc); 1840 rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_GS_BASE, pCtx->gsHid.u64Base); 1841 AssertRC(rc); 1842 } 1837 1843 } 1838 1844 else … … 2614 2620 2615 2621 /* Load the guest state */ 2616 #if 02617 2622 if (!pVCpu->hwaccm.s.fContextUseFlags) 2618 2623 { … … 2621 2626 } 2622 2627 else 2623 #endif2624 2628 { 2625 2629 rc = VMXR0LoadGuestState(pVM, pVCpu, pCtx); … … 3612 3616 goto ResumeExecution; 3613 3617 } 3618 pVCpu->hwaccm.s.fContextUseFlags |= HWACCM_CHANGED_GUEST_MSR; 3614 3619 /* no break */ 3615 3620 case VMX_EXIT_RDMSR: /* 31 RDMSR. Guest software attempted to execute RDMSR. */
Note:
See TracChangeset
for help on using the changeset viewer.