VirtualBox

Changeset 67943 in vbox


Ignore:
Timestamp:
Jul 12, 2017 5:12:51 PM (8 years ago)
Author:
vboxsync
Message:

cpum.h: Fixes crash, follow up fixes to r116929

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.h

    r67938 r67943  
    13261326DECLINLINE(bool) CPUMIsGuestSvmCtrlInterceptSet(PCCPUMCTX pCtx, uint64_t fIntercept)
    13271327{
    1328     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1329     return RT_BOOL(pVmcbCtrl->u64InterceptCtrl & fIntercept);
     1328    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1329    return pVmcb && (pVmcb->ctrl.u64InterceptCtrl & fIntercept);
    13301330}
    13311331
     
    13401340DECLINLINE(bool) CPUMIsGuestSvmReadCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13411341{
    1342     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1343     return RT_BOOL(pVmcbCtrl->u16InterceptRdCRx & (1 << uCr));
     1342    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1343    return pVmcb && (pVmcb->ctrl.u16InterceptRdCRx & (1 << uCr));
    13441344}
    13451345
     
    13541354DECLINLINE(bool) CPUMIsGuestSvmWriteCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13551355{
    1356     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1357     return RT_BOOL(pVmcbCtrl->u16InterceptWrCRx & (1 << uCr));
     1356    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1357    return pVmcb && (pVmcb->ctrl.u16InterceptWrCRx & (1 << uCr));
    13581358}
    13591359
     
    13681368DECLINLINE(bool) CPUMIsGuestSvmReadDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13691369{
    1370     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1371     return RT_BOOL(pVmcbCtrl->u16InterceptRdDRx & (1 << uDr));
     1370    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1371    return pVmcb && (pVmcb->ctrl.u16InterceptRdDRx & (1 << uDr));
    13721372}
    13731373
     
    13821382DECLINLINE(bool) CPUMIsGuestSvmWriteDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13831383{
    1384     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1385     return RT_BOOL(pVmcbCtrl->u16InterceptWrDRx & (1 << uDr));
     1384    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1385    return pVmcb && (pVmcb->ctrl.u16InterceptWrDRx & (1 << uDr));
    13861386}
    13871387
     
    13971397{
    13981398    Assert(uVector < 32);
    1399     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1400     return RT_BOOL(pVmcbCtrl->u32InterceptXcpt & (UINT32_C(1) << uVector));
     1399    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1400    return pVmcb && (pVmcb->ctrl.u32InterceptXcpt & (UINT32_C(1) << uVector));
    14011401}
    14021402#endif /* !IN_RC */
     
    14151415     */
    14161416#ifndef IN_RC
    1417     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    1418     return RT_BOOL(pVmcbCtrl && (pVmcbCtrl->u64InterceptCtrl & SVM_CTRL_INTERCEPT_VMRUN));
     1417    PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     1418    return pVmcb && (pVmcb->ctrl.u64InterceptCtrl & SVM_CTRL_INTERCEPT_VMRUN);
    14191419#else
    14201420    RT_NOREF(pCtx);
Note: See TracChangeset for help on using the changeset viewer.

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