VirtualBox

Changeset 9953 in vbox


Ignore:
Timestamp:
Jun 26, 2008 1:47:21 PM (17 years ago)
Author:
vboxsync
Message:

Clear reference to PML4 table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette