Changeset 9953 in vbox
- Timestamp:
- Jun 26, 2008 1:47:21 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r9949 r9953 3056 3056 } 3057 3057 3058 /** 3059 * Clear references to shadowed pages in a 64-bit level 4 page table. 3060 * 3061 * @param pPool The pool. 3062 * @param pPage The page. 3063 * @param pShwPML4 The shadow page directory pointer table (mapping of the page). 3064 */ 3065 DECLINLINE(void) pgmPoolTrackDerefPML464Bit(PPGMPOOL pPool, PPGMPOOLPAGE pPage, PX86PML4 pShwPML4) 3066 { 3067 for (unsigned i = 0; i < ELEMENTS(pShwPML4->a); i++) 3068 { 3069 if (pShwPML4->a[i].n.u1Present) 3070 { 3071 PPGMPOOLPAGE pSubPage = (PPGMPOOLPAGE)RTAvloHCPhysGet(&pPool->HCPhysTree, pShwPML4->a[i].u & X86_PDPE_PG_MASK); 3072 if (pSubPage) 3073 pgmPoolTrackFreeUser(pPool, pSubPage, pPage->idx, i); 3074 else 3075 AssertFatalMsgFailed(("%RX64\n", pShwPML4->a[i].u & X86_PML4E_PG_MASK)); 3076 /** @todo 64-bit guests: have to ensure that we're not exhausting the dynamic mappings! */ 3077 } 3078 } 3079 } 3080 3058 3081 3059 3082 /** … … 3143 3166 case PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT: 3144 3167 pgmPoolTrackDerefPDPT64Bit(pPool, pPage, (PX86PDPT)pvShw); 3168 break; 3169 3170 case PGMPOOLKIND_64BIT_PML4_FOR_64BIT_PML4: 3171 pgmPoolTrackDerefPML464Bit(pPool, pPage, (PX86PML4)pvShw); 3145 3172 break; 3146 3173
Note:
See TracChangeset
for help on using the changeset viewer.