VirtualBox

Changeset 80180 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Aug 7, 2019 10:49:36 AM (5 years ago)
Author:
vboxsync
Message:

Backing out r132620.

Location:
trunk/src/VBox/VMM
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r80179 r80180  
    22522252    if (RT_SUCCESS(rc))
    22532253    {
     2254        RTRCPTR     RCPtr       = NIL_RTRCPTR;
    22542255        RTHCPTR     HCPtr       = NIL_RTHCPTR;
    22552256# ifndef VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0
     
    22642265# endif
    22652266            if (fChanged)
     2267            {
    22662268                pVCpu->pgm.s.aGCPhysGstPaePDs[iPdpt]   = GCPhys;
     2269                pVCpu->pgm.s.apGstPaePDsRC[iPdpt]      = (RCPTRTYPE(PX86PDPAE))RCPtr;
     2270            }
    22672271
    22682272            *ppPd = pVCpu->pgm.s.CTX_SUFF(apGstPaePDs)[iPdpt];
     
    22782282    pVCpu->pgm.s.apGstPaePDsR0[iPdpt]      = 0;
    22792283# endif
     2284    pVCpu->pgm.s.apGstPaePDsRC[iPdpt]      = 0;
    22802285
    22812286    pgmUnlock(pVM);
     
    23722377            pVCpu->pgm.s.apGstPaePDsR0[i]     = 0;
    23732378#endif
     2379            pVCpu->pgm.s.apGstPaePDsRC[i]     = 0;
    23742380            pVCpu->pgm.s.aGCPhysGstPaePDs[i]  = NIL_RTGCPHYS;
    23752381        }
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r80179 r80180  
    135135        pgmPoolFreeByPage(pPool, pOldShwPageCR3, NIL_PGMPOOL_IDX, UINT32_MAX);
    136136        pVCpu->pgm.s.pShwPageCR3R3 = NIL_RTR3PTR;
     137        pVCpu->pgm.s.pShwPageCR3RC = NIL_RTRCPTR;
    137138        pVCpu->pgm.s.pShwPageCR3R0 = NIL_RTR0PTR;
    138139    }
     
    147148
    148149    pVCpu->pgm.s.pShwPageCR3R3 = (R3PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR3(pVM, pNewShwPageCR3);
     150    pVCpu->pgm.s.pShwPageCR3RC = (RCPTRTYPE(PPGMPOOLPAGE))MMHyperCCToRC(pVM, pNewShwPageCR3);
    149151    pVCpu->pgm.s.pShwPageCR3R0 = (R0PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR0(pVM, pNewShwPageCR3);
    150152
     
    35843586                    false);
    35853587#  if !defined(IN_RING0) && PGM_GST_TYPE != PGM_TYPE_AMD64
    3586 #   if 0
    3587 #    if PGM_GST_TYPE == PGM_TYPE_32BIT
     3588#   if PGM_GST_TYPE == PGM_TYPE_32BIT
    35883589    rc = PGMShwGetPage(pVCpu, (RTRCUINTPTR)pPGM->pGst32BitPdRC, NULL, &HCPhysShw);
    3589 #    else
     3590#   else
    35903591    rc = PGMShwGetPage(pVCpu, (RTRCUINTPTR)pPGM->pGstPaePdptRC, NULL, &HCPhysShw);
    3591 #    endif
     3592#   endif
    35923593    AssertRCReturn(rc, 1);
    35933594    HCPhys = NIL_RTHCPHYS;
    35943595    rc = pgmRamGCPhys2HCPhys(pVM, PGM_A20_APPLY(pVCpu, cr3 & GST_CR3_PAGE_MASK), &HCPhys);
    35953596    AssertMsgReturn(HCPhys == HCPhysShw, ("HCPhys=%RHp HCPhyswShw=%RHp (cr3)\n", HCPhys, HCPhysShw), false);
    3596 #   endif
    35973597#   if PGM_GST_TYPE == PGM_TYPE_32BIT && defined(IN_RING3)
    35983598    pgmGstGet32bitPDPtr(pVCpu);
     
    43894389            pVCpu->pgm.s.apGstPaePDsR0[i]     = 0;
    43904390#  endif
     4391            pVCpu->pgm.s.apGstPaePDsRC[i]     = 0;
    43914392            pVCpu->pgm.s.aGCPhysGstPaePDs[i]  = NIL_RTGCPHYS;
    43924393        }
     
    44424443#  ifdef IN_RING0
    44434444    pVCpu->pgm.s.pShwPageCR3R3 = MMHyperCCToR3(pVM, pVCpu->pgm.s.CTX_SUFF(pShwPageCR3));
     4445    pVCpu->pgm.s.pShwPageCR3RC = MMHyperCCToRC(pVM, pVCpu->pgm.s.CTX_SUFF(pShwPageCR3));
    44444446#  else
    44454447    pVCpu->pgm.s.pShwPageCR3R0 = MMHyperCCToR0(pVM, pVCpu->pgm.s.CTX_SUFF(pShwPageCR3));
     4448    pVCpu->pgm.s.pShwPageCR3RC = MMHyperCCToRC(pVM, pVCpu->pgm.s.CTX_SUFF(pShwPageCR3));
    44464449#  endif
    44474450
     
    45054508    pVCpu->pgm.s.pGst32BitPdR0 = 0;
    45064509# endif
     4510    pVCpu->pgm.s.pGst32BitPdRC = 0;
    45074511
    45084512#elif PGM_GST_TYPE == PGM_TYPE_PAE
     
    45114515    pVCpu->pgm.s.pGstPaePdptR0 = 0;
    45124516# endif
     4517    pVCpu->pgm.s.pGstPaePdptRC = 0;
    45134518    for (unsigned i = 0; i < X86_PG_PAE_PDPE_ENTRIES; i++)
    45144519    {
     
    45174522        pVCpu->pgm.s.apGstPaePDsR0[i]    = 0;
    45184523# endif
     4524        pVCpu->pgm.s.apGstPaePDsRC[i]    = 0;
    45194525        pVCpu->pgm.s.aGCPhysGstPaePDs[i] = NIL_RTGCPHYS;
    45204526    }
     
    45624568        pVCpu->pgm.s.pShwPageCR3R3 = 0;
    45634569        pVCpu->pgm.s.pShwPageCR3R0 = 0;
     4570        pVCpu->pgm.s.pShwPageCR3RC = 0;
    45644571    }
    45654572
  • trunk/src/VBox/VMM/VMMAll/PGMAllGst.h

    r80179 r80180  
    516516PGM_GST_DECL(int, Relocate)(PVMCPU pVCpu, RTGCPTR offDelta)
    517517{
    518     RT_NOREF(pVCpu, offDelta);
     518    pVCpu->pgm.s.pGst32BitPdRC += offDelta;
     519    for (unsigned i = 0; i < RT_ELEMENTS(pVCpu->pgm.s.apGstPaePDsRC); i++)
     520        pVCpu->pgm.s.apGstPaePDsRC[i] += offDelta;
     521    pVCpu->pgm.s.pGstPaePdptRC += offDelta;
     522
    519523    return VINF_SUCCESS;
    520524}
  • trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp

    r80179 r80180  
    459459        pVM->pgm.s.pLastPhysHandlerR0 = 0;
    460460        pVM->pgm.s.pLastPhysHandlerR3 = 0;
     461        pVM->pgm.s.pLastPhysHandlerRC = 0;
    461462
    462463        pPhysHandler->Core.Key     = NIL_RTGCPHYS;
     
    537538        pVM->pgm.s.pLastPhysHandlerR0 = 0;
    538539        pVM->pgm.s.pLastPhysHandlerR3 = 0;
     540        pVM->pgm.s.pLastPhysHandlerRC = 0;
    539541
    540542        pgmUnlock(pVM);
     
    936938        pVM->pgm.s.pLastPhysHandlerR0 = 0;
    937939        pVM->pgm.s.pLastPhysHandlerR3 = 0;
     940        pVM->pgm.s.pLastPhysHandlerRC = 0;
    938941        PGMHandlerPhysicalTypeRelease(pVM, pCur->hType);
    939942        MMHyperFree(pVM, pCur);
     
    10931096                        pVM->pgm.s.pLastPhysHandlerR0 = 0;
    10941097                        pVM->pgm.s.pLastPhysHandlerR3 = 0;
     1098                        pVM->pgm.s.pLastPhysHandlerRC = 0;
    10951099                        PGMHandlerPhysicalTypeRelease(pVM, pCur2->hType);
    10961100                        MMHyperFree(pVM, pCur2);
  • trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp

    r80179 r80180  
    323323{
    324324    pgmLock(pVM);
    325     RT_ZERO(pVM->pgm.s.apRamRangesTlbR3);
    326     RT_ZERO(pVM->pgm.s.apRamRangesTlbR0);
     325    for (uint32_t i = 0; i < PGM_RAMRANGE_TLB_ENTRIES; i++)
     326    {
     327        pVM->pgm.s.apRamRangesTlbR3[i] = NIL_RTR3PTR;
     328        pVM->pgm.s.apRamRangesTlbR0[i] = NIL_RTR0PTR;
     329        pVM->pgm.s.apRamRangesTlbRC[i] = NIL_RTRCPTR;
     330    }
    327331    pgmUnlock(pVM);
    328332}
  • trunk/src/VBox/VMM/VMMAll/PGMAllShw.h

    r80179 r80180  
    222222
    223223    pVCpu->pgm.s.pShwPageCR3R3 = (R3PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR3(pVM, pNewShwPageCR3);
     224    pVCpu->pgm.s.pShwPageCR3RC = (RCPTRTYPE(PPGMPOOLPAGE))MMHyperCCToRC(pVM, pNewShwPageCR3);
    224225    pVCpu->pgm.s.pShwPageCR3R0 = (R0PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR0(pVM, pNewShwPageCR3);
    225226
     
    260261        pVCpu->pgm.s.pShwPageCR3R3 = 0;
    261262        pVCpu->pgm.s.pShwPageCR3R0 = 0;
     263        pVCpu->pgm.s.pShwPageCR3RC = 0;
    262264
    263265        pgmUnlock(pVM);
     
    611613PGM_SHW_DECL(int, Relocate)(PVMCPU pVCpu, RTGCPTR offDelta)
    612614{
     615# if PGM_SHW_TYPE != PGM_TYPE_NONE
     616    pVCpu->pgm.s.pShwPageCR3RC += offDelta;
     617# else
    613618    RT_NOREF(pVCpu, offDelta);
     619# endif
    614620    return VINF_SUCCESS;
    615621}
  • trunk/src/VBox/VMM/VMMR3/PGM.cpp

    r80179 r80180  
    804804        pPGM->pGstAmd64Pml4R0   = NIL_RTR0PTR;
    805805#endif
     806        pPGM->pGst32BitPdRC     = NIL_RTRCPTR;
     807        pPGM->pGstPaePdptRC     = NIL_RTRCPTR;
    806808        for (unsigned i = 0; i < RT_ELEMENTS(pVCpu->pgm.s.apGstPaePDsR3); i++)
    807809        {
     
    810812            pPGM->apGstPaePDsR0[i]             = NIL_RTR0PTR;
    811813#endif
     814            pPGM->apGstPaePDsRC[i]             = NIL_RTRCPTR;
    812815            pPGM->aGCPhysGstPaePDs[i]          = NIL_RTGCPHYS;
    813816            pPGM->aGstPaePdpeRegs[i].u         = UINT64_MAX;
     
    890893    pVM->pgm.s.pStatsR3 = (PGMSTATS *)pv;
    891894    pVM->pgm.s.pStatsR0 = MMHyperCCToR0(pVM, pv);
     895    pVM->pgm.s.pStatsRC = MMHyperCCToRC(pVM, pv);
    892896    pv = (uint8_t *)pv + RT_ALIGN_Z(sizeof(PGMSTATS), 64);
    893897
     
    896900        pVM->aCpus[iCpu].pgm.s.pStatsR3 = (PGMCPUSTATS *)pv;
    897901        pVM->aCpus[iCpu].pgm.s.pStatsR0 = MMHyperCCToR0(pVM, pv);
     902        pVM->aCpus[iCpu].pgm.s.pStatsRC = MMHyperCCToRC(pVM, pv);
    898903
    899904        pv = (uint8_t *)pv + RT_ALIGN_Z(sizeof(PGMCPUSTATS), 64);
     
    934939    rc = MMHyperAlloc(pVM, sizeof(PGMTREES), 0, MM_TAG_PGM, (void **)&pVM->pgm.s.pTreesR3);
    935940    if (RT_SUCCESS(rc))
     941    {
    936942        pVM->pgm.s.pTreesR0 = MMHyperR3ToR0(pVM, pVM->pgm.s.pTreesR3);
     943        pVM->pgm.s.pTreesRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pTreesR3);
     944    }
    937945
    938946    /*
     
    18651873
    18661874    /*
     1875     * Trees.
     1876     */
     1877    pVM->pgm.s.pTreesRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pTreesR3);
     1878
     1879    /*
    18671880     * Ram ranges.
    18681881     */
     
    18741887                pCur->pSelfRC = MMHyperCCToRC(pVM, pCur);
    18751888        pgmR3PhysRelinkRamRanges(pVM);
     1889
     1890        /* Flush the RC TLB. */
     1891        for (unsigned i = 0; i < PGM_RAMRANGE_TLB_ENTRIES; i++)
     1892            pVM->pgm.s.apRamRangesTlbRC[i] = NIL_RTRCPTR;
    18761893    }
    18771894
     
    19401957    PGMRELOCHANDLERARGS Args = { offDelta, pVM };
    19411958    RTAvlroGCPhysDoWithAll(&pVM->pgm.s.pTreesR3->PhysHandlers,     true, pgmR3RelocatePhysHandler,      &Args);
     1959    pVM->pgm.s.pLastPhysHandlerRC = NIL_RTRCPTR;
    19421960
    19431961    PPGMPHYSHANDLERTYPEINT pCurPhysType;
     
    19541972     */
    19551973    pgmR3PoolRelocate(pVM);
     1974
     1975#ifdef VBOX_WITH_STATISTICS
     1976    /*
     1977     * Statistics.
     1978     */
     1979    pVM->pgm.s.pStatsRC = MMHyperCCToRC(pVM, pVM->pgm.s.pStatsR3);
     1980    for (VMCPUID iCpu = 0; iCpu < pVM->cCpus; iCpu++)
     1981        pVM->aCpus[iCpu].pgm.s.pStatsRC = MMHyperCCToRC(pVM, pVM->aCpus[iCpu].pgm.s.pStatsR3);
     1982#endif
    19561983}
    19571984
  • trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp

    r80179 r80180  
    980980    pVM->pgm.s.pRamRangeTreeR3 = pRoot;
    981981    pVM->pgm.s.pRamRangeTreeR0 = pRoot ? pRoot->pSelfR0 : NIL_RTR0PTR;
     982    pVM->pgm.s.pRamRangeTreeRC = pRoot ? pRoot->pSelfRC : NIL_RTRCPTR;
    982983
    983984#ifdef VBOX_STRICT
     
    10471048    {
    10481049        pVM->pgm.s.pRamRangesXR0 = pCur->pSelfR0;
     1050        pVM->pgm.s.pRamRangesXRC = pCur->pSelfRC;
    10491051
    10501052        for (; pCur->pNextR3; pCur = pCur->pNextR3)
     
    10601062    {
    10611063        Assert(pVM->pgm.s.pRamRangesXR0 == NIL_RTR0PTR);
     1064        Assert(pVM->pgm.s.pRamRangesXRC == NIL_RTRCPTR);
    10621065    }
    10631066    ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen);
     
    10971100        pVM->pgm.s.pRamRangesXR3 = pNew;
    10981101        pVM->pgm.s.pRamRangesXR0 = pNew->pSelfR0;
     1102        pVM->pgm.s.pRamRangesXRC = pNew->pSelfRC;
    10991103    }
    11001104    ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen);
     
    11321136        pVM->pgm.s.pRamRangesXR3 = pNext;
    11331137        pVM->pgm.s.pRamRangesXR0 = pNext ? pNext->pSelfR0 : NIL_RTR0PTR;
     1138        pVM->pgm.s.pRamRangesXRC = pNext ? pNext->pSelfRC : NIL_RTRCPTR;
    11341139    }
    11351140    ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen);
     
    44064411                            pVM->pgm.s.pRomRangesR3 = pRomNew;
    44074412                            pVM->pgm.s.pRomRangesR0 = MMHyperCCToR0(pVM, pRomNew);
     4413                            pVM->pgm.s.pRomRangesRC = MMHyperCCToRC(pVM, pRomNew);
    44084414                        }
    44094415
  • trunk/src/VBox/VMM/VMMR3/PGMPool.cpp

    r80179 r80180  
    234234    pVM->pgm.s.pPoolR3 = pPool;
    235235    pVM->pgm.s.pPoolR0 = MMHyperR3ToR0(pVM, pPool);
     236    pVM->pgm.s.pPoolRC = MMHyperR3ToRC(pVM, pPool);
    236237
    237238    /*
     
    240241    pPool->pVMR3     = pVM;
    241242    pPool->pVMR0     = pVM->pVMR0;
     243    pPool->pVMRC     = pVM->pVMRC;
    242244    pPool->cMaxPages = cMaxPages;
    243245    pPool->cCurPages = PGMPOOL_IDX_FIRST;
     
    247249    pPool->paUsersR3 = paUsers;
    248250    pPool->paUsersR0 = MMHyperR3ToR0(pVM, paUsers);
     251    pPool->paUsersRC = MMHyperR3ToRC(pVM, paUsers);
    249252    for (unsigned i = 0; i < cMaxUsers; i++)
    250253    {
     
    259262    pPool->paPhysExtsR3 = paPhysExts;
    260263    pPool->paPhysExtsR0 = MMHyperR3ToR0(pVM, paPhysExts);
     264    pPool->paPhysExtsRC = MMHyperR3ToRC(pVM, paPhysExts);
    261265    for (unsigned i = 0; i < cMaxPhysExts; i++)
    262266    {
     
    462466void pgmR3PoolRelocate(PVM pVM)
    463467{
    464     RT_NOREF(pVM);
     468    pVM->pgm.s.pPoolRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pPoolR3);
     469    pVM->pgm.s.pPoolR3->pVMRC = pVM->pVMRC;
     470    pVM->pgm.s.pPoolR3->paUsersRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pPoolR3->paUsersR3);
     471    pVM->pgm.s.pPoolR3->paPhysExtsRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pPoolR3->paPhysExtsR3);
    465472}
    466473
  • trunk/src/VBox/VMM/include/PGMInternal.h

    r80179 r80180  
    21872187    /** The VM handle - R0 Ptr. */
    21882188    PVMR0                       pVMR0;
     2189    /** The VM handle - RC Ptr. */
     2190    PVMRC                       pVMRC;
    21892191    /** The max pool size. This includes the special IDs. */
    21902192    uint16_t                    cMaxPages;
     
    22012203    /** The number of present page table entries in the entire pool. */
    22022204    uint32_t                    cPresent;
     2205    /** Pointer to the array of user nodes - RC pointer. */
     2206    RCPTRTYPE(PPGMPOOLUSER)     paUsersRC;
    22032207    /** Pointer to the array of user nodes - R3 pointer. */
    22042208    R3PTRTYPE(PPGMPOOLUSER)     paUsersR3;
     
    22092213    /** The number of user nodes we've allocated. */
    22102214    uint16_t                    cMaxPhysExts;
    2211     uint32_t                    u32Padding0b;
     2215    /** Pointer to the array of physical xref extent - RC pointer. */
     2216    RCPTRTYPE(PPGMPOOLPHYSEXT)  paPhysExtsRC;
    22122217    /** Pointer to the array of physical xref extent nodes - R3 pointer. */
    22132218    R3PTRTYPE(PPGMPOOLPHYSEXT)  paPhysExtsR3;
     
    31943199    R0PTRTYPE(PPGMREGMMIORANGE)     apMmio2RangesR0[PGM_MMIO2_MAX_RANGES];
    31953200
     3201    /** RAM range TLB for RC. */
     3202    RCPTRTYPE(PPGMRAMRANGE)         apRamRangesTlbRC[PGM_RAMRANGE_TLB_ENTRIES];
     3203    /** RC pointer corresponding to PGM::pRamRangesXR3. */
     3204    RCPTRTYPE(PPGMRAMRANGE)         pRamRangesXRC;
     3205    /** Root of the RAM range search tree for raw-mode context. */
     3206    RCPTRTYPE(PPGMRAMRANGE)         pRamRangeTreeRC;
     3207    /** PGM offset based trees - RC Ptr. */
     3208    RCPTRTYPE(PPGMTREES)            pTreesRC;
     3209    /** Caching the last physical handler we looked up in RC. */
     3210    RCPTRTYPE(PPGMPHYSHANDLER)      pLastPhysHandlerRC;
     3211    /** Shadow Page Pool - RC Ptr. */
     3212    RCPTRTYPE(PPGMPOOL)             pPoolRC;
     3213#ifndef PGM_WITHOUT_MAPPINGS
     3214    /** Linked list of GC mappings - for RC.
     3215     * The list is sorted ascending on address. */
     3216    RCPTRTYPE(PPGMMAPPING)          pMappingsRC;
     3217    RTRCPTR                         RCPtrAlignment0;
     3218#endif
     3219    /** RC pointer corresponding to PGM::pRomRangesR3. */
     3220    RCPTRTYPE(PPGMROMRANGE)         pRomRangesRC;
     3221#ifndef PGM_WITHOUT_MAPPINGS
     3222    /** Pointer to the page table entries for the dynamic page mapping area - GCPtr. */
     3223    RCPTRTYPE(PX86PTE)              paDynPageMap32BitPTEsGC;
     3224    /** Pointer to the page table entries for the dynamic page mapping area - GCPtr. */
     3225    RCPTRTYPE(PPGMSHWPTEPAE)        paDynPageMapPaePTEsGC;
     3226#endif
     3227
     3228
    31963229#ifndef PGM_WITHOUT_MAPPINGS
    31973230    /** Pointer to the 5 page CR3 content mapping.
     
    32463279    uint32_t                        cDeprecatedPageLocks;
    32473280    /** Alignment padding. */
    3248     uint32_t                        au32Alignment2[1];
     3281    uint32_t                        au32Alignment2[3];
    32493282
    32503283
     
    34333466    R3PTRTYPE(PGMSTATS *)           pStatsR3;
    34343467    R0PTRTYPE(PGMSTATS *)           pStatsR0;
     3468    RCPTRTYPE(PGMSTATS *)           pStatsRC;
     3469    RTRCPTR                         RCPtrAlignment;
    34353470    /** @} */
    34363471#endif
     
    37193754    R0PTRTYPE(PX86PD)               pGst32BitPdR0;
    37203755#endif
     3756    /** The guest's page directory, static RC mapping. */
     3757    RCPTRTYPE(PX86PD)               pGst32BitPdRC;
    37213758    /** Mask containing the MBZ bits of a big page PDE. */
    37223759    uint32_t                        fGst32BitMbzBigPdeMask;
     
    37293766    /** @name PAE Guest Paging.
    37303767     * @{ */
     3768    /** The guest's page directory pointer table, static RC mapping. */
     3769    RCPTRTYPE(PX86PDPT)             pGstPaePdptRC;
    37313770    /** The guest's page directory pointer table, R3 pointer. */
    37323771    R3PTRTYPE(PX86PDPT)             pGstPaePdptR3;
     
    37453784    R0PTRTYPE(PX86PDPAE)            apGstPaePDsR0[4];
    37463785#endif
     3786    /** The guest's page directories, static GC mapping.
     3787     * Unlike the R3/R0 array the first entry can be accessed as a 2048 entry PD.
     3788     * These don't have to be up-to-date - use pgmGstGetPaePD() to access them. */
     3789    RCPTRTYPE(PX86PDPAE)            apGstPaePDsRC[4];
    37473790    /** The physical addresses of the guest page directories (PAE) pointed to by apGstPagePDsHC/GC.
    37483791     * @todo Remove this and use aGstPaePdpeRegs instead? */
     
    38063849    /** Pointer to the page of the current active CR3 - R0 Ptr. */
    38073850    R0PTRTYPE(PPGMPOOLPAGE)         pShwPageCR3R0;
     3851    /** Pointer to the page of the current active CR3 - RC Ptr. */
     3852    RCPTRTYPE(PPGMPOOLPAGE)         pShwPageCR3RC;
     3853    /** Explicit alignment. */
     3854    RTRCPTR                         alignment6;
    38083855    /** @} */
    38093856
     
    38293876    /** @name Statistics
    38303877     * @{ */
     3878    /** RC: Pointer to the statistics. */
     3879    RCPTRTYPE(PGMCPUSTATS *)        pStatsRC;
     3880    /** RC: Which statistic this \#PF should be attributed to. */
     3881    RCPTRTYPE(PSTAMPROFILE)         pStatTrap0eAttributionRC;
    38313882    /** R0: Pointer to the statistics. */
    38323883    R0PTRTYPE(PGMCPUSTATS *)        pStatsR0;
  • trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp

    r80179 r80180  
    250250    CHECK_PADDING_VMCPU(4096, pgm);
    251251    CHECK_PADDING_VMCPU(4096, cpum);
     252#ifdef VBOX_WITH_STATISTICS
     253    PRINT_OFFSET(VMCPU, pgm.s.pStatTrap0eAttributionRC);
     254#endif
    252255
    253256    PVM pVM = NULL; NOREF(pVM);
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