diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
|---|---|---|
| committer | <> | 2014-05-08 15:03:54 +0000 |
| commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
| tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/VMM/include/EMHandleRCTmpl.h | |
| parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
| download | VirtualBox-master.tar.gz | |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/VMM/include/EMHandleRCTmpl.h')
| -rw-r--r-- | src/VBox/VMM/include/EMHandleRCTmpl.h | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/src/VBox/VMM/include/EMHandleRCTmpl.h b/src/VBox/VMM/include/EMHandleRCTmpl.h index 306e434c..ef54f34b 100644 --- a/src/VBox/VMM/include/EMHandleRCTmpl.h +++ b/src/VBox/VMM/include/EMHandleRCTmpl.h @@ -1,10 +1,10 @@ /* $Id: EMHandleRCTmpl.h $ */ /** @file - * EM - emR3[Raw|Hwaccm]HandleRC template. + * EM - emR3[Raw|Hm]HandleRC template. */ /* - * Copyright (C) 2006-2009 Oracle Corporation + * Copyright (C) 2006-2013 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -18,8 +18,13 @@ #ifndef ___EMHandleRCTmpl_h #define ___EMHandleRCTmpl_h +#if defined(EMHANDLERC_WITH_PATM) && defined(EMHANDLERC_WITH_HM) +# error "Only one define" +#endif + + /** - * Process a subset of the raw-mode and hwaccm return codes. + * Process a subset of the raw-mode and hm return codes. * * Since we have to share this with raw-mode single stepping, this inline * function has been created to avoid code duplication. @@ -34,8 +39,8 @@ */ #ifdef EMHANDLERC_WITH_PATM int emR3RawHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) -#elif defined(EMHANDLERC_WITH_HWACCM) -int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) +#elif defined(EMHANDLERC_WITH_HM) +int emR3HmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) #endif { switch (rc) @@ -46,7 +51,7 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) case VINF_SUCCESS: break; case VINF_EM_RESCHEDULE_RAW: - case VINF_EM_RESCHEDULE_HWACC: + case VINF_EM_RESCHEDULE_HM: case VINF_EM_RAW_INTERRUPT: case VINF_EM_RAW_TO_R3: case VINF_EM_RAW_TIMER_PENDING: @@ -81,7 +86,7 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) */ case VINF_PATM_PATCH_TRAP_PF: case VINF_PATM_PATCH_INT3: - rc = emR3PatchTrap(pVM, pVCpu, pCtx, rc); + rc = emR3RawPatchTrap(pVM, pVCpu, pCtx, rc); break; case VINF_PATM_DUPLICATE_FUNCTION: @@ -130,7 +135,7 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) * do here is to execute the pending forced actions. */ case VINF_PGM_SYNC_CR3: - AssertMsg(VMCPU_FF_ISPENDING(pVCpu, VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL), + AssertMsg(VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL), ("VINF_PGM_SYNC_CR3 and no VMCPU_FF_PGM_SYNC_CR3*!\n")); rc = VINF_SUCCESS; break; @@ -218,16 +223,16 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) rc = emR3ExecuteInstruction(pVM, pVCpu, "MMIO"); break; -#ifdef EMHANDLERC_WITH_HWACCM +#ifdef EMHANDLERC_WITH_HM /* * (MM)IO intensive code block detected; fall back to the recompiler for better performance */ case VINF_EM_RAW_EMULATE_IO_BLOCK: - rc = HWACCMR3EmulateIoBlock(pVM, pCtx); + rc = HMR3EmulateIoBlock(pVM, pCtx); break; - case VINF_EM_HWACCM_PATCH_TPR_INSTR: - rc = HWACCMR3PatchTprInstr(pVM, pVCpu, pCtx); + case VINF_EM_HM_PATCH_TPR_INSTR: + rc = HMR3PatchTprInstr(pVM, pVCpu, pCtx); break; #endif @@ -288,7 +293,7 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) * Conflict in GDT, resync and continue. */ case VINF_SELM_SYNC_GDT: - AssertMsg(VMCPU_FF_ISPENDING(pVCpu, VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_SELM_SYNC_TSS), + AssertMsg(VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_SELM_SYNC_TSS), ("VINF_SELM_SYNC_GDT without VMCPU_FF_SELM_SYNC_GDT/LDT/TSS!\n")); rc = VINF_SUCCESS; break; @@ -327,26 +332,30 @@ int emR3HwaccmHandleRC(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, int rc) case VERR_TRPM_DONT_PANIC: case VERR_TRPM_PANIC: case VERR_VMM_RING0_ASSERTION: + case VINF_EM_TRIPLE_FAULT: case VERR_VMM_HYPER_CR3_MISMATCH: case VERR_VMM_RING3_CALL_DISABLED: case VERR_IEM_INSTR_NOT_IMPLEMENTED: case VERR_IEM_ASPECT_NOT_IMPLEMENTED: break; -#ifdef EMHANDLERC_WITH_HWACCM +#ifdef EMHANDLERC_WITH_HM /* - * Up a level, after HwAccM have done some release logging. + * Up a level, after Hm have done some release logging. */ case VERR_VMX_INVALID_VMCS_FIELD: case VERR_VMX_INVALID_VMCS_PTR: case VERR_VMX_INVALID_VMXON_PTR: - case VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_CODE: + case VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE: case VERR_VMX_UNEXPECTED_EXCEPTION: - case VERR_VMX_UNEXPECTED_EXIT_CODE: + case VERR_VMX_UNEXPECTED_EXIT: case VERR_VMX_INVALID_GUEST_STATE: case VERR_VMX_UNABLE_TO_START_VM: - case VERR_VMX_UNABLE_TO_RESUME_VM: - HWACCMR3CheckError(pVM, rc); + case VERR_SVM_UNKNOWN_EXIT: + case VERR_SVM_UNEXPECTED_EXIT: + case VERR_SVM_UNEXPECTED_PATCH_TYPE: + case VERR_SVM_UNEXPECTED_XCPT_EXIT: + HMR3CheckError(pVM, rc); break; /* Up a level; fatal */ |
