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