Changeset 77406 in vbox
- Timestamp:
- Feb 21, 2019 6:45:33 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 128960
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r77358 r77406 5189 5189 5190 5190 /* EFER MSR. */ 5191 uint64_t const uValidEferMask = CPUMGetGuestEferMsrValidMask(pVCpu->CTX_SUFF(pVM)); 5192 if ( (pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_LOAD_EFER_MSR) 5193 && (pVmcs->u64GuestEferMsr.u & ~uValidEferMask)) 5194 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsrRsvd); 5195 5196 bool const fGstLma = RT_BOOL(pVmcs->u64HostEferMsr.u & MSR_K6_EFER_BIT_LMA); 5197 bool const fGstLme = RT_BOOL(pVmcs->u64HostEferMsr.u & MSR_K6_EFER_BIT_LME); 5198 if ( fGstInLongMode == fGstLma 5199 && ( !(pVmcs->u64GuestCr0.u & X86_CR0_PG) 5200 || fGstLma == fGstLme)) 5201 { /* likely */ } 5202 else 5203 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsr); 5191 if (pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_LOAD_EFER_MSR) 5192 { 5193 uint64_t const uValidEferMask = CPUMGetGuestEferMsrValidMask(pVCpu->CTX_SUFF(pVM)); 5194 if (!(pVmcs->u64GuestEferMsr.u & ~uValidEferMask)) 5195 { /* likely */ } 5196 else 5197 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsrRsvd); 5198 5199 bool const fGstLma = RT_BOOL(pVmcs->u64GuestEferMsr.u & MSR_K6_EFER_LMA); 5200 bool const fGstLme = RT_BOOL(pVmcs->u64GuestEferMsr.u & MSR_K6_EFER_LME); 5201 if ( fGstLma == fGstInLongMode 5202 && ( !(pVmcs->u64GuestCr0.u & X86_CR0_PG) 5203 || fGstLma == fGstLme)) 5204 { /* likely */ } 5205 else 5206 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsr); 5207 } 5204 5208 5205 5209 /* We don't support IA32_BNDCFGS MSR yet. */
Note:
See TracChangeset
for help on using the changeset viewer.