VirtualBox

Changeset 71856 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Apr 13, 2018 6:32:02 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
122074
Message:

VMM/HMSVM: Clean up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r71843 r71856  
    50445044        }
    50455045
    5046 
    50475046        case SVM_EXIT_MONITOR:
    50485047        {
     
    51175116        }
    51185117
    5119         case SVM_EXIT_EXCEPTION_14:  /* X86_XCPT_PF */
     5118        case SVM_EXIT_XCPT_PF:
    51205119        {
    51215120            PVM pVM = pVCpu->CTX_SUFF(pVM);
     
    51365135        }
    51375136
    5138         case SVM_EXIT_EXCEPTION_6:   /* X86_XCPT_UD */
     5137        case SVM_EXIT_XCPT_UD:
    51395138        {
    51405139            if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_UD))
     
    51445143        }
    51455144
    5146         case SVM_EXIT_EXCEPTION_16:  /* X86_XCPT_MF */
     5145        case SVM_EXIT_XCPT_MF:
    51475146        {
    51485147            if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_MF))
     
    51515150        }
    51525151
    5153         case SVM_EXIT_EXCEPTION_1:   /* X86_XCPT_DB */
     5152        case SVM_EXIT_XCPT_DB:
    51545153        {
    51555154            if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_DB))
     
    51585157        }
    51595158
    5160         case SVM_EXIT_EXCEPTION_17:  /* X86_XCPT_AC */
     5159        case SVM_EXIT_XCPT_AC:
    51615160        {
    51625161            if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_AC))
     
    51655164        }
    51665165
    5167         case SVM_EXIT_EXCEPTION_3:   /* X86_XCPT_BP */
     5166        case SVM_EXIT_XCPT_BP:
    51685167        {
    51695168            if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, X86_XCPT_BP))
     
    52185217        case SVM_EXIT_INTR:
    52195218        case SVM_EXIT_NMI:
     5219        case SVM_EXIT_XCPT_NMI: /* Shouldn't ever happen, SVM_EXIT_NMI is used instead. */
    52205220        case SVM_EXIT_SMI:
    52215221        {
     
    52915291                }
    52925292
    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:
    53055316                {
    5306                     uint8_t const uVector = uExitCode - SVM_EXIT_EXCEPTION_0;
     5317                    uint8_t const uVector = uExitCode - SVM_EXIT_XCPT_0;
    53075318                    if (HMIsGuestSvmXcptInterceptSet(pVCpu, pCtx, uVector))
    53085319                        return HM_SVM_VMEXIT_NESTED(pVCpu, uExitCode, uExitInfo1, uExitInfo2);
     
    54105421                    Assert(pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging);
    54115422                    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);
    54135424                    hmR0SvmSetPendingXcptPF(pVCpu, pCtx, RT_LO_U32(uExitInfo1), uExitInfo2);
    54145425                    return VINF_SUCCESS;
     
    54735484            return hmR0SvmExitCpuid(pVCpu, pCtx, pSvmTransient);
    54745485
    5475         case SVM_EXIT_EXCEPTION_14:  /* X86_XCPT_PF */
     5486        case SVM_EXIT_XCPT_14:  /* X86_XCPT_PF */
    54765487            return hmR0SvmExitXcptPF(pVCpu, pCtx, pSvmTransient);
    54775488
    5478         case SVM_EXIT_EXCEPTION_6:   /* X86_XCPT_UD */
     5489        case SVM_EXIT_XCPT_6:   /* X86_XCPT_UD */
    54795490            return hmR0SvmExitXcptUD(pVCpu, pCtx, pSvmTransient);
    54805491
    5481         case SVM_EXIT_EXCEPTION_16:  /* X86_XCPT_MF */
     5492        case SVM_EXIT_XCPT_16:  /* X86_XCPT_MF */
    54825493            return hmR0SvmExitXcptMF(pVCpu, pCtx, pSvmTransient);
    54835494
    5484         case SVM_EXIT_EXCEPTION_1:   /* X86_XCPT_DB */
     5495        case SVM_EXIT_XCPT_1:   /* X86_XCPT_DB */
    54855496            return hmR0SvmExitXcptDB(pVCpu, pCtx, pSvmTransient);
    54865497
    5487         case SVM_EXIT_EXCEPTION_17:  /* X86_XCPT_AC */
     5498        case SVM_EXIT_XCPT_17:  /* X86_XCPT_AC */
    54885499            return hmR0SvmExitXcptAC(pVCpu, pCtx, pSvmTransient);
    54895500
    5490         case SVM_EXIT_EXCEPTION_3:   /* X86_XCPT_BP */
     5501        case SVM_EXIT_XCPT_3:   /* X86_XCPT_BP */
    54915502            return hmR0SvmExitXcptBP(pVCpu, pCtx, pSvmTransient);
    54925503
     
    55305541        case SVM_EXIT_INTR:
    55315542        case SVM_EXIT_NMI:
     5543        case SVM_EXIT_XCPT_NMI: /* Shouldn't ever happen, SVM_EXIT_NMI is used instead. */
    55325544            return hmR0SvmExitIntr(pVCpu, pCtx, pSvmTransient);
    55335545
     
    56085620
    56095621#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:
    56345645                    return hmR0SvmExitXcptGeneric(pVCpu, pCtx, pSvmTransient);
    56355646#endif  /* HMSVM_ALWAYS_TRAP_ALL_XCPTS */
     
    58675878        IEMXCPTRAISE     enmRaise;
    58685879        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;
    58705881        uint8_t const    uIdtVector     = pVmcb->ctrl.ExitIntInfo.n.u8Vector;
    58715882        if (fExitIsHwXcpt)
    58725883        {
    5873             uint8_t  const uExitVector      = pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0;
     5884            uint8_t  const uExitVector      = pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0;
    58745885            uint32_t const fIdtVectorFlags  = hmR0SvmGetIemXcptFlags(&pVmcb->ctrl.ExitIntInfo);
    58755886            uint32_t const fExitVectorFlags = IEM_XCPT_FLAGS_T_CPU_XCPT;
     
    59986009        if (pVmcb->ctrl.ExitIntInfo.n.u3Type == SVM_EVENT_EXCEPTION)
    59996010        {
    6000             if (pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0 <= SVM_EXIT_EXCEPTION_31)
     6011            if (pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0 <= SVM_EXIT_XCPT_31)
    60016012            {
    6002                 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0);
     6013                uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0);
    60036014
    60046015#ifdef VBOX_STRICT
     
    60606071            fReflectingNmi = RT_BOOL(pVmcb->ctrl.ExitIntInfo.n.u3Type == SVM_EVENT_NMI);
    60616072
    6062             if (pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0 <= SVM_EXIT_EXCEPTION_31)
     6073            if (pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0 <= SVM_EXIT_XCPT_31)
    60636074            {
    6064                 uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0);
     6075                uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_XCPT_0);
    60656076                if (uExitVector == X86_XCPT_PF)
    60666077                {
     
    72727283
    72737284/**
    7274  * \#VMEXIT handler for page-fault exceptions (SVM_EXIT_EXCEPTION_14).
     7285 * \#VMEXIT handler for page-fault exceptions (SVM_EXIT_XCPT_14).
    72757286 * Conditional \#VMEXIT.
    72767287 */
     
    73937404
    73947405/**
    7395  * \#VMEXIT handler for undefined opcode (SVM_EXIT_EXCEPTION_6).
     7406 * \#VMEXIT handler for undefined opcode (SVM_EXIT_XCPT_6).
    73967407 * Conditional \#VMEXIT.
    73977408 */
     
    74387449
    74397450/**
    7440  * \#VMEXIT handler for math-fault exceptions (SVM_EXIT_EXCEPTION_16).
     7451 * \#VMEXIT handler for math-fault exceptions (SVM_EXIT_XCPT_16).
    74417452 * Conditional \#VMEXIT.
    74427453 */
     
    74757486
    74767487/**
    7477  * \#VMEXIT handler for debug exceptions (SVM_EXIT_EXCEPTION_1). Conditional
     7488 * \#VMEXIT handler for debug exceptions (SVM_EXIT_XCPT_1). Conditional
    74787489 * \#VMEXIT.
    74797490 */
     
    75287539
    75297540/**
    7530  * \#VMEXIT handler for alignment check exceptions (SVM_EXIT_EXCEPTION_17).
     7541 * \#VMEXIT handler for alignment check exceptions (SVM_EXIT_XCPT_17).
    75317542 * Conditional \#VMEXIT.
    75327543 */
     
    75517562
    75527563/**
    7553  * \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_EXCEPTION_3).
     7564 * \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_XCPT_3).
    75547565 * Conditional \#VMEXIT.
    75557566 */
     
    75877598
    75887599    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;
    75907601    uint32_t const uErrCode = pVmcb->ctrl.u64ExitInfo1;
    75917602    Assert(pSvmTransient->u64ExitCode == pVmcb->ctrl.u64ExitCode);
     
    76237634/**
    76247635 * \#VMEXIT handler for #PF occuring while in nested-guest execution
    7625  * (SVM_EXIT_EXCEPTION_14). Conditional \#VMEXIT.
     7636 * (SVM_EXIT_XCPT_14). Conditional \#VMEXIT.
    76267637 */
    76277638HMSVM_EXIT_DECL hmR0SvmExitXcptPFNested(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient)
     
    78267837
    78277838/**
    7828  * Nested-guest \#VMEXIT handler for debug exceptions (SVM_EXIT_EXCEPTION_1).
     7839 * Nested-guest \#VMEXIT handler for debug exceptions (SVM_EXIT_XCPT_1).
    78297840 * Unconditional \#VMEXIT.
    78307841 */
     
    78497860
    78507861/**
    7851  * Nested-guest \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_EXCEPTION_3).
     7862 * Nested-guest \#VMEXIT handler for breakpoint exceptions (SVM_EXIT_XCPT_3).
    78527863 * Conditional \#VMEXIT.
    78537864 */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette