Changeset 71856 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Apr 13, 2018 6:32:02 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 122074
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r71843 r71856 5044 5044 } 5045 5045 5046 5047 5046 case SVM_EXIT_MONITOR: 5048 5047 { … … 5117 5116 } 5118 5117 5119 case SVM_EXIT_ EXCEPTION_14: /* X86_XCPT_PF */5118 case SVM_EXIT_XCPT_PF: 5120 5119 { 5121 5120 PVM pVM = pVCpu->CTX_SUFF(pVM); … … 5136 5135 } 5137 5136 5138 case SVM_EXIT_ EXCEPTION_6: /* X86_XCPT_UD */5137 case SVM_EXIT_XCPT_UD: 5139 5138 { 5140 5139 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_UD)) … … 5144 5143 } 5145 5144 5146 case SVM_EXIT_ EXCEPTION_16: /* X86_XCPT_MF */5145 case SVM_EXIT_XCPT_MF: 5147 5146 { 5148 5147 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_MF)) … … 5151 5150 } 5152 5151 5153 case SVM_EXIT_ EXCEPTION_1: /* X86_XCPT_DB */5152 case SVM_EXIT_XCPT_DB: 5154 5153 { 5155 5154 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_DB)) … … 5158 5157 } 5159 5158 5160 case SVM_EXIT_ EXCEPTION_17: /* X86_XCPT_AC */5159 case SVM_EXIT_XCPT_AC: 5161 5160 { 5162 5161 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_AC)) … … 5165 5164 } 5166 5165 5167 case SVM_EXIT_ EXCEPTION_3: /* X86_XCPT_BP */5166 case SVM_EXIT_XCPT_BP: 5168 5167 { 5169 5168 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_BP)) … … 5218 5217 case SVM_EXIT_INTR: 5219 5218 case SVM_EXIT_NMI: 5219 case SVM_EXIT_XCPT_NMI: /* Shouldn't ever happen, SVM_EXIT_NMI is used instead. */ 5220 5220 case SVM_EXIT_SMI: 5221 5221 { … … 5291 5291 } 5292 5292 5293 /* The exceptions not handled here are already handled individually above (as they occur more frequently). */ 5294 case SVM_EXIT_EXCEPTION_0: /*case SVM_EXIT_EXCEPTION_1:*/ case SVM_EXIT_EXCEPTION_2: 5295 /*case SVM_EXIT_EXCEPTION_3:*/ case SVM_EXIT_EXCEPTION_4: case SVM_EXIT_EXCEPTION_5: 5296 /*case SVM_EXIT_EXCEPTION_6:*/ case SVM_EXIT_EXCEPTION_7: case SVM_EXIT_EXCEPTION_8: 5297 case SVM_EXIT_EXCEPTION_9: case SVM_EXIT_EXCEPTION_10: case SVM_EXIT_EXCEPTION_11: 5298 case SVM_EXIT_EXCEPTION_12: case SVM_EXIT_EXCEPTION_13: /*case SVM_EXIT_EXCEPTION_14:*/ 5299 case SVM_EXIT_EXCEPTION_15: /*case SVM_EXIT_EXCEPTION_16:*/ /*case SVM_EXIT_EXCEPTION_17:*/ 5300 case SVM_EXIT_EXCEPTION_18: case SVM_EXIT_EXCEPTION_19: case SVM_EXIT_EXCEPTION_20: 5301 case SVM_EXIT_EXCEPTION_21: case SVM_EXIT_EXCEPTION_22: case SVM_EXIT_EXCEPTION_23: 5302 case SVM_EXIT_EXCEPTION_24: case SVM_EXIT_EXCEPTION_25: case SVM_EXIT_EXCEPTION_26: 5303 case SVM_EXIT_EXCEPTION_27: case SVM_EXIT_EXCEPTION_28: case SVM_EXIT_EXCEPTION_29: 5304 case SVM_EXIT_EXCEPTION_30: case SVM_EXIT_EXCEPTION_31: 5293 case SVM_EXIT_XCPT_0: /* #DE */ 5294 /* SVM_EXIT_XCPT_1: */ /* #DB - Handled above. */ 5295 /* SVM_EXIT_XCPT_2: */ /* #NMI - Handled above. */ 5296 /* SVM_EXIT_XCPT_3: */ /* #BP - Handled above. */ 5297 case SVM_EXIT_XCPT_4: /* #OF */ 5298 case SVM_EXIT_XCPT_5: /* #BR */ 5299 /* SVM_EXIT_XCPT_6: */ /* #UD - Handled above. */ 5300 case SVM_EXIT_XCPT_7: /* #NM */ 5301 case SVM_EXIT_XCPT_8: /* #DF */ 5302 case SVM_EXIT_XCPT_9: /* #CO_SEG_OVERRUN */ 5303 case SVM_EXIT_XCPT_10: /* #TS */ 5304 case SVM_EXIT_XCPT_11: /* #NP */ 5305 case SVM_EXIT_XCPT_12: /* #SS */ 5306 case SVM_EXIT_XCPT_13: /* #GP */ 5307 /* SVM_EXIT_XCPT_14: */ /* #PF - Handled above. */ 5308 case SVM_EXIT_XCPT_15: /* Reserved. */ 5309 /* SVM_EXIT_XCPT_16: */ /* #MF - Handled above. */ 5310 /* SVM_EXIT_XCPT_17: */ /* #AC - Handled above. */ 5311 case SVM_EXIT_XCPT_18: /* #MC */ 5312 case SVM_EXIT_XCPT_19: /* #XF */ 5313 case SVM_EXIT_XCPT_20: case SVM_EXIT_XCPT_21: case SVM_EXIT_XCPT_22: case SVM_EXIT_XCPT_23: 5314 case SVM_EXIT_XCPT_24: case SVM_EXIT_XCPT_25: case SVM_EXIT_XCPT_26: case SVM_EXIT_XCPT_27: 5315 case SVM_EXIT_XCPT_28: case SVM_EXIT_XCPT_29: case SVM_EXIT_XCPT_30: case SVM_EXIT_XCPT_31: 5305 5316 { 5306 uint8_t const uVector = uExitCode - SVM_EXIT_ EXCEPTION_0;5317 uint8_t const uVector = uExitCode - SVM_EXIT_XCPT_0; 5307 5318 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, uVector)) 5308 5319 return HM_SVM_VMEXIT_NESTED(pVCpu, uExitCode, uExitInfo1, uExitInfo2); … … 5410 5421 Assert(pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging); 5411 5422 if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_PF)) 5412 return HM_SVM_VMEXIT_NESTED(pVCpu, SVM_EXIT_ EXCEPTION_14, RT_LO_U32(uExitInfo1), uExitInfo2);5423 return HM_SVM_VMEXIT_NESTED(pVCpu, SVM_EXIT_XCPT_14, RT_LO_U32(uExitInfo1), uExitInfo2); 5413 5424 hmR0SvmSetPendingXcptPF(pVCpu, pCtx, RT_LO_U32(uExitInfo1), uExitInfo2); 5414 5425 return VINF_SUCCESS; … … 5473 5484 return hmR0SvmExitCpuid(pVCpu, pCtx, pSvmTransient); 5474 5485 5475 case SVM_EXIT_ EXCEPTION_14: /* X86_XCPT_PF */5486 case SVM_EXIT_XCPT_14: /* X86_XCPT_PF */ 5476 5487 return hmR0SvmExitXcptPF(pVCpu, pCtx, pSvmTransient); 5477 5488 5478 case SVM_EXIT_ EXCEPTION_6: /* X86_XCPT_UD */5489 case SVM_EXIT_XCPT_6: /* X86_XCPT_UD */ 5479 5490 return hmR0SvmExitXcptUD(pVCpu, pCtx, pSvmTransient); 5480 5491 5481 case SVM_EXIT_ EXCEPTION_16: /* X86_XCPT_MF */5492 case SVM_EXIT_XCPT_16: /* X86_XCPT_MF */ 5482 5493 return hmR0SvmExitXcptMF(pVCpu, pCtx, pSvmTransient); 5483 5494 5484 case SVM_EXIT_ EXCEPTION_1: /* X86_XCPT_DB */5495 case SVM_EXIT_XCPT_1: /* X86_XCPT_DB */ 5485 5496 return hmR0SvmExitXcptDB(pVCpu, pCtx, pSvmTransient); 5486 5497 5487 case SVM_EXIT_ EXCEPTION_17: /* X86_XCPT_AC */5498 case SVM_EXIT_XCPT_17: /* X86_XCPT_AC */ 5488 5499 return hmR0SvmExitXcptAC(pVCpu, pCtx, pSvmTransient); 5489 5500 5490 case SVM_EXIT_ EXCEPTION_3: /* X86_XCPT_BP */5501 case SVM_EXIT_XCPT_3: /* X86_XCPT_BP */ 5491 5502 return hmR0SvmExitXcptBP(pVCpu, pCtx, pSvmTransient); 5492 5503 … … 5530 5541 case SVM_EXIT_INTR: 5531 5542 case SVM_EXIT_NMI: 5543 case SVM_EXIT_XCPT_NMI: /* Shouldn't ever happen, SVM_EXIT_NMI is used instead. */ 5532 5544 return hmR0SvmExitIntr(pVCpu, pCtx, pSvmTransient); 5533 5545 … … 5608 5620 5609 5621 #ifdef HMSVM_ALWAYS_TRAP_ALL_XCPTS 5610 case SVM_EXIT_EXCEPTION_0: /* X86_XCPT_DE */ 5611 /* SVM_EXIT_EXCEPTION_1: */ /* X86_XCPT_DB - Handled above. */ 5612 case SVM_EXIT_EXCEPTION_2: /* X86_XCPT_NMI */ 5613 /* SVM_EXIT_EXCEPTION_3: */ /* X86_XCPT_BP - Handled above. */ 5614 case SVM_EXIT_EXCEPTION_4: /* X86_XCPT_OF */ 5615 case SVM_EXIT_EXCEPTION_5: /* X86_XCPT_BR */ 5616 /* SVM_EXIT_EXCEPTION_6: */ /* X86_XCPT_UD - Handled above. */ 5617 case SVM_EXIT_EXCEPTION_7: /* X86_XCPT_NM */ 5618 case SVM_EXIT_EXCEPTION_8: /* X86_XCPT_DF */ 5619 case SVM_EXIT_EXCEPTION_9: /* X86_XCPT_CO_SEG_OVERRUN */ 5620 case SVM_EXIT_EXCEPTION_10: /* X86_XCPT_TS */ 5621 case SVM_EXIT_EXCEPTION_11: /* X86_XCPT_NP */ 5622 case SVM_EXIT_EXCEPTION_12: /* X86_XCPT_SS */ 5623 case SVM_EXIT_EXCEPTION_13: /* X86_XCPT_GP */ 5624 /* SVM_EXIT_EXCEPTION_14: */ /* X86_XCPT_PF - Handled above. */ 5625 case SVM_EXIT_EXCEPTION_15: /* Reserved. */ 5626 /* SVM_EXIT_EXCEPTION_16: */ /* X86_XCPT_MF - Handled above. */ 5627 /* SVM_EXIT_EXCEPTION_17: */ /* X86_XCPT_AC - Handled above. */ 5628 case SVM_EXIT_EXCEPTION_18: /* X86_XCPT_MC */ 5629 case SVM_EXIT_EXCEPTION_19: /* X86_XCPT_XF */ 5630 case SVM_EXIT_EXCEPTION_20: case SVM_EXIT_EXCEPTION_21: case SVM_EXIT_EXCEPTION_22: 5631 case SVM_EXIT_EXCEPTION_23: case SVM_EXIT_EXCEPTION_24: case SVM_EXIT_EXCEPTION_25: 5632 case SVM_EXIT_EXCEPTION_26: case SVM_EXIT_EXCEPTION_27: case SVM_EXIT_EXCEPTION_28: 5633 case SVM_EXIT_EXCEPTION_29: case SVM_EXIT_EXCEPTION_30: case SVM_EXIT_EXCEPTION_31: 5622 case SVM_EXIT_XCPT_0: /* #DE */ 5623 /* SVM_EXIT_XCPT_1: */ /* #DB - Handled above. */ 5624 /* SVM_EXIT_XCPT_2: */ /* #NMI - Handled above. */ 5625 /* SVM_EXIT_XCPT_3: */ /* #BP - Handled above. */ 5626 case SVM_EXIT_XCPT_4: /* #OF */ 5627 case SVM_EXIT_XCPT_5: /* #BR */ 5628 /* SVM_EXIT_XCPT_6: */ /* #UD - Handled above. */ 5629 case SVM_EXIT_XCPT_7: /* #NM */ 5630 case SVM_EXIT_XCPT_8: /* #DF */ 5631 case SVM_EXIT_XCPT_9: /* #CO_SEG_OVERRUN */ 5632 case SVM_EXIT_XCPT_10: /* #TS */ 5633 case SVM_EXIT_XCPT_11: /* #NP */ 5634 case SVM_EXIT_XCPT_12: /* #SS */ 5635 case SVM_EXIT_XCPT_13: /* #GP */ 5636 /* SVM_EXIT_XCPT_14: */ /* #PF - Handled above. */ 5637 case SVM_EXIT_XCPT_15: /* Reserved. */ 5638 /* SVM_EXIT_XCPT_16: */ /* #MF - Handled above. */ 5639 /* SVM_EXIT_XCPT_17: */ /* #AC - Handled above. */ 5640 case SVM_EXIT_XCPT_18: /* #MC */ 5641 case SVM_EXIT_XCPT_19: /* #XF */ 5642 case SVM_EXIT_XCPT_20: case SVM_EXIT_XCPT_21: case SVM_EXIT_XCPT_22: case SVM_EXIT_XCPT_23: 5643 case SVM_EXIT_XCPT_24: case SVM_EXIT_XCPT_25: case SVM_EXIT_XCPT_26: case SVM_EXIT_XCPT_27: 5644 case SVM_EXIT_XCPT_28: case SVM_EXIT_XCPT_29: case SVM_EXIT_XCPT_30: case SVM_EXIT_XCPT_31: 5634 5645 return hmR0SvmExitXcptGeneric(pVCpu, pCtx, pSvmTransient); 5635 5646 #endif /* HMSVM_ALWAYS_TRAP_ALL_XCPTS */ … … 5867 5878 IEMXCPTRAISE enmRaise; 5868 5879 IEMXCPTRAISEINFO fRaiseInfo; 5869 bool const fExitIsHwXcpt = pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0 <= SVM_EXIT_EXCEPTION_31;5880 bool const fExitIsHwXcpt = pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0 <= SVM_EXIT_XCPT_31; 5870 5881 uint8_t const uIdtVector = pVmcb->ctrl.ExitIntInfo.n.u8Vector; 5871 5882 if (fExitIsHwXcpt) 5872 5883 { 5873 uint8_t const uExitVector = pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0;5884 uint8_t const uExitVector = pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0; 5874 5885 uint32_t const fIdtVectorFlags = hmR0SvmGetIemXcptFlags(&pVmcb->ctrl.ExitIntInfo); 5875 5886 uint32_t const fExitVectorFlags = IEM_XCPT_FLAGS_T_CPU_XCPT; … … 5998 6009 if (pVmcb->ctrl.ExitIntInfo.n.u3Type == SVM_EVENT_EXCEPTION) 5999 6010 { 6000 if (pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0 <= SVM_EXIT_EXCEPTION_31)6011 if (pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0 <= SVM_EXIT_XCPT_31) 6001 6012 { 6002 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0);6013 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0); 6003 6014 6004 6015 #ifdef VBOX_STRICT … … 6060 6071 fReflectingNmi = RT_BOOL(pVmcb->ctrl.ExitIntInfo.n.u3Type == SVM_EVENT_NMI); 6061 6072 6062 if (pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0 <= SVM_EXIT_EXCEPTION_31)6073 if (pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0 <= SVM_EXIT_XCPT_31) 6063 6074 { 6064 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_ EXCEPTION_0);6075 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0); 6065 6076 if (uExitVector == X86_XCPT_PF) 6066 6077 { … … 7272 7283 7273 7284 /** 7274 * \#VMEXIT handler for page-fault exceptions (SVM_EXIT_ EXCEPTION_14).7285 * \#VMEXIT handler for page-fault exceptions (SVM_EXIT_XCPT_14). 7275 7286 * Conditional \#VMEXIT. 7276 7287 */ … … 7393 7404 7394 7405 /** 7395 * \#VMEXIT handler for undefined opcode (SVM_EXIT_ EXCEPTION_6).7406 * \#VMEXIT handler for undefined opcode (SVM_EXIT_XCPT_6). 7396 7407 * Conditional \#VMEXIT. 7397 7408 */ … … 7438 7449 7439 7450 /** 7440 * \#VMEXIT handler for math-fault exceptions (SVM_EXIT_ EXCEPTION_16).7451 * \#VMEXIT handler for math-fault exceptions (SVM_EXIT_XCPT_16). 7441 7452 * Conditional \#VMEXIT. 7442 7453 */ … … 7475 7486 7476 7487 /** 7477 * \#VMEXIT handler for debug exceptions (SVM_EXIT_ EXCEPTION_1). Conditional7488 * \#VMEXIT handler for debug exceptions (SVM_EXIT_XCPT_1). Conditional 7478 7489 * \#VMEXIT. 7479 7490 */ … … 7528 7539 7529 7540 /** 7530 * \#VMEXIT handler for alignment check exceptions (SVM_EXIT_ EXCEPTION_17).7541 * \#VMEXIT handler for alignment check exceptions (SVM_EXIT_XCPT_17). 7531 7542 * Conditional \#VMEXIT. 7532 7543 */ … … 7551 7562 7552 7563 /** 7553 * \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_ EXCEPTION_3).7564 * \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_XCPT_3). 7554 7565 * Conditional \#VMEXIT. 7555 7566 */ … … 7587 7598 7588 7599 PCSVMVMCB pVmcb = hmR0SvmGetCurrentVmcb(pVCpu, pCtx); 7589 uint8_t const uVector = pVmcb->ctrl.u64ExitCode - SVM_EXIT_ EXCEPTION_0;7600 uint8_t const uVector = pVmcb->ctrl.u64ExitCode - SVM_EXIT_XCPT_0; 7590 7601 uint32_t const uErrCode = pVmcb->ctrl.u64ExitInfo1; 7591 7602 Assert(pSvmTransient->u64ExitCode == pVmcb->ctrl.u64ExitCode); … … 7623 7634 /** 7624 7635 * \#VMEXIT handler for #PF occuring while in nested-guest execution 7625 * (SVM_EXIT_ EXCEPTION_14). Conditional \#VMEXIT.7636 * (SVM_EXIT_XCPT_14). Conditional \#VMEXIT. 7626 7637 */ 7627 7638 HMSVM_EXIT_DECL hmR0SvmExitXcptPFNested(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient) … … 7826 7837 7827 7838 /** 7828 * Nested-guest \#VMEXIT handler for debug exceptions (SVM_EXIT_ EXCEPTION_1).7839 * Nested-guest \#VMEXIT handler for debug exceptions (SVM_EXIT_XCPT_1). 7829 7840 * Unconditional \#VMEXIT. 7830 7841 */ … … 7849 7860 7850 7861 /** 7851 * Nested-guest \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_ EXCEPTION_3).7862 * Nested-guest \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_XCPT_3). 7852 7863 * Conditional \#VMEXIT. 7853 7864 */
Note:
See TracChangeset
for help on using the changeset viewer.