Changeset 72634 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Jun 20, 2018 4:08:42 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123137
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/EMHandleRCTmpl.h
r72580 r72634 25 25 26 26 /** 27 * Process a subset of the raw-mode and hmreturn codes.27 * Process a subset of the raw-mode, HM and NEM return codes. 28 28 * 29 29 * Since we have to share this with raw-mode single stepping, this inline … … 35 35 * @param pVM The cross context VM structure. 36 36 * @param pVCpu The cross context virtual CPU structure. 37 * @param pCtx Pointer to the guest CPU context.38 37 * @param rc The return code. 39 38 */ 40 39 #ifdef EMHANDLERC_WITH_PATM 41 int emR3RawHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx,int rc)40 int emR3RawHandleRC(PVM pVM, PVMCPU pVCpu, int rc) 42 41 #elif defined(EMHANDLERC_WITH_HM) || defined(DOXYGEN_RUNNING) 43 int emR3HmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx,int rc)42 int emR3HmHandleRC(PVM pVM, PVMCPU pVCpu, int rc) 44 43 #elif defined(EMHANDLERC_WITH_NEM) 45 int emR3NemHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx,int rc)44 int emR3NemHandleRC(PVM pVM, PVMCPU pVCpu, int rc) 46 45 #endif 47 46 { 48 NOREF(pCtx);49 50 47 switch (rc) 51 48 { … … 77 74 * Got a trap which needs dispatching. 78 75 */ 79 if (PATMR3IsInsidePatchJump(pVM, p Ctx->eip, NULL))76 if (PATMR3IsInsidePatchJump(pVM, pVCpu->cpum.GstCtx.eip, NULL)) 80 77 { 81 78 AssertReleaseMsgFailed(("FATAL ERROR: executing random instruction inside generated patch jump %08X\n", CPUMGetGuestEIP(pVCpu))); … … 91 88 case VINF_PATM_PATCH_TRAP_PF: 92 89 case VINF_PATM_PATCH_INT3: 93 rc = emR3RawPatchTrap(pVM, pVCpu, pCtx,rc);90 rc = emR3RawPatchTrap(pVM, pVCpu, rc); 94 91 break; 95 92 96 93 case VINF_PATM_DUPLICATE_FUNCTION: 97 Assert(PATMIsPatchGCAddr(pVM, p Ctx->eip));98 rc = PATMR3DuplicateFunctionRequest(pVM, pCtx);94 Assert(PATMIsPatchGCAddr(pVM, pVCpu->cpum.GstCtx.eip)); 95 rc = PATMR3DuplicateFunctionRequest(pVM, &pVCpu->cpum.GstCtx); 99 96 AssertRC(rc); 100 97 rc = VINF_SUCCESS; … … 118 115 */ 119 116 case VINF_PATM_HC_MMIO_PATCH_READ: 120 rc = PATMR3InstallPatch(pVM, SELMToFlat(pVM, DISSELREG_CS, CPUMCTX2CORE( pCtx), pCtx->eip),117 rc = PATMR3InstallPatch(pVM, SELMToFlat(pVM, DISSELREG_CS, CPUMCTX2CORE(&pVCpu->cpum.GstCtx), pVCpu->cpum.GstCtx.eip), 121 118 PATMFL_MMIO_ACCESS 122 119 | (CPUMGetGuestCodeBits(pVCpu) == 32 ? PATMFL_CODE32 : 0)); … … 167 164 case VINF_PGM_CHANGE_MODE: 168 165 CPUM_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR3 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_EFER); 169 rc = PGMChangeMode(pVCpu, p Ctx->cr0, pCtx->cr4, pCtx->msrEFER);166 rc = PGMChangeMode(pVCpu, pVCpu->cpum.GstCtx.cr0, pVCpu->cpum.GstCtx.cr4, pVCpu->cpum.GstCtx.msrEFER); 170 167 if (rc == VINF_SUCCESS) 171 168 rc = VINF_EM_RESCHEDULE; … … 188 185 case VINF_EM_RAW_RING_SWITCH_INT: 189 186 Assert(TRPMHasTrap(pVCpu)); 190 Assert(!PATMIsPatchGCAddr(pVM, p Ctx->eip));187 Assert(!PATMIsPatchGCAddr(pVM, pVCpu->cpum.GstCtx.eip)); 191 188 192 189 if (TRPMHasTrap(pVCpu)) … … 260 257 */ 261 258 case VINF_EM_RAW_EMULATE_IO_BLOCK: 262 rc = HMR3EmulateIoBlock(pVM, pCtx);259 rc = HMR3EmulateIoBlock(pVM, &pVCpu->cpum.GstCtx); 263 260 break; 264 261 265 262 case VINF_EM_HM_PATCH_TPR_INSTR: 266 rc = HMR3PatchTprInstr(pVM, pVCpu, pCtx);263 rc = HMR3PatchTprInstr(pVM, pVCpu, &pVCpu->cpum.GstCtx); 267 264 break; 268 265 #endif … … 313 310 case VINF_EM_RAW_IRET_TRAP: 314 311 /* We will not go to the recompiler if EIP points to patch code. */ 315 if (PATMIsPatchGCAddr(pVM, p Ctx->eip))312 if (PATMIsPatchGCAddr(pVM, pVCpu->cpum.GstCtx.eip)) 316 313 { 317 p Ctx->eip = PATMR3PatchToGCPtr(pVM, (RTGCPTR)pCtx->eip, 0);314 pVCpu->cpum.GstCtx.eip = PATMR3PatchToGCPtr(pVM, (RTGCPTR)pVCpu->cpum.GstCtx.eip, 0); 318 315 } 319 316 LogFlow(("emR3RawHandleRC: %Rrc -> %Rrc\n", rc, VINF_EM_RESCHEDULE_REM)); -
trunk/src/VBox/VMM/include/EMInternal.h
r72583 r72634 399 399 RTR3PTR R3PtrPaddingNoRaw; 400 400 #endif 401 402 /** Pointer to the guest CPUM state. (R3 Ptr) 403 * @deprecated Use pVCpu->cpum.GstCtx! */ 404 R3PTRTYPE(PCPUMCTX) pCtx; 405 401 RTR3PTR R3PtrNullPadding; /**< Used to be pCtx. */ 406 402 #if GC_ARCH_BITS == 64 407 403 RTGCPTR aPadding1; … … 550 546 /** @} */ 551 547 552 int emR3InitDbg(PVM pVM); 553 554 int emR3HmExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 555 VBOXSTRICTRC emR3NemExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 556 int emR3RawExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 557 558 int emR3RawHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc); 559 int emR3HmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc); 560 int emR3NemHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc); 561 562 EMSTATE emR3Reschedule(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx); 563 int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc); 564 VBOXSTRICTRC emR3HighPriorityPostForcedActions(PVM pVM, PVMCPU pVCpu, VBOXSTRICTRC rc); 565 566 int emR3RawUpdateForceFlag(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc); 567 int emR3RawResumeHyper(PVM pVM, PVMCPU pVCpu); 568 int emR3RawStep(PVM pVM, PVMCPU pVCpu); 569 570 VBOXSTRICTRC emR3NemSingleInstruction(PVM pVM, PVMCPU pVCpu, uint32_t fFlags); 571 572 int emR3SingleStepExecRem(PVM pVM, PVMCPU pVCpu, uint32_t cIterations); 573 574 bool emR3IsExecutionAllowed(PVM pVM, PVMCPU pVCpu); 575 576 VBOXSTRICTRC emR3ExecutePendingIoPortWrite(PVM pVM, PVMCPU pVCpu); 577 VBOXSTRICTRC emR3ExecutePendingIoPortRead(PVM pVM, PVMCPU pVCpu); 548 int emR3InitDbg(PVM pVM); 549 550 int emR3HmExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 551 VBOXSTRICTRC emR3NemExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 552 int emR3RawExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone); 553 554 EMSTATE emR3Reschedule(PVM pVM, PVMCPU pVCpu); 555 int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc); 556 VBOXSTRICTRC emR3HighPriorityPostForcedActions(PVM pVM, PVMCPU pVCpu, VBOXSTRICTRC rc); 557 558 int emR3RawResumeHyper(PVM pVM, PVMCPU pVCpu); 559 int emR3RawStep(PVM pVM, PVMCPU pVCpu); 560 561 VBOXSTRICTRC emR3NemSingleInstruction(PVM pVM, PVMCPU pVCpu, uint32_t fFlags); 562 563 int emR3SingleStepExecRem(PVM pVM, PVMCPU pVCpu, uint32_t cIterations); 564 565 bool emR3IsExecutionAllowed(PVM pVM, PVMCPU pVCpu); 566 567 VBOXSTRICTRC emR3ExecutePendingIoPortWrite(PVM pVM, PVMCPU pVCpu); 568 VBOXSTRICTRC emR3ExecutePendingIoPortRead(PVM pVM, PVMCPU pVCpu); 578 569 579 570 RT_C_DECLS_END -
trunk/src/VBox/VMM/include/NEMInternal.h
r72575 r72634 398 398 void nemR3NativeResetCpu(PVMCPU pVCpu, bool fInitIpi); 399 399 VBOXSTRICTRC nemR3NativeRunGC(PVM pVM, PVMCPU pVCpu); 400 bool nemR3NativeCanExecuteGuest(PVM pVM, PVMCPU pVCpu , PCPUMCTX pCtx);400 bool nemR3NativeCanExecuteGuest(PVM pVM, PVMCPU pVCpu); 401 401 bool nemR3NativeSetSingleInstruction(PVM pVM, PVMCPU pVCpu, bool fEnable); 402 402 void nemR3NativeNotifyFF(PVM pVM, PVMCPU pVCpu, uint32_t fFlags);
Note:
See TracChangeset
for help on using the changeset viewer.