VirtualBox

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


Ignore:
Timestamp:
Jun 13, 2008 9:49:54 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
32013
Message:

General cleanup of SELMToFlat.

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

Legend:

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

    r9659 r9675  
    20992099 * @returns VBox status code.
    21002100 * @param   pVM         The VM to operate on.
    2101  * @param   Sel         selector
    2102  * @param   pHiddenSel  The hidden selector register.
     2101 * @param   pCtxCore    CPU context
    21032102 * @param   pInstrGC    Instruction pointer
    21042103 */
    2105 CSAMR3DECL(int) CSAMR3CheckCodeEx(PVM pVM, RTSEL Sel, CPUMSELREGHID *pHiddenSel, RTRCPTR pInstrGC)
     2104CSAMR3DECL(int) CSAMR3CheckCodeEx(PVM pVM, PCPUMCTXCORE pCtxCore, RTRCPTR pInstrGC)
    21062105{
    21072106    if (EMIsRawRing0Enabled(pVM) == false || PATMIsPatchGCAddr(pVM, pInstrGC) == true)
     
    21132112    if (CSAMIsEnabled(pVM))
    21142113    {
    2115         X86EFLAGS fakeflags;
    2116 
    2117         /* we're not in v86 mode here */
    2118         fakeflags.u32 = 0;
    2119 
    21202114        /* Assuming 32 bits code for now. */
    2121         Assert(SELMGetCpuModeFromSelector(pVM, fakeflags, Sel, pHiddenSel) == CPUMODE_32BIT);
    2122 
    2123         pInstrGC = SELMToFlat(pVM, fakeflags, Sel, pHiddenSel, pInstrGC);
    2124 
     2115        Assert(SELMGetCpuModeFromSelector(pVM, pCtxCore->eflags, pCtxCore->cs, &pCtxCore->csHid) == CPUMODE_32BIT);
     2116
     2117        pInstrGC = SELMToFlat(pVM, DIS_SELREG_CS, pCtxCore, pInstrGC);
    21252118        return CSAMR3CheckCode(pVM, pInstrGC);
    21262119    }
     
    23662359            CSAMP2GLOOKUPREC cacheRec = {0};            /* Cache record for PATMGCVirtToHCVirt. */
    23672360            PCSAMPAGE pPage = NULL;
    2368             X86EFLAGS fakeflags;
    23692361            SELMSELINFO selInfo;
    23702362
    2371             /* we're not in v86 mode here */
    2372             fakeflags.u32 = 0;
    2373 
    23742363            pHandler = VBOXIDTE_OFFSET(*pGuestIdte);
    2375             pHandler = SELMToFlat(pVM, fakeflags, pGuestIdte->Gen.u16SegSel, 0, pHandler);
     2364            pHandler = SELMToFlatBySel(pVM, pGuestIdte->Gen.u16SegSel, pHandler);
    23762365
    23772366            rc = SELMR3GetSelectorInfo(pVM, pGuestIdte->Gen.u16SegSel, &selInfo);
  • trunk/src/VBox/VMM/PATM/PATM.cpp

    r9228 r9675  
    16581658            /* mov ss, src? */
    16591659            if (    (pCpu->param1.flags & USE_REG_SEG)
    1660                 &&  (pCpu->param1.base.reg_seg == USE_REG_SS))
     1660                &&  (pCpu->param1.base.reg_seg == DIS_SELREG_SS))
    16611661            {
    16621662                Log(("Force recompilation of next instruction for OP_MOV at %VRv\n", pCurInstrGC));
     
    33733373
    33743374    pBranchTarget = pCtx->edx;
    3375     pBranchTarget = SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, pBranchTarget);
     3375    pBranchTarget = SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pBranchTarget);
    33763376
    33773377    /* First we check if the duplicate function target lies in some existing function patch already. Will save some space. */
     
    39873987    if (CPUMGetGuestCPL(pVM, CPUMCTX2CORE(pCtx)) == 0)
    39883988    {
    3989         RTRCPTR pInstrGCFlat = SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, pInstrGC);
     3989        RTRCPTR pInstrGCFlat = SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pInstrGC);
    39903990        if (pInstrGCFlat != pInstrGC)
    39913991        {
     
    60526052
    60536053                    /* continue at the original instruction */
    6054                     *ppNewEip = pNewEip - SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, 0);
     6054                    *ppNewEip = pNewEip - SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), 0);
    60556055                    STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatHandleTrap, a);
    60566056                    return VINF_SUCCESS;
     
    61196119        }
    61206120
    6121         *ppNewEip = pNewEip - SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, 0);
     6121        *ppNewEip = pNewEip - SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), 0);
    61226122        STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatHandleTrap, a);
    61236123        return rc;
     
    61526152
    61536153    /* Return original address, correct by subtracting the CS base address. */
    6154     *ppNewEip = pNewEip - SELMToFlat(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid, 0);
     6154    *ppNewEip = pNewEip - SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), 0);
    61556155
    61566156    /* Reset the PATM stack. */
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