VirtualBox

Changeset 13827

Show
Ignore:
Timestamp:
11/05/08 02:31:18 (2 months ago)
Author:
vboxsync
Message:

MM: Retired MMHyper2HC, MMHyperHC2GC and MMHyperGC2HC.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/mm.h

    r13711 r13827  
    277277} 
    278278#endif 
    279  
    280  
    281 #ifdef IN_GC 
    282 VMMDECL(RTHCPTR)    MMHyper2HC(PVM pVM, uintptr_t Ptr); 
    283 #else 
    284 DECLINLINE(RTHCPTR) MMHyper2HC(PVM pVM, uintptr_t Ptr) 
    285 { 
    286     NOREF(pVM); 
    287     return (RTHCPTR)Ptr; 
    288 } 
    289 #endif 
    290  
    291 #define MMHyperHC2GC(pVM, R3Ptr) MMHyperR3ToRC((pVM), (R3Ptr)) /**< @deprecated */ 
    292 #define MMHyperGC2HC(pVM, RCPtr) MMHyperRCToR3((pVM), (RCPtr)) /**< @deprecated */ 
    293279 
    294280 
  • trunk/src/VBox/VMM/CPUM.cpp

    r13796 r13827  
    20812081    /** The size of the segment minus 1. */ 
    20822082    RTGCUINTPTR     cbSegLimit; 
    2083     /** Pointer to the current page - HC Ptr. */ 
    2084     void const     *pvPageHC
     2083    /** Pointer to the current page - R3 Ptr. */ 
     2084    void const     *pvPageR3
    20852085    /** Pointer to the current page - GC Ptr. */ 
    20862086    RTGCPTR         pvPageGC; 
     
    21152115 
    21162116        /* Need to update the page translation? */ 
    2117         if (    !pState->pvPageHC 
     2117        if (    !pState->pvPageR3 
    21182118            ||  (GCPtr >> PAGE_SHIFT) != (pState->pvPageGC >> PAGE_SHIFT)) 
    21192119        { 
     
    21222122            /* translate the address */ 
    21232123            pState->pvPageGC = GCPtr & PAGE_BASE_GC_MASK; 
    2124             if (MMHyperIsInsideArea(pState->pVM, pState->pvPageGC)) 
     2124            if (MMHyperIsInsideArea(pState->pVM, pState->pvPageGC)) /** @todo r=bird: Don't do this if we're in VT-x/AMD-V mode. */ 
    21252125            { 
    2126                 pState->pvPageHC = MMHyperGC2HC(pState->pVM, pState->pvPageGC); 
    2127                 if (!pState->pvPageHC
     2126                pState->pvPageR3 = MMHyperRCToR3(pState->pVM, (RTRCPTR)pState->pvPageGC); 
     2127                if (!pState->pvPageR3
    21282128                    rc = VERR_INVALID_POINTER; 
    21292129            } 
     
    21332133                if (pState->fLocked) 
    21342134                    PGMPhysReleasePageMappingLock(pState->pVM, &pState->PageMapLock); 
    2135                 rc = PGMPhysGCPtr2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageHC, &pState->PageMapLock); 
     2135                rc = PGMPhysGCPtr2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageR3, &pState->PageMapLock); 
    21362136                pState->fLocked = RT_SUCCESS_NP(rc); 
    21372137            } 
    21382138            if (VBOX_FAILURE(rc)) 
    21392139            { 
    2140                 pState->pvPageHC = NULL; 
     2140                pState->pvPageR3 = NULL; 
    21412141                return rc; 
    21422142            } 
     
    21592159 
    21602160        /* read and advance */ 
    2161         memcpy(pu8Dst, (char *)pState->pvPageHC + (GCPtr & PAGE_OFFSET_MASK), cb); 
     2161        memcpy(pu8Dst, (char *)pState->pvPageR3 + (GCPtr & PAGE_OFFSET_MASK), cb); 
    21622162        cbRead -= cb; 
    21632163        if (!cbRead) 
     
    21882188    State.pCpu            = pCpu; 
    21892189    State.pvPageGC        = 0; 
    2190     State.pvPageHC        = NULL; 
     2190    State.pvPageR3        = NULL; 
    21912191    State.pVM             = pVM; 
    21922192    State.fLocked         = false; 
  • trunk/src/VBox/VMM/CPUMStack.cpp

    r12989 r13827  
    3939    /* ASSUME always on flat stack within hypervisor memory for now */ 
    4040    pVM->cpum.s.Hyper.esp -= sizeof(u32); 
    41     *(uint32_t *)MMHyperGC2HC(pVM, (RTGCPTR)pVM->cpum.s.Hyper.esp) = u32; 
     41    *(uint32_t *)MMHyperRCToR3(pVM, (RTRCPTR)pVM->cpum.s.Hyper.esp) = u32; 
    4242} 
    4343 
  • trunk/src/VBox/VMM/DBGFDisas.cpp

    r13823 r13827  
    6262    /** The guest paging mode. */ 
    6363    PGMMODE         enmMode; 
    64     /** Pointer to the current page - HC Ptr. */ 
    65     void const     *pvPageHC
     64    /** Pointer to the current page - R3 Ptr. */ 
     65    void const     *pvPageR3
    6666    /** Pointer to the current page - GC Ptr. */ 
    6767    RTGCPTR         pvPageGC; 
     
    101101    pState->enmMode         = enmMode; 
    102102    pState->pvPageGC        = 0; 
    103     pState->pvPageHC        = NULL; 
     103    pState->pvPageR3        = NULL; 
    104104    pState->pVM             = pVM; 
    105105    pState->fLocked         = false; 
     
    189189 
    190190        /* Need to update the page translation? */ 
    191         if (    !pState->pvPageHC 
     191        if (    !pState->pvPageR3 
    192192            ||  (GCPtr >> PAGE_SHIFT) != (pState->pvPageGC >> PAGE_SHIFT)) 
    193193        { 
     
    198198            if (MMHyperIsInsideArea(pState->pVM, pState->pvPageGC)) 
    199199            { 
    200                 pState->pvPageHC = MMHyperGC2HC(pState->pVM, pState->pvPageGC); 
    201                 if (!pState->pvPageHC
     200                pState->pvPageR3 = MMHyperRCToR3(pState->pVM, (RTRCPTR)pState->pvPageGC); 
     201                if (!pState->pvPageR3
    202202                    rc = VERR_INVALID_POINTER; 
    203203            } 
     
    208208 
    209209                if (pState->enmMode <= PGMMODE_PROTECTED) 
    210                     rc = PGMPhysGCPhys2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageHC, &pState->PageMapLock); 
     210                    rc = PGMPhysGCPhys2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageR3, &pState->PageMapLock); 
    211211                else 
    212                     rc = PGMPhysGCPtr2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageHC, &pState->PageMapLock); 
     212                    rc = PGMPhysGCPtr2CCPtrReadOnly(pState->pVM, pState->pvPageGC, &pState->pvPageR3, &pState->PageMapLock); 
    213213                pState->fLocked = RT_SUCCESS_NP(rc); 
    214214            } 
    215215            if (RT_FAILURE(rc)) 
    216216            { 
    217                 pState->pvPageHC = NULL; 
     217                pState->pvPageR3 = NULL; 
    218218                return rc; 
    219219            } 
     
    236236 
    237237        /* read and advance */ 
    238         memcpy(pu8Dst, (char *)pState->pvPageHC + (GCPtr & PAGE_OFFSET_MASK), cb); 
     238        memcpy(pu8Dst, (char *)pState->pvPageR3 + (GCPtr & PAGE_OFFSET_MASK), cb); 
    239239        cbRead -= cb; 
    240240        if (!cbRead) 
  • trunk/src/VBox/VMM/PATM/CSAM.cpp

    r13825 r13827  
    120120    rc = MMR3HyperAllocOnceNoRel(pVM, CSAM_PGDIRBMP_CHUNKS*sizeof(RTRCPTR), 0, MM_TAG_CSAM, (void **)&pVM->csam.s.pPDGCBitmapHC); 
    121121    AssertRCReturn(rc, rc); 
    122     pVM->csam.s.pPDBitmapGC   = MMHyperHC2GC(pVM, pVM->csam.s.pPDGCBitmapHC); 
    123     pVM->csam.s.pPDHCBitmapGC = MMHyperHC2GC(pVM, pVM->csam.s.pPDBitmapHC); 
     122    pVM->csam.s.pPDBitmapGC   = MMHyperR3ToRC(pVM, pVM->csam.s.pPDGCBitmapHC); 
     123    pVM->csam.s.pPDHCBitmapGC = MMHyperR3ToRC(pVM, pVM->csam.s.pPDBitmapHC); 
    124124 
    125125    rc = csamReinit(pVM); 
     
    260260    { 
    261261        /* Adjust pgdir and page bitmap pointers. */ 
    262         pVM->csam.s.pPDBitmapGC   = MMHyperHC2GC(pVM, pVM->csam.s.pPDGCBitmapHC); 
    263         pVM->csam.s.pPDHCBitmapGC = MMHyperHC2GC(pVM, pVM->csam.s.pPDBitmapHC); 
     262        pVM->csam.s.pPDBitmapGC   = MMHyperR3ToRC(pVM, pVM->csam.s.pPDGCBitmapHC); 
     263        pVM->csam.s.pPDHCBitmapGC = MMHyperR3ToRC(pVM, pVM->csam.s.pPDBitmapHC); 
    264264 
    265265        for(int i=0;i<CSAM_PGDIRBMP_CHUNKS;i++) 
     
    493493            } 
    494494            /* Convert to GC pointer. */ 
    495             pVM->csam.s.pPDGCBitmapHC[i] = MMHyperHC2GC(pVM, pVM->csam.s.pPDBitmapHC[i]); 
     495            pVM->csam.s.pPDGCBitmapHC[i] = MMHyperR3ToRC(pVM, pVM->csam.s.pPDBitmapHC[i]); 
    496496            Assert(pVM->csam.s.pPDGCBitmapHC[i]); 
    497497 
  • trunk/src/VBox/VMM/PATM/PATM.cpp

    r13532 r13827  
    125125        return rc; 
    126126    } 
    127     pVM->patm.s.pPatchMemGC = MMHyperHC2GC(pVM, pVM->patm.s.pPatchMemHC); 
     127    pVM->patm.s.pPatchMemGC = MMHyperR3ToRC(pVM, pVM->patm.s.pPatchMemHC); 
    128128 
    129129    /* PATM stack page for call instruction execution. (2 parts: one for our private stack and one to store the original return address */ 
    130130    pVM->patm.s.pGCStackHC  = (RTRCPTR *)(pVM->patm.s.pPatchMemHC + PATCH_MEMORY_SIZE + PAGE_SIZE); 
    131     pVM->patm.s.pGCStackGC  = MMHyperHC2GC(pVM, pVM->patm.s.pGCStackHC); 
     131    pVM->patm.s.pGCStackGC  = MMHyperR3ToRC(pVM, pVM->patm.s.pGCStackHC); 
    132132 
    133133    /* 
     
    140140    Assert(sizeof(PATMGCSTATE) < PAGE_SIZE);    /** @note hardcoded dependencies on this exist. */ 
    141141    pVM->patm.s.pGCStateHC  = (PPATMGCSTATE)((uint8_t *)pVM->patm.s.pGCStackHC + PATM_STACK_TOTAL_SIZE); 
    142     pVM->patm.s.pGCStateGC  = MMHyperHC2GC(pVM, pVM->patm.s.pGCStateHC); 
     142    pVM->patm.s.pGCStateGC  = MMHyperR3ToRC(pVM, pVM->patm.s.pGCStateHC); 
    143143 
    144144    /* Hypervisor memory for patch statistics */ 
    145145    pVM->patm.s.pStatsHC  = (PSTAMRATIOU32)((uint8_t *)pVM->patm.s.pGCStateHC + PAGE_SIZE); 
    146     pVM->patm.s.pStatsGC  = MMHyperHC2GC(pVM, pVM->patm.s.pStatsHC); 
     146    pVM->patm.s.pStatsGC  = MMHyperR3ToRC(pVM, pVM->patm.s.pStatsHC); 
    147147 
    148148    /* Memory for patch lookup trees. */ 
    149149    rc = MMHyperAlloc(pVM, sizeof(*pVM->patm.s.PatchLookupTreeHC), 0, MM_TAG_PATM, (void **)&pVM->patm.s.PatchLookupTreeHC); 
    150150    AssertRCReturn(rc, rc); 
    151     pVM->patm.s.PatchLookupTreeGC = MMHyperHC2GC(pVM, pVM->patm.s.PatchLookupTreeHC); 
     151    pVM->patm.s.PatchLookupTreeGC = MMHyperR3ToRC(pVM, pVM->patm.s.PatchLookupTreeHC); 
    152152 
    153153#ifdef RT_ARCH_AMD64 /* see patmReinit(). */ 
     
    341341 
    342342    Assert(pVM->patm.s.pPatchMemHC); 
    343     Assert(pVM->patm.s.pPatchMemGC = MMHyperHC2GC(pVM, pVM->patm.s.pPatchMemHC)); 
     343    Assert(pVM->patm.s.pPatchMemGC = MMHyperR3ToRC(pVM, pVM->patm.s.pPatchMemHC)); 
    344344    memset(pVM->patm.s.pPatchMemHC, 0, PATCH_MEMORY_SIZE); 
    345345    AssertReleaseMsg(pVM->patm.s.pPatchMemGC, ("Impossible! MMHyperHC2GC(%p) failed!\n", pVM->patm.s.pPatchMemHC)); 
     
    350350 
    351351    Assert(pVM->patm.s.PatchLookupTreeHC); 
    352     Assert(pVM->patm.s.PatchLookupTreeGC == MMHyperHC2GC(pVM, pVM->patm.s.PatchLookupTreeHC)); 
     352    Assert(pVM->patm.s.PatchLookupTreeGC == MMHyperR3ToRC(pVM, pVM->patm.s.PatchLookupTreeHC)); 
    353353 
    354354    /* 
     
    412412VMMR3DECL(void) PATMR3Relocate(PVM pVM) 
    413413{ 
    414     RTRCPTR     GCPtrNew = MMHyperHC2GC(pVM, pVM->patm.s.pGCStateHC); 
     414    RTRCPTR     GCPtrNew = MMHyperR3ToRC(pVM, pVM->patm.s.pGCStateHC); 
    415415    RTRCINTPTR  delta = GCPtrNew - pVM->patm.s.pGCStateGC; 
    416416 
     
    434434 
    435435        pVM->patm.s.pGCStateGC  = GCPtrNew; 
    436         pVM->patm.s.pPatchMemGC = MMHyperHC2GC(pVM, pVM->patm.s.pPatchMemHC); 
    437  
    438         pVM->patm.s.pGCStackGC  = MMHyperHC2GC(pVM, pVM->patm.s.pGCStackHC); 
    439  
    440         pVM->patm.s.pStatsGC    = MMHyperHC2GC(pVM, pVM->patm.s.pStatsHC); 
    441  
    442         pVM->patm.s.PatchLookupTreeGC = MMHyperHC2GC(pVM, pVM->patm.s.PatchLookupTreeHC); 
     436        pVM->patm.s.pPatchMemGC = MMHyperR3ToRC(pVM, pVM->patm.s.pPatchMemHC); 
     437 
     438        pVM->patm.s.pGCStackGC  = MMHyperR3ToRC(pVM, pVM->patm.s.pGCStackHC); 
     439 
     440        pVM->patm.s.pStatsGC    = MMHyperR3ToRC(pVM, pVM->patm.s.pStatsHC); 
     441 
     442        pVM->patm.s.PatchLookupTreeGC = MMHyperR3ToRC(pVM, pVM->patm.s.PatchLookupTreeHC); 
    443443 
    444444        if (pVM->patm.s.pfnSysEnterPatchGC) 
  • trunk/src/VBox/VMM/PATM/VMMAll/CSAMAll.cpp

    r13822 r13827  
    138138        } 
    139139#ifdef IN_GC 
    140         pVM->csam.s.pPDHCBitmapGC[pgdir] = MMHyperGC2HC(pVM, (RCPTRTYPE(void*))pVM->csam.s.pPDBitmapGC[pgdir]); 
     140        pVM->csam.s.pPDHCBitmapGC[pgdir] = MMHyperRCToR3(pVM, (RCPTRTYPE(void*))pVM->csam.s.pPDBitmapGC[pgdir]); 
    141141        if (!pVM->csam.s.pPDHCBitmapGC[pgdir]) 
    142142        { 
     
    145145        } 
    146146#else 
    147         pVM->csam.s.pPDGCBitmapHC[pgdir] = MMHyperHC2GC(pVM, pVM->csam.s.pPDBitmapHC[pgdir]); 
     147        pVM->csam.s.pPDGCBitmapHC[pgdir] = MMHyperR3ToRC(pVM, pVM->csam.s.pPDBitmapHC[pgdir]); 
    148148        if (!pVM->csam.s.pPDGCBitmapHC[pgdir]) 
    149149        { 
  • trunk/src/VBox/VMM/PATM/VMMGC/PATMGC.cpp

    r13822 r13827  
    128128            STAM_COUNTER_INC(&pVM->patm.s.StatPatchWriteInterpretedFailed); 
    129129        } 
    130         R3PTRTYPE(PPATCHINFO) *paPatch = (R3PTRTYPE(PPATCHINFO) *)MMHyperHC2GC(pVM, pPatchPage->aPatch); 
     130        R3PTRTYPE(PPATCHINFO) *paPatch = (R3PTRTYPE(PPATCHINFO) *)MMHyperR3ToRC(pVM, pPatchPage->aPatch); 
    131131 
    132132        /* Increase the invalid write counter for each patch that's registered for that page. */ 
    133133        for (uint32_t i=0;i<pPatchPage->cCount;i++) 
    134134        { 
    135             PPATCHINFO pPatch = (PPATCHINFO)MMHyperHC2GC(pVM, paPatch[i]); 
     135            PPATCHINFO pPatch = (PPATCHINFO)MMHyperR3ToRC(pVM, paPatch[i]); 
    136136 
    137137            pPatch->cInvalidWrites++; 
  • trunk/src/VBox/VMM/SELM.cpp

    r13824 r13827  
    268268    { 
    269269        PX86DESC paGdt = pVM->selm.s.paGdtR3; 
    270         rc = PGMMapSetPage(pVM, MMHyperHC2GC(pVM, &paGdt[pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08] >> 3]), sizeof(paGdt[0]), 
     270        rc = PGMMapSetPage(pVM, MMHyperR3ToRC(pVM, &paGdt[pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08] >> 3]), sizeof(paGdt[0]), 
    271271                           X86_PTE_RW | X86_PTE_P | X86_PTE_A | X86_PTE_D); 
    272272        AssertRC(rc); 
    273         rc = PGMMapSetPage(pVM, MMHyperHC2GC(pVM, &paGdt[pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS] >> 3]), sizeof(paGdt[0]), 
     273        rc = PGMMapSetPage(pVM, MMHyperR3ToRC(pVM, &paGdt[pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS] >> 3]), sizeof(paGdt[0]), 
    274274                           X86_PTE_RW | X86_PTE_P | X86_PTE_A | X86_PTE_D); 
    275275        AssertRC(rc); 
    276         rc = PGMMapSetPage(pVM, VM_GUEST_ADDR(pVM, &pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS]), sizeof(pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS]), 
     276        rc = PGMMapSetPage(pVM, VM_RC_ADDR(pVM, &pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS]), sizeof(pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS]), 
    277277                           X86_PTE_RW | X86_PTE_P | X86_PTE_A | X86_PTE_D); 
    278278        AssertRC(rc); 
    279         rc = PGMMapSetPage(pVM, VM_GUEST_ADDR(pVM, &pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08]), sizeof(pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08]), 
     279        rc = PGMMapSetPage(pVM, VM_RC_ADDR(pVM, &pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08]), sizeof(pVM->selm.s.aHyperSel[SELM_HYPER_SEL_TSS_TRAP08]), 
    280280                           X86_PTE_RW | X86_PTE_P | X86_PTE_A | X86_PTE_D); 
    281281        AssertRC(rc); 
     
    399399     * Update GDTR and selector. 
    400400     */ 
    401     CPUMSetHyperGDTR(pVM, MMHyperHC2GC(pVM, paGdt), SELM_GDT_ELEMENTS * sizeof(paGdt[0]) - 1); 
     401    CPUMSetHyperGDTR(pVM, MMHyperR3ToRC(pVM, paGdt), SELM_GDT_ELEMENTS * sizeof(paGdt[0]) - 1); 
    402402 
    403403    /** @todo selector relocations should be a seperate operation? */ 
  • trunk/src/VBox/VMM/testcase/tstMicro.cpp

    r13823 r13827  
    161161     * Find the GDT - This is a HACK :-) 
    162162     */ 
    163     RTGCPTR     GCPtr = CPUMGetHyperGDTR(pVM, NULL); 
    164     PX86DESC    paGDTEs = (PX86DESC)MMHyperGC2HC(pVM, GCPtr); 
     163    RTRCPTR     RCPtr = CPUMGetHyperGDTR(pVM, NULL); 
     164    PX86DESC    paGDTEs = (PX86DESC)MMHyperRCToR3(pVM, RCPtr); 
    165165 
    166166    for (unsigned i = 0; i <= 3; i++) 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy