Changeset 86488 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Oct 8, 2020 8:32:24 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 140799
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 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)
Note:
See TracChangeset
for help on using the changeset viewer.