VirtualBox

Changeset 2138 in vbox for trunk


Ignore:
Timestamp:
Apr 17, 2007 4:10:20 PM (18 years ago)
Author:
vboxsync
Message:

Use hidden selector register in DBGFR3DisasInstrEx

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/DBGFDisas.cpp

    r986 r2138  
    235235     */
    236236    PCCPUMCTXCORE pCtxCore = NULL;
     237    CPUMSELREGHID *pHiddenSel = NULL;
    237238    int rc;
    238239    if (fFlags & (DBGF_DISAS_FLAGS_CURRENT_GUEST | DBGF_DISAS_FLAGS_CURRENT_HYPER))
     
    242243        else
    243244            pCtxCore = CPUMGetHyperCtxCore(pVM);
    244         Sel = pCtxCore->cs;
    245         GCPtr = pCtxCore->eip;
     245        Sel        = pCtxCore->cs;
     246        pHiddenSel = (CPUMSELREGHID *)&pCtxCore->csHid;
     247        GCPtr      = pCtxCore->eip;
    246248    }
    247249
     
    254256    const PGMMODE enmMode = PGMGetGuestMode(pVM);
    255257    bool fRealModeAddress = false;
     258
     259    if (    pHiddenSel
     260        &&  CPUMAreHiddenSelRegsValid(pVM))
     261    {
     262        SelInfo.GCPtrBase           = pHiddenSel->u32Base;
     263        SelInfo.cbLimit             = pHiddenSel->u32Limit;
     264        SelInfo.fHyper              = false;
     265        SelInfo.fRealMode           = !!(pCtxCore && pCtxCore->eflags.Bits.u1VM || enmMode == PGMMODE_REAL);
     266        SelInfo.Raw.au32[0]         = 0;
     267        SelInfo.Raw.au32[1]         = 0;
     268        SelInfo.Raw.Gen.u16LimitLow = ~0;
     269        SelInfo.Raw.Gen.u4LimitHigh = ~0;
     270        SelInfo.Raw.Gen.u1Present   = pHiddenSel->Attr.n.u1Present;
     271        SelInfo.Raw.Gen.u1Granularity = pHiddenSel->Attr.n.u1Granularity;;
     272        SelInfo.Raw.Gen.u1DefBig    = pHiddenSel->Attr.n.u1DefBig;
     273        SelInfo.Raw.Gen.u1DescType  = pHiddenSel->Attr.n.u1DescType;
     274        SelInfo.Raw.Gen.u4Type      = pHiddenSel->Attr.n.u4Type;
     275        fRealModeAddress            = SelInfo.fRealMode;
     276    }
     277    else
    256278    if (    !(fFlags & DBGF_DISAS_FLAGS_CURRENT_HYPER)
    257279        &&  (   (pCtxCore && pCtxCore->eflags.Bits.u1VM)
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