Changeset 73053 in vbox
- Timestamp:
- Jul 11, 2018 3:29:16 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123613
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r73052 r73053 6545 6545 if (fMovCRx) 6546 6546 { 6547 HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK); 6547 HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK | CPUMCTX_EXTRN_CR3 | CPUMCTX_EXTRN_CR4 6548 | CPUMCTX_EXTRN_APIC_TPR); 6548 6549 uint8_t const cbInstr = pVmcb->ctrl.u64NextRIP - pCtx->rip; 6549 6550 uint8_t const iCrReg = pSvmTransient->u64ExitCode - SVM_EXIT_READ_CR0; … … 6556 6557 } 6557 6558 6558 HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, HMSVM_CPUMCTX_EXTRN_ALL); 6559 VBOXSTRICTRC rc2 = EMInterpretInstruction(pVCpu, CPUMCTX2CORE(pCtx), 0 /* pvFault */); 6560 int rc = VBOXSTRICTRC_VAL(rc2); 6561 AssertMsg(rc == VINF_SUCCESS || rc == VERR_EM_INTERPRETER || rc == VINF_PGM_CHANGE_MODE || rc == VINF_PGM_SYNC_CR3, 6562 ("hmR0SvmExitReadCRx: EMInterpretInstruction failed rc=%Rrc\n", rc)); 6559 HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK); 6560 VBOXSTRICTRC rcStrict = IEMExecOne(pVCpu); 6561 AssertMsg( rcStrict == VINF_SUCCESS 6562 || rcStrict == VINF_PGM_CHANGE_MODE 6563 || rcStrict == VINF_PGM_SYNC_CR3 6564 || rcStrict == VINF_IEM_RAISED_XCPT, 6565 ("hmR0SvmExitReadCRx: IEMExecOne failed rc=%Rrc\n", VBOXSTRICTRC_VAL(rcStrict))); 6563 6566 Assert((pSvmTransient->u64ExitCode - SVM_EXIT_READ_CR0) <= 15); 6564 HMSVM_CHECK_SINGLE_STEP(pVCpu, rc); 6565 return rc; 6567 if (rcStrict == VINF_IEM_RAISED_XCPT) 6568 { 6569 rcStrict = VINF_SUCCESS; 6570 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_RAISED_XCPT_MASK); 6571 } 6572 HMSVM_CHECK_SINGLE_STEP(pVCpu, rcStrict); 6573 return VBOXSTRICTRC_TODO(rcStrict); 6566 6574 } 6567 6575
Note:
See TracChangeset
for help on using the changeset viewer.