Changeset 86488 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Oct 8, 2020 8:32:24 AM (4 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
r86476 r86488 1418 1418 AssertReturn(pPde, VERR_INTERNAL_ERROR_3); 1419 1419 Log(("pgmShwMakePageSupervisorAndWritable: PDE=%#llx", pPde->u)); 1420 pPde-> n.u1Write = 1;1420 pPde->u |= X86_PDE_RW; 1421 1421 Log(("-> PDE=%#llx (32)\n", pPde->u)); 1422 1422 break; -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r86487 r86488 345 345 LogFlow(("pgmPoolMonitorChainChanging: PGMPOOLKIND_32BIT_PD %x\n", iShw)); 346 346 STAM_COUNTER_INC(&pPool->CTX_MID_Z(StatMonitor,FaultPD)); 347 if (uShw.pPD->a[iShw].n.u1Present) 347 X86PGUINT const uPde = uShw.pPD->a[iShw].u; 348 if (uPde & X86_PDE_P) 348 349 { 349 LogFlow(("pgmPoolMonitorChainChanging: 32 bit pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPD->a[iShw].u)); 350 pgmPoolFree(pVM, 351 uShw.pPD->a[iShw].u & X86_PDE_PAE_PG_MASK, 352 pPage->idx, 353 iShw); 350 LogFlow(("pgmPoolMonitorChainChanging: 32 bit pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uPde)); 351 pgmPoolFree(pVM, uPde & X86_PDE_PG_MASK, pPage->idx, iShw); 354 352 ASMAtomicWriteU32(&uShw.pPD->a[iShw].u, 0); 355 353 } 354 356 355 /* paranoia / a bit assumptive. */ 357 356 if ( (off & 3) … … 362 361 && iShw2 < RT_ELEMENTS(uShw.pPD->a)) 363 362 { 364 if (uShw.pPD->a[iShw2].n.u1Present) 363 X86PGUINT const uPde2 = uShw.pPD->a[iShw2].u; 364 if (uPde2 & X86_PDE_P) 365 365 { 366 LogFlow(("pgmPoolMonitorChainChanging: 32 bit pd iShw=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPD->a[iShw2].u)); 367 pgmPoolFree(pVM, 368 uShw.pPD->a[iShw2].u & X86_PDE_PAE_PG_MASK, 369 pPage->idx, 370 iShw2); 366 LogFlow(("pgmPoolMonitorChainChanging: 32 bit pd iShw=%#x: %RX64 -> freeing it!\n", iShw2, uPde2)); 367 pgmPoolFree(pVM, uPde2 & X86_PDE_PG_MASK, pPage->idx, iShw2); 371 368 ASMAtomicWriteU32(&uShw.pPD->a[iShw2].u, 0); 372 369 } … … 4482 4479 for (unsigned i = 0; i < RT_ELEMENTS(pShwPD->a); i++) 4483 4480 { 4484 if ( pShwPD->a[i].n.u1Present4481 X86PGUINT const uPde = pShwPD->a[i].u; 4485 4482 #ifndef PGM_WITHOUT_MAPPINGS 4486 && !(pShwPD->a[i].u & PGM_PDFLAGS_MAPPING) 4483 if ((uPde & (X86_PDE_P | PGM_PDFLAGS_MAPPING)) == X86_PDE_P) 4484 #else 4485 if (uPde & X86_PDE_P) 4487 4486 #endif 4488 )4489 4487 { 4490 4488 PPGMPOOLPAGE pSubPage = (PPGMPOOLPAGE)RTAvloHCPhysGet(&pPool->HCPhysTree, pShwPD->a[i].u & X86_PDE_PG_MASK); -
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r86476 r86488 74 74 # define SHW_PD_MASK X86_PD_MASK 75 75 # define SHW_TOTAL_PD_ENTRIES X86_PG_ENTRIES 76 # define SHW_PDE_IS_P(Pde) ( (Pde). n.u1Present)77 # define SHW_PDE_IS_A(Pde) ( (Pde). n.u1Accessed)78 # define SHW_PDE_IS_BIG(Pde) ( (Pde). b.u1Size)76 # define SHW_PDE_IS_P(Pde) ( (Pde).u & X86_PDE_P ) 77 # define SHW_PDE_IS_A(Pde) ( (Pde).u & X86_PDE_A ) 78 # define SHW_PDE_IS_BIG(Pde) ( (Pde).u & X86_PDE_PS ) 79 79 # define SHW_PDE_ATOMIC_SET(Pde, uNew) do { ASMAtomicWriteU32(&(Pde).u, (uNew)); } while (0) 80 80 # define SHW_PDE_ATOMIC_SET2(Pde, Pde2) do { ASMAtomicWriteU32(&(Pde).u, (Pde2).u); } while (0) -
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r86473 r86488 2345 2345 { 2346 2346 X86PDE PdeSrc = pPDSrc->a[iPD]; 2347 if (PdeSrc. n.u1Present)2347 if (PdeSrc.u & X86_PDE_P) 2348 2348 { 2349 if ( PdeSrc.b.u1Size&& fPSE)2349 if ((PdeSrc.u & X86_PDE_PS) && fPSE) 2350 2350 pHlp->pfnPrintf(pHlp, 2351 2351 "%04X - %RGp P=%d U=%d RW=%d G=%d - BIG\n", 2352 2352 iPD, 2353 pgmGstGet4MBPhysPage(pVM, PdeSrc), 2354 PdeSrc.b.u1Present, PdeSrc.b.u1User, PdeSrc.b.u1Write, PdeSrc.b.u1Global&& fPGE);2353 pgmGstGet4MBPhysPage(pVM, PdeSrc), PdeSrc.u & X86_PDE_P, !!(PdeSrc.u & X86_PDE_US), 2354 !!(PdeSrc.u & X86_PDE_RW), (PdeSrc.u & X86_PDE4M_G) && fPGE); 2355 2355 else 2356 2356 pHlp->pfnPrintf(pHlp, 2357 2357 "%04X - %RGp P=%d U=%d RW=%d [G=%d]\n", 2358 2358 iPD, 2359 (RTGCPHYS)(PdeSrc.u & X86_PDE_PG_MASK), 2360 PdeSrc.n.u1Present, PdeSrc.n.u1User, PdeSrc.n.u1Write, PdeSrc.b.u1Global&& fPGE);2359 (RTGCPHYS)(PdeSrc.u & X86_PDE_PG_MASK), PdeSrc.u & X86_PDE_P, !!(PdeSrc.u & X86_PDE_US), 2360 !!(PdeSrc.u & X86_PDE_RW), (PdeSrc.u & X86_PDE4M_G) && fPGE); 2361 2361 } 2362 2362 } -
trunk/src/VBox/VMM/include/PGMInline.h
r86465 r86488 638 638 { 639 639 RTGCPHYS GCPhys = Pde.u & X86_PDE4M_PG_MASK; 640 GCPhys |= (RTGCPHYS) Pde.b.u8PageNoHigh << 32;640 GCPhys |= (RTGCPHYS)(Pde.u & X86_PDE4M_PG_HIGH_MASK) << X86_PDE4M_PG_HIGH_SHIFT; 641 641 642 642 return GCPhys & pVM->pgm.s.GCPhys4MBPSEMask;
Note:
See TracChangeset
for help on using the changeset viewer.