Changeset 17586 in vbox for trunk/src/VBox/VMM/PGMPool.cpp
- Timestamp:
- Mar 9, 2009 3:28:25 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 44039
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMPool.cpp
r17489 r17586 255 255 pPool->aPages[PGMPOOL_IDX_PD].Core.Key = NIL_RTHCPHYS; 256 256 pPool->aPages[PGMPOOL_IDX_PD].GCPhys = NIL_RTGCPHYS; 257 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY258 257 pPool->aPages[PGMPOOL_IDX_PD].pvPageR3 = 0; 259 258 pPool->aPages[PGMPOOL_IDX_PD].enmKind = PGMPOOLKIND_32BIT_PD; 260 #else261 pPool->aPages[PGMPOOL_IDX_PD].pvPageR3 = pVM->pgm.s.pShw32BitPdR3;262 pPool->aPages[PGMPOOL_IDX_PD].enmKind = PGMPOOLKIND_ROOT_32BIT_PD;263 #endif264 259 pPool->aPages[PGMPOOL_IDX_PD].idx = PGMPOOL_IDX_PD; 265 266 #ifndef VBOX_WITH_PGMPOOL_PAGING_ONLY267 /* The Shadow PAE PDs. This is actually 4 pages! (32 bits guest paging) */268 pPool->aPages[PGMPOOL_IDX_PAE_PD].Core.Key = NIL_RTHCPHYS;269 pPool->aPages[PGMPOOL_IDX_PAE_PD].GCPhys = NIL_RTGCPHYS;270 pPool->aPages[PGMPOOL_IDX_PAE_PD].pvPageR3 = pVM->pgm.s.apShwPaePDsR3[0];271 pPool->aPages[PGMPOOL_IDX_PAE_PD].enmKind = PGMPOOLKIND_ROOT_PAE_PD;272 pPool->aPages[PGMPOOL_IDX_PAE_PD].idx = PGMPOOL_IDX_PAE_PD;273 274 /* The Shadow PAE PDs for PAE guest mode. */275 for (unsigned i = 0; i < X86_PG_PAE_PDPE_ENTRIES; i++)276 {277 pPool->aPages[PGMPOOL_IDX_PAE_PD_0 + i].Core.Key = NIL_RTHCPHYS;278 pPool->aPages[PGMPOOL_IDX_PAE_PD_0 + i].GCPhys = NIL_RTGCPHYS;279 pPool->aPages[PGMPOOL_IDX_PAE_PD_0 + i].pvPageR3 = pVM->pgm.s.apShwPaePDsR3[i];280 pPool->aPages[PGMPOOL_IDX_PAE_PD_0 + i].enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;281 pPool->aPages[PGMPOOL_IDX_PAE_PD_0 + i].idx = PGMPOOL_IDX_PAE_PD_0 + i;282 }283 #endif284 260 285 261 /* The Shadow PDPT. */ 286 262 pPool->aPages[PGMPOOL_IDX_PDPT].Core.Key = NIL_RTHCPHYS; 287 263 pPool->aPages[PGMPOOL_IDX_PDPT].GCPhys = NIL_RTGCPHYS; 288 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY289 264 pPool->aPages[PGMPOOL_IDX_PDPT].pvPageR3 = 0; 290 265 pPool->aPages[PGMPOOL_IDX_PDPT].enmKind = PGMPOOLKIND_PAE_PDPT; 291 #else292 pPool->aPages[PGMPOOL_IDX_PDPT].pvPageR3 = pVM->pgm.s.pShwPaePdptR3;293 pPool->aPages[PGMPOOL_IDX_PDPT].enmKind = PGMPOOLKIND_ROOT_PDPT;294 #endif295 266 pPool->aPages[PGMPOOL_IDX_PDPT].idx = PGMPOOL_IDX_PDPT; 296 267 … … 298 269 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].Core.Key = NIL_RTHCPHYS; 299 270 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].GCPhys = NIL_RTGCPHYS; 300 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY301 271 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].pvPageR3 = 0; 302 #else303 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].pvPageR3 = pVM->pgm.s.pShwPaePdptR3; /* not used - isn't it wrong as well? */304 #endif305 272 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].enmKind = PGMPOOLKIND_64BIT_PML4; 306 273 pPool->aPages[PGMPOOL_IDX_AMD64_CR3].idx = PGMPOOL_IDX_AMD64_CR3; … … 309 276 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].Core.Key = NIL_RTHCPHYS; 310 277 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].GCPhys = NIL_RTGCPHYS; 311 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY312 278 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].pvPageR3 = 0; 313 #else314 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].pvPageR3 = pVM->pgm.s.pShwNestedRootR3;315 #endif316 279 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].enmKind = PGMPOOLKIND_ROOT_NESTED; 317 280 pPool->aPages[PGMPOOL_IDX_NESTED_ROOT].idx = PGMPOOL_IDX_NESTED_ROOT; … … 335 298 pPool->aPages[iPage].iAgeNext = NIL_PGMPOOL_IDX; 336 299 pPool->aPages[iPage].iAgePrev = NIL_PGMPOOL_IDX; 337 #endif338 #ifndef VBOX_WITH_PGMPOOL_PAGING_ONLY339 Assert(VALID_PTR(pPool->aPages[iPage].pvPageR3));340 300 #endif 341 301 Assert(pPool->aPages[iPage].idx == iPage); … … 475 435 PPGMPOOLPAGE pPage = &pPool->aPages[i]; 476 436 477 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY478 437 /* Allocate all pages in low (below 4 GB) memory as 32 bits guests need a page table root in low memory. */ 479 438 pPage->pvPageR3 = MMR3PageAllocLow(pVM); 480 #else481 pPage->pvPageR3 = MMR3PageAlloc(pVM);482 #endif483 439 if (!pPage->pvPageR3) 484 440 { … … 590 546 } 591 547 else if ( ( pPage->cModifications < 96 /* it's cheaper here. */ 592 #ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY593 548 || pgmPoolIsPageLocked(&pVM->pgm.s, pPage) 594 #else595 || pPage->fCR3Mix596 #endif597 549 ) 598 550 && cbBuf <= 4)
Note:
See TracChangeset
for help on using the changeset viewer.