Changeset 17134 in vbox for trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
- Timestamp:
- Feb 25, 2009 3:10:11 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 43384
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r17059 r17134 4643 4643 uint32_t iOldShwUserTable = pVM->pgm.s.iShwUserTable; 4644 4644 uint32_t iOldShwUser = pVM->pgm.s.iShwUser; 4645 PPGMPOOLPAGE pNewShwPageCR3; 4645 4646 4646 4647 Assert(!(GCPhysCR3 >> (PAGE_SHIFT + 32))); 4647 rc = pgmPoolAlloc(pVM, GCPhysCR3 & GST_CR3_PAGE_MASK, BTH_PGMPOOLKIND_ROOT, SHW_POOL_ROOT_IDX, GCPhysCR3 >> PAGE_SHIFT, &p VM->pgm.s.CTX_SUFF(pShwPageCR3));4648 rc = pgmPoolAlloc(pVM, GCPhysCR3 & GST_CR3_PAGE_MASK, BTH_PGMPOOLKIND_ROOT, SHW_POOL_ROOT_IDX, GCPhysCR3 >> PAGE_SHIFT, &pNewShwPageCR3); 4648 4649 if (rc == VERR_PGM_POOL_FLUSHED) 4649 4650 { 4650 4651 Log(("MapCR3: PGM pool flushed -> signal sync cr3\n")); 4651 pVM->pgm.s.CTX_SUFF(pShwPageCR3) = pOldShwPageCR3;4652 4652 Assert(VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3)); 4653 4653 return VINF_PGM_SYNC_CR3; … … 4655 4655 AssertRCReturn(rc, rc); 4656 4656 rc = VINF_SUCCESS; 4657 4657 4658 pVM->pgm.s.iShwUser = SHW_POOL_ROOT_IDX; 4658 4659 pVM->pgm.s.iShwUserTable = GCPhysCR3 >> PAGE_SHIFT; 4660 pVM->pgm.s.CTX_SUFF(pShwPageCR3) = pNewShwPageCR3; 4659 4661 # ifdef IN_RING0 4660 4662 pVM->pgm.s.pShwPageCR3R3 = MMHyperCCToR3(pVM, pVM->pgm.s.CTX_SUFF(pShwPageCR3)); … … 4682 4684 Assert(VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3_NON_GLOBAL)); 4683 4685 # endif 4684 rc = PGMMapActivateAll(pVM);4686 rc = pgmMapActivateCR3(pVM, pNewShwPageCR3); 4685 4687 AssertRCReturn(rc, rc); 4686 4688 # endif … … 4783 4785 # ifndef PGM_WITHOUT_MAPPINGS 4784 4786 /* Remove the hypervisor mappings from the shadow page table. */ 4785 PGMMapDeactivateAll(pVM);4787 pgmMapDeactivateCR3(pVM, pVM->pgm.s.CTX_SUFF(pShwPageCR3)); 4786 4788 # endif 4787 4789
Note:
See TracChangeset
for help on using the changeset viewer.