Changeset 80622 in vbox
- Timestamp:
- Sep 6, 2019 9:42:26 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 133151
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r80602 r80622 14566 14566 { 14567 14567 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 14568 14569 #if 1 14568 14570 /** @todo Use VM-exit instruction information. */ 14569 14571 return VERR_EM_INTERPRETER; 14572 #else 14573 hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 14574 hmR0VmxReadExitInstrInfoVmcs(pVmxTransient); 14575 hmR0VmxReadExitQualVmcs(pVmxTransient); 14576 int rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK 14577 | IEM_CPUMCTX_EXTRN_EXEC_DECODED_MEM_MASK); 14578 AssertRCReturn(rc, rc); 14579 14580 /* Paranoia. Ensure this has a memory operand. */ 14581 Assert(!pVmxTransient->ExitInstrInfo.Inv.u1Cleared0); 14582 14583 uint8_t const iGReg = pVmxTransient->ExitInstrInfo.VmreadVmwrite.iReg2; 14584 Assert(iGReg < RT_ELEMENTS(pVCpu->cpum.GstCtx.aGRegs)); 14585 uint64_t const uType = CPUMIsGuestIn64BitCode(pVCpu) ? pVCpu->cpum.GstCtx.aGRegs[iGReg].u64 14586 : pVCpu->cpum.GstCtx.aGRegs[iGReg].u32; 14587 14588 RTGCPTR GCPtrDesc; 14589 HMVMX_DECODE_MEM_OPERAND(pVCpu, pVmxTransient->ExitInstrInfo.u, pVmxTransient->uExitQual, VMXMEMACCESS_READ, &GCPtrDesc); 14590 14591 VBOXSTRICTRC rcStrict = IEMExecDecodedInvpcid(pVCpu, pVmxTransient->cbExitInstr, pVmxTransient->ExitInstrInfo.Inv.iSegReg, 14592 GCPtrDesc, uType); 14593 if (RT_LIKELY(rcStrict == VINF_SUCCESS)) 14594 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RFLAGS); 14595 else if (rcStrict == VINF_IEM_RAISED_XCPT) 14596 { 14597 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_RAISED_XCPT_MASK); 14598 rcStrict = VINF_SUCCESS; 14599 } 14600 return rcStrict; 14601 #endif 14570 14602 } 14571 14603
Note:
See TracChangeset
for help on using the changeset viewer.