Changeset 11525 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Aug 21, 2008 9:07:51 AM (16 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r11449 r11525 326 326 if ( PdeSrc.b.u1Size 327 327 && fBigPagesSupported) 328 GCPhys = (PdeSrc.u & GST_PDE_BIG_PG_MASK)328 GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc) 329 329 | ((RTGCPHYS)pvFault & (GST_BIG_PAGE_OFFSET_MASK ^ PAGE_OFFSET_MASK)); 330 330 else … … 1211 1211 /* Before freeing the page, check if anything really changed. */ 1212 1212 PPGMPOOLPAGE pShwPage = pgmPoolGetPageByHCPhys(pVM, PdeDst.u & SHW_PDE_PG_MASK); 1213 RTGCPHYS GCPhys = PdeSrc.u & GST_PDE_BIG_PG_MASK;1213 RTGCPHYS GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc); 1214 1214 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 1215 1215 /* Select the right PDE as we're emulating a 4MB page directory with two 2 MB shadow PDEs.*/ … … 1591 1591 else 1592 1592 { 1593 GCPhys = PdeSrc.u & GST_PDE_BIG_PG_MASK;1593 GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc); 1594 1594 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 1595 1595 /* Select the right PDE as we're emulating a 4MB page directory with two 2 MB shadow PDEs.*/ … … 1706 1706 */ 1707 1707 /* Calculate the GC physical address of this 4KB shadow page. */ 1708 RTGCPHYS GCPhys = (PdeSrc.u & GST_PDE_BIG_PG_MASK) | ((RTGCUINTPTR)GCPtrPage & GST_BIG_PAGE_OFFSET_MASK);1708 RTGCPHYS GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc) | ((RTGCUINTPTR)GCPtrPage & GST_BIG_PAGE_OFFSET_MASK); 1709 1709 /* Find ram range. */ 1710 1710 PPGMPAGE pPage; … … 2355 2355 else 2356 2356 { 2357 GCPhys = PdeSrc.u & GST_PDE_BIG_PG_MASK;2357 GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc); 2358 2358 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 2359 2359 /* Select the right PDE as we're emulating a 4MB page directory with two 2 MB shadow PDEs.*/ … … 3335 3335 else 3336 3336 { 3337 GCPhys = PdeSrc.u & GST_PDE_BIG_PG_MASK;3337 GCPhys = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc); 3338 3338 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 3339 3339 /* Select the right PDE as we're emulating a 4MB page directory with two 2 MB shadow PDEs.*/ … … 3853 3853 } 3854 3854 # endif 3855 GCPhysGst = PdeSrc.u & GST_PDE_BIG_PG_MASK;3855 GCPhysGst = GST_GET_PDE_BIG_PG_GCPHYS(PdeSrc); 3856 3856 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 3857 3857 GCPhysGst |= GCPtr & RT_BIT(X86_PAGE_2M_SHIFT); -
trunk/src/VBox/VMM/VMMAll/PGMAllGst.h
r10674 r11525 47 47 #undef GST_PDPT_MASK 48 48 #undef GST_PDPE_PG_MASK 49 #undef GST_GET_PDE_BIG_PG_GCPHYS 49 50 50 51 #if PGM_GST_TYPE == PGM_TYPE_REAL \ … … 72 73 # define GST_PDE_PG_MASK X86_PDE_PG_MASK 73 74 # define GST_PDE_BIG_PG_MASK X86_PDE4M_PG_MASK 75 # define GST_GET_PDE_BIG_PG_GCPHYS(PdeGst) pgmGstGet4MBPhysPage(&pVM->pgm.s, PdeGst) 74 76 # define GST_PD_SHIFT X86_PD_SHIFT 75 77 # define GST_PD_MASK X86_PD_MASK … … 93 95 # define GST_PDE_PG_MASK X86_PDE_PAE_PG_MASK_FULL 94 96 # define GST_PDE_BIG_PG_MASK X86_PDE2M_PAE_PG_MASK 97 # define GST_GET_PDE_BIG_PG_GCPHYS(PdeGst) (PdeGst.u & GST_PDE_BIG_PG_MASK) 95 98 # define GST_PD_SHIFT X86_PD_PAE_SHIFT 96 99 # define GST_PD_MASK X86_PD_PAE_MASK -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r9836 r11525 1002 1002 if ((fFlags & X86_CR4_PSE) && Pde.b.u1Size) 1003 1003 { /* (big page) */ 1004 rc = PGMPhysGCPhys2HCPtr(pVM, (Pde.u & X86_PDE4M_PG_MASK) | ((RTGCUINTPTR)GCPtr & X86_PAGE_4M_OFFSET_MASK), 1 /* we always stay within one page */, pHCPtr);1004 rc = PGMPhysGCPhys2HCPtr(pVM, pgmGstGet4MBPhysPage(&pVM->pgm.s, Pde) | ((RTGCUINTPTR)GCPtr & X86_PAGE_4M_OFFSET_MASK), 1 /* we always stay within one page */, pHCPtr); 1005 1005 } 1006 1006 else
Note:
See TracChangeset
for help on using the changeset viewer.