Changeset 80180 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Aug 7, 2019 10:49:36 AM (5 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
r80179 r80180 2252 2252 if (RT_SUCCESS(rc)) 2253 2253 { 2254 RTRCPTR RCPtr = NIL_RTRCPTR; 2254 2255 RTHCPTR HCPtr = NIL_RTHCPTR; 2255 2256 # ifndef VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 … … 2264 2265 # endif 2265 2266 if (fChanged) 2267 { 2266 2268 pVCpu->pgm.s.aGCPhysGstPaePDs[iPdpt] = GCPhys; 2269 pVCpu->pgm.s.apGstPaePDsRC[iPdpt] = (RCPTRTYPE(PX86PDPAE))RCPtr; 2270 } 2267 2271 2268 2272 *ppPd = pVCpu->pgm.s.CTX_SUFF(apGstPaePDs)[iPdpt]; … … 2278 2282 pVCpu->pgm.s.apGstPaePDsR0[iPdpt] = 0; 2279 2283 # endif 2284 pVCpu->pgm.s.apGstPaePDsRC[iPdpt] = 0; 2280 2285 2281 2286 pgmUnlock(pVM); … … 2372 2377 pVCpu->pgm.s.apGstPaePDsR0[i] = 0; 2373 2378 #endif 2379 pVCpu->pgm.s.apGstPaePDsRC[i] = 0; 2374 2380 pVCpu->pgm.s.aGCPhysGstPaePDs[i] = NIL_RTGCPHYS; 2375 2381 } -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r80179 r80180 135 135 pgmPoolFreeByPage(pPool, pOldShwPageCR3, NIL_PGMPOOL_IDX, UINT32_MAX); 136 136 pVCpu->pgm.s.pShwPageCR3R3 = NIL_RTR3PTR; 137 pVCpu->pgm.s.pShwPageCR3RC = NIL_RTRCPTR; 137 138 pVCpu->pgm.s.pShwPageCR3R0 = NIL_RTR0PTR; 138 139 } … … 147 148 148 149 pVCpu->pgm.s.pShwPageCR3R3 = (R3PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR3(pVM, pNewShwPageCR3); 150 pVCpu->pgm.s.pShwPageCR3RC = (RCPTRTYPE(PPGMPOOLPAGE))MMHyperCCToRC(pVM, pNewShwPageCR3); 149 151 pVCpu->pgm.s.pShwPageCR3R0 = (R0PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR0(pVM, pNewShwPageCR3); 150 152 … … 3584 3586 false); 3585 3587 # 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 3588 3589 rc = PGMShwGetPage(pVCpu, (RTRCUINTPTR)pPGM->pGst32BitPdRC, NULL, &HCPhysShw); 3589 # 3590 # else 3590 3591 rc = PGMShwGetPage(pVCpu, (RTRCUINTPTR)pPGM->pGstPaePdptRC, NULL, &HCPhysShw); 3591 # 3592 # endif 3592 3593 AssertRCReturn(rc, 1); 3593 3594 HCPhys = NIL_RTHCPHYS; 3594 3595 rc = pgmRamGCPhys2HCPhys(pVM, PGM_A20_APPLY(pVCpu, cr3 & GST_CR3_PAGE_MASK), &HCPhys); 3595 3596 AssertMsgReturn(HCPhys == HCPhysShw, ("HCPhys=%RHp HCPhyswShw=%RHp (cr3)\n", HCPhys, HCPhysShw), false); 3596 # endif3597 3597 # if PGM_GST_TYPE == PGM_TYPE_32BIT && defined(IN_RING3) 3598 3598 pgmGstGet32bitPDPtr(pVCpu); … … 4389 4389 pVCpu->pgm.s.apGstPaePDsR0[i] = 0; 4390 4390 # endif 4391 pVCpu->pgm.s.apGstPaePDsRC[i] = 0; 4391 4392 pVCpu->pgm.s.aGCPhysGstPaePDs[i] = NIL_RTGCPHYS; 4392 4393 } … … 4442 4443 # ifdef IN_RING0 4443 4444 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)); 4444 4446 # else 4445 4447 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)); 4446 4449 # endif 4447 4450 … … 4505 4508 pVCpu->pgm.s.pGst32BitPdR0 = 0; 4506 4509 # endif 4510 pVCpu->pgm.s.pGst32BitPdRC = 0; 4507 4511 4508 4512 #elif PGM_GST_TYPE == PGM_TYPE_PAE … … 4511 4515 pVCpu->pgm.s.pGstPaePdptR0 = 0; 4512 4516 # endif 4517 pVCpu->pgm.s.pGstPaePdptRC = 0; 4513 4518 for (unsigned i = 0; i < X86_PG_PAE_PDPE_ENTRIES; i++) 4514 4519 { … … 4517 4522 pVCpu->pgm.s.apGstPaePDsR0[i] = 0; 4518 4523 # endif 4524 pVCpu->pgm.s.apGstPaePDsRC[i] = 0; 4519 4525 pVCpu->pgm.s.aGCPhysGstPaePDs[i] = NIL_RTGCPHYS; 4520 4526 } … … 4562 4568 pVCpu->pgm.s.pShwPageCR3R3 = 0; 4563 4569 pVCpu->pgm.s.pShwPageCR3R0 = 0; 4570 pVCpu->pgm.s.pShwPageCR3RC = 0; 4564 4571 } 4565 4572 -
trunk/src/VBox/VMM/VMMAll/PGMAllGst.h
r80179 r80180 516 516 PGM_GST_DECL(int, Relocate)(PVMCPU pVCpu, RTGCPTR offDelta) 517 517 { 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 519 523 return VINF_SUCCESS; 520 524 } -
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r80179 r80180 459 459 pVM->pgm.s.pLastPhysHandlerR0 = 0; 460 460 pVM->pgm.s.pLastPhysHandlerR3 = 0; 461 pVM->pgm.s.pLastPhysHandlerRC = 0; 461 462 462 463 pPhysHandler->Core.Key = NIL_RTGCPHYS; … … 537 538 pVM->pgm.s.pLastPhysHandlerR0 = 0; 538 539 pVM->pgm.s.pLastPhysHandlerR3 = 0; 540 pVM->pgm.s.pLastPhysHandlerRC = 0; 539 541 540 542 pgmUnlock(pVM); … … 936 938 pVM->pgm.s.pLastPhysHandlerR0 = 0; 937 939 pVM->pgm.s.pLastPhysHandlerR3 = 0; 940 pVM->pgm.s.pLastPhysHandlerRC = 0; 938 941 PGMHandlerPhysicalTypeRelease(pVM, pCur->hType); 939 942 MMHyperFree(pVM, pCur); … … 1093 1096 pVM->pgm.s.pLastPhysHandlerR0 = 0; 1094 1097 pVM->pgm.s.pLastPhysHandlerR3 = 0; 1098 pVM->pgm.s.pLastPhysHandlerRC = 0; 1095 1099 PGMHandlerPhysicalTypeRelease(pVM, pCur2->hType); 1096 1100 MMHyperFree(pVM, pCur2); -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r80179 r80180 323 323 { 324 324 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 } 327 331 pgmUnlock(pVM); 328 332 } -
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r80179 r80180 222 222 223 223 pVCpu->pgm.s.pShwPageCR3R3 = (R3PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR3(pVM, pNewShwPageCR3); 224 pVCpu->pgm.s.pShwPageCR3RC = (RCPTRTYPE(PPGMPOOLPAGE))MMHyperCCToRC(pVM, pNewShwPageCR3); 224 225 pVCpu->pgm.s.pShwPageCR3R0 = (R0PTRTYPE(PPGMPOOLPAGE))MMHyperCCToR0(pVM, pNewShwPageCR3); 225 226 … … 260 261 pVCpu->pgm.s.pShwPageCR3R3 = 0; 261 262 pVCpu->pgm.s.pShwPageCR3R0 = 0; 263 pVCpu->pgm.s.pShwPageCR3RC = 0; 262 264 263 265 pgmUnlock(pVM); … … 611 613 PGM_SHW_DECL(int, Relocate)(PVMCPU pVCpu, RTGCPTR offDelta) 612 614 { 615 # if PGM_SHW_TYPE != PGM_TYPE_NONE 616 pVCpu->pgm.s.pShwPageCR3RC += offDelta; 617 # else 613 618 RT_NOREF(pVCpu, offDelta); 619 # endif 614 620 return VINF_SUCCESS; 615 621 } -
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r80179 r80180 804 804 pPGM->pGstAmd64Pml4R0 = NIL_RTR0PTR; 805 805 #endif 806 pPGM->pGst32BitPdRC = NIL_RTRCPTR; 807 pPGM->pGstPaePdptRC = NIL_RTRCPTR; 806 808 for (unsigned i = 0; i < RT_ELEMENTS(pVCpu->pgm.s.apGstPaePDsR3); i++) 807 809 { … … 810 812 pPGM->apGstPaePDsR0[i] = NIL_RTR0PTR; 811 813 #endif 814 pPGM->apGstPaePDsRC[i] = NIL_RTRCPTR; 812 815 pPGM->aGCPhysGstPaePDs[i] = NIL_RTGCPHYS; 813 816 pPGM->aGstPaePdpeRegs[i].u = UINT64_MAX; … … 890 893 pVM->pgm.s.pStatsR3 = (PGMSTATS *)pv; 891 894 pVM->pgm.s.pStatsR0 = MMHyperCCToR0(pVM, pv); 895 pVM->pgm.s.pStatsRC = MMHyperCCToRC(pVM, pv); 892 896 pv = (uint8_t *)pv + RT_ALIGN_Z(sizeof(PGMSTATS), 64); 893 897 … … 896 900 pVM->aCpus[iCpu].pgm.s.pStatsR3 = (PGMCPUSTATS *)pv; 897 901 pVM->aCpus[iCpu].pgm.s.pStatsR0 = MMHyperCCToR0(pVM, pv); 902 pVM->aCpus[iCpu].pgm.s.pStatsRC = MMHyperCCToRC(pVM, pv); 898 903 899 904 pv = (uint8_t *)pv + RT_ALIGN_Z(sizeof(PGMCPUSTATS), 64); … … 934 939 rc = MMHyperAlloc(pVM, sizeof(PGMTREES), 0, MM_TAG_PGM, (void **)&pVM->pgm.s.pTreesR3); 935 940 if (RT_SUCCESS(rc)) 941 { 936 942 pVM->pgm.s.pTreesR0 = MMHyperR3ToR0(pVM, pVM->pgm.s.pTreesR3); 943 pVM->pgm.s.pTreesRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pTreesR3); 944 } 937 945 938 946 /* … … 1865 1873 1866 1874 /* 1875 * Trees. 1876 */ 1877 pVM->pgm.s.pTreesRC = MMHyperR3ToRC(pVM, pVM->pgm.s.pTreesR3); 1878 1879 /* 1867 1880 * Ram ranges. 1868 1881 */ … … 1874 1887 pCur->pSelfRC = MMHyperCCToRC(pVM, pCur); 1875 1888 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; 1876 1893 } 1877 1894 … … 1940 1957 PGMRELOCHANDLERARGS Args = { offDelta, pVM }; 1941 1958 RTAvlroGCPhysDoWithAll(&pVM->pgm.s.pTreesR3->PhysHandlers, true, pgmR3RelocatePhysHandler, &Args); 1959 pVM->pgm.s.pLastPhysHandlerRC = NIL_RTRCPTR; 1942 1960 1943 1961 PPGMPHYSHANDLERTYPEINT pCurPhysType; … … 1954 1972 */ 1955 1973 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 1956 1983 } 1957 1984 -
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r80179 r80180 980 980 pVM->pgm.s.pRamRangeTreeR3 = pRoot; 981 981 pVM->pgm.s.pRamRangeTreeR0 = pRoot ? pRoot->pSelfR0 : NIL_RTR0PTR; 982 pVM->pgm.s.pRamRangeTreeRC = pRoot ? pRoot->pSelfRC : NIL_RTRCPTR; 982 983 983 984 #ifdef VBOX_STRICT … … 1047 1048 { 1048 1049 pVM->pgm.s.pRamRangesXR0 = pCur->pSelfR0; 1050 pVM->pgm.s.pRamRangesXRC = pCur->pSelfRC; 1049 1051 1050 1052 for (; pCur->pNextR3; pCur = pCur->pNextR3) … … 1060 1062 { 1061 1063 Assert(pVM->pgm.s.pRamRangesXR0 == NIL_RTR0PTR); 1064 Assert(pVM->pgm.s.pRamRangesXRC == NIL_RTRCPTR); 1062 1065 } 1063 1066 ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen); … … 1097 1100 pVM->pgm.s.pRamRangesXR3 = pNew; 1098 1101 pVM->pgm.s.pRamRangesXR0 = pNew->pSelfR0; 1102 pVM->pgm.s.pRamRangesXRC = pNew->pSelfRC; 1099 1103 } 1100 1104 ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen); … … 1132 1136 pVM->pgm.s.pRamRangesXR3 = pNext; 1133 1137 pVM->pgm.s.pRamRangesXR0 = pNext ? pNext->pSelfR0 : NIL_RTR0PTR; 1138 pVM->pgm.s.pRamRangesXRC = pNext ? pNext->pSelfRC : NIL_RTRCPTR; 1134 1139 } 1135 1140 ASMAtomicIncU32(&pVM->pgm.s.idRamRangesGen); … … 4406 4411 pVM->pgm.s.pRomRangesR3 = pRomNew; 4407 4412 pVM->pgm.s.pRomRangesR0 = MMHyperCCToR0(pVM, pRomNew); 4413 pVM->pgm.s.pRomRangesRC = MMHyperCCToRC(pVM, pRomNew); 4408 4414 } 4409 4415 -
trunk/src/VBox/VMM/VMMR3/PGMPool.cpp
r80179 r80180 234 234 pVM->pgm.s.pPoolR3 = pPool; 235 235 pVM->pgm.s.pPoolR0 = MMHyperR3ToR0(pVM, pPool); 236 pVM->pgm.s.pPoolRC = MMHyperR3ToRC(pVM, pPool); 236 237 237 238 /* … … 240 241 pPool->pVMR3 = pVM; 241 242 pPool->pVMR0 = pVM->pVMR0; 243 pPool->pVMRC = pVM->pVMRC; 242 244 pPool->cMaxPages = cMaxPages; 243 245 pPool->cCurPages = PGMPOOL_IDX_FIRST; … … 247 249 pPool->paUsersR3 = paUsers; 248 250 pPool->paUsersR0 = MMHyperR3ToR0(pVM, paUsers); 251 pPool->paUsersRC = MMHyperR3ToRC(pVM, paUsers); 249 252 for (unsigned i = 0; i < cMaxUsers; i++) 250 253 { … … 259 262 pPool->paPhysExtsR3 = paPhysExts; 260 263 pPool->paPhysExtsR0 = MMHyperR3ToR0(pVM, paPhysExts); 264 pPool->paPhysExtsRC = MMHyperR3ToRC(pVM, paPhysExts); 261 265 for (unsigned i = 0; i < cMaxPhysExts; i++) 262 266 { … … 462 466 void pgmR3PoolRelocate(PVM pVM) 463 467 { 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); 465 472 } 466 473 -
trunk/src/VBox/VMM/include/PGMInternal.h
r80179 r80180 2187 2187 /** The VM handle - R0 Ptr. */ 2188 2188 PVMR0 pVMR0; 2189 /** The VM handle - RC Ptr. */ 2190 PVMRC pVMRC; 2189 2191 /** The max pool size. This includes the special IDs. */ 2190 2192 uint16_t cMaxPages; … … 2201 2203 /** The number of present page table entries in the entire pool. */ 2202 2204 uint32_t cPresent; 2205 /** Pointer to the array of user nodes - RC pointer. */ 2206 RCPTRTYPE(PPGMPOOLUSER) paUsersRC; 2203 2207 /** Pointer to the array of user nodes - R3 pointer. */ 2204 2208 R3PTRTYPE(PPGMPOOLUSER) paUsersR3; … … 2209 2213 /** The number of user nodes we've allocated. */ 2210 2214 uint16_t cMaxPhysExts; 2211 uint32_t u32Padding0b; 2215 /** Pointer to the array of physical xref extent - RC pointer. */ 2216 RCPTRTYPE(PPGMPOOLPHYSEXT) paPhysExtsRC; 2212 2217 /** Pointer to the array of physical xref extent nodes - R3 pointer. */ 2213 2218 R3PTRTYPE(PPGMPOOLPHYSEXT) paPhysExtsR3; … … 3194 3199 R0PTRTYPE(PPGMREGMMIORANGE) apMmio2RangesR0[PGM_MMIO2_MAX_RANGES]; 3195 3200 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 3196 3229 #ifndef PGM_WITHOUT_MAPPINGS 3197 3230 /** Pointer to the 5 page CR3 content mapping. … … 3246 3279 uint32_t cDeprecatedPageLocks; 3247 3280 /** Alignment padding. */ 3248 uint32_t au32Alignment2[ 1];3281 uint32_t au32Alignment2[3]; 3249 3282 3250 3283 … … 3433 3466 R3PTRTYPE(PGMSTATS *) pStatsR3; 3434 3467 R0PTRTYPE(PGMSTATS *) pStatsR0; 3468 RCPTRTYPE(PGMSTATS *) pStatsRC; 3469 RTRCPTR RCPtrAlignment; 3435 3470 /** @} */ 3436 3471 #endif … … 3719 3754 R0PTRTYPE(PX86PD) pGst32BitPdR0; 3720 3755 #endif 3756 /** The guest's page directory, static RC mapping. */ 3757 RCPTRTYPE(PX86PD) pGst32BitPdRC; 3721 3758 /** Mask containing the MBZ bits of a big page PDE. */ 3722 3759 uint32_t fGst32BitMbzBigPdeMask; … … 3729 3766 /** @name PAE Guest Paging. 3730 3767 * @{ */ 3768 /** The guest's page directory pointer table, static RC mapping. */ 3769 RCPTRTYPE(PX86PDPT) pGstPaePdptRC; 3731 3770 /** The guest's page directory pointer table, R3 pointer. */ 3732 3771 R3PTRTYPE(PX86PDPT) pGstPaePdptR3; … … 3745 3784 R0PTRTYPE(PX86PDPAE) apGstPaePDsR0[4]; 3746 3785 #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]; 3747 3790 /** The physical addresses of the guest page directories (PAE) pointed to by apGstPagePDsHC/GC. 3748 3791 * @todo Remove this and use aGstPaePdpeRegs instead? */ … … 3806 3849 /** Pointer to the page of the current active CR3 - R0 Ptr. */ 3807 3850 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; 3808 3855 /** @} */ 3809 3856 … … 3829 3876 /** @name Statistics 3830 3877 * @{ */ 3878 /** RC: Pointer to the statistics. */ 3879 RCPTRTYPE(PGMCPUSTATS *) pStatsRC; 3880 /** RC: Which statistic this \#PF should be attributed to. */ 3881 RCPTRTYPE(PSTAMPROFILE) pStatTrap0eAttributionRC; 3831 3882 /** R0: Pointer to the statistics. */ 3832 3883 R0PTRTYPE(PGMCPUSTATS *) pStatsR0; -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r80179 r80180 250 250 CHECK_PADDING_VMCPU(4096, pgm); 251 251 CHECK_PADDING_VMCPU(4096, cpum); 252 #ifdef VBOX_WITH_STATISTICS 253 PRINT_OFFSET(VMCPU, pgm.s.pStatTrap0eAttributionRC); 254 #endif 252 255 253 256 PVM pVM = NULL; NOREF(pVM);
Note:
See TracChangeset
for help on using the changeset viewer.