VirtualBox

Changeset 1359 in vbox for trunk/src/VBox/VMM/PATM


Ignore:
Timestamp:
Mar 9, 2007 10:40:44 AM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
19350
Message:

SELM function changes for v86 mode code.
CPL check fixes for V86 mode code.

Location:
trunk/src/VBox/VMM/PATM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/CSAM.cpp

    r1086 r1359  
    20482048    if (CSAMIsEnabled(pVM))
    20492049    {
    2050         bool fCode32 = SELMIsSelector32Bit(pVM, Sel, pHiddenSel);
     2050        X86EFLAGS fakeflags;
     2051
     2052        /* we're not in v86 mode here */
     2053        fakeflags.u32 = 0;
     2054
     2055        bool fCode32 = SELMIsSelector32Bit(pVM, fakeflags, Sel, pHiddenSel);
    20512056
    20522057        //assuming 32 bits code for now
    20532058        Assert(fCode32);
    20542059
    2055         pInstrGC = SELMToFlat(pVM, Sel, pHiddenSel, pInstrGC);
     2060        pInstrGC = SELMToFlat(pVM, fakeflags, Sel, pHiddenSel, pInstrGC);
    20562061
    20572062        return CSAMR3CheckCode(pVM, pInstrGC);
     
    22392244            CSAMP2GLOOKUPREC cacheRec = {0};            /* Cache record for PATMGCVirtToHCVirt. */
    22402245            PCSAMPAGE pPage = NULL;
     2246            X86EFLAGS fakeflags;
     2247
     2248            /* we're not in v86 mode here */
     2249            fakeflags.u32 = 0;
    22412250
    22422251            pHandler = (pGuestIdte->Gen.u16OffsetHigh << 16) | pGuestIdte->Gen.u16OffsetLow;
    2243             pHandler = SELMToFlat(pVM, pGuestIdte->Gen.u16SegSel, 0, pHandler);
     2252            pHandler = SELMToFlat(pVM, fakeflags, pGuestIdte->Gen.u16SegSel, 0, pHandler);
    22442253
    22452254            if (pGuestIdte->Gen.u5Type2 == VBOX_IDTE_TYPE2_TRAP_32)
  • trunk/src/VBox/VMM/PATM/PATM.cpp

    r1125 r1359  
    33383338
    33393339    pBranchTarget = pCtx->edx;
    3340     pBranchTarget = SELMToFlat(pVM, pCtx->cs, &pCtx->csHid, pBranchTarget);
     3340    pBranchTarget = SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, pBranchTarget);
    33413341
    33423342    /* First we check if the duplicate function target lies in some existing function patch already. Will save some space. */
     
    39553955        &&  (pCtx->ss & X86_SEL_RPL) == 0)
    39563956    {
    3957         RTGCPTR pInstrGCFlat = SELMToFlat(pVM, pCtx->cs, &pCtx->csHid, pInstrGC);
     3957        RTGCPTR pInstrGCFlat = SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, pInstrGC);
    39583958        Assert(pInstrGCFlat == pInstrGC);
    39593959    }
     
    59075907
    59085908    /* Return original address, correct by subtracting the CS base address. */
    5909     *ppNewEip = pNewEip - SELMToFlat(pVM, pCtx->cs, &pCtx->csHid, 0);
     5909    *ppNewEip = pNewEip - SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, 0);
    59105910
    59115911    /* Reset the PATM stack. */
  • trunk/src/VBox/VMM/PATM/VMMGC/PATMGC.cpp

    r1163 r1359  
    469469            }
    470470
    471             cpu.mode = SELMIsSelector32Bit(pVM, pRegFrame->cs, 0) ? CPUMODE_32BIT : CPUMODE_16BIT;
     471            cpu.mode = SELMIsSelector32Bit(pVM, pRegFrame->eflags, pRegFrame->cs, 0) ? CPUMODE_32BIT : CPUMODE_16BIT;
    472472            if(cpu.mode != CPUMODE_32BIT)
    473473            {
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