summaryrefslogtreecommitdiff
path: root/src/VBox/VMM/include/EMHandleRCTmpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/VMM/include/EMHandleRCTmpl.h')
-rw-r--r--src/VBox/VMM/include/EMHandleRCTmpl.h47
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 */