VirtualBox

Changeset 9953

Show
Ignore:
Timestamp:
06/26/08 15:47:21 (5 months ago)
Author:
vboxsync
Message:

Clear reference to PML4 table

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r9949 r9953  
    30563056} 
    30573057 
     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 */ 
     3065DECLINLINE(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 
    30583081 
    30593082/** 
     
    31433166        case PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT: 
    31443167            pgmPoolTrackDerefPDPT64Bit(pPool, pPage, (PX86PDPT)pvShw); 
     3168            break; 
     3169 
     3170        case PGMPOOLKIND_64BIT_PML4_FOR_64BIT_PML4: 
     3171            pgmPoolTrackDerefPML464Bit(pPool, pPage, (PX86PML4)pvShw); 
    31453172            break; 
    31463173 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy