VirtualBox

Changeset 9589 in vbox


Ignore:
Timestamp:
Jun 11, 2008 8:43:25 AM (17 years ago)
Author:
vboxsync
Message:

AMD64 paging updates

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r9570 r9589  
    817817    pPml4e = &pPGM->pHCPaePML4->a[iPml4e];
    818818    if (!pPml4e->n.u1Present)
    819         return VERR_PAGE_TABLE_NOT_PRESENT;
     819        return VERR_PAGE_MAP_LEVEL4_NOT_PRESENT;
    820820
    821821    pShwPage = pgmPoolGetPage(pPool, pPml4e->u & X86_PML4E_PG_MASK);
     
    828828    *ppPdpt = pPdpt;
    829829    if (!pPdpe->n.u1Present)
    830         return VERR_PAGE_TABLE_NOT_PRESENT;
     830        return VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT;
    831831
    832832    pShwPage = pgmPoolGetPage(pPool, pPdpe->u & X86_PDPE_PG_MASK);
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r9570 r9589  
    26032603        const unsigned  iPDDst = ((GCPtrPage >> SHW_PD_SHIFT) & SHW_PD_MASK);
    26042604        PX86PDPAE       pPDDst;
    2605         PX86PDPT        pPdptDst;
    26062605        X86PDEPAE       PdeDst;
    26072606
    2608         int rc = PGMShwGetLongModePDPtr(pVM, GCPtrPage, &pPdptDst, &pPDDst);
     2607        int rc = PGMShwGetAllocLongModePDPtr(pVM, GCPtrPage, &pPDDst);
    26092608        if (rc != VINF_SUCCESS)
    26102609        {
    2611             AssertMsg(rc == VERR_PAGE_TABLE_NOT_PRESENT, ("Unexpected rc=%Vrc\n", rc));
     2610            AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
    26122611            return rc;
    26132612        }
     
    29442943            if (rc != VINF_SUCCESS)
    29452944            {
    2946                 AssertMsg(rc == VERR_PAGE_TABLE_NOT_PRESENT, ("Unexpected rc=%Vrc\n", rc));
    2947                 return rc;
     2945                if (rc == VERR_PAGE_MAP_LEVEL4_NOT_PRESENT)
     2946                    break; /* next PML4E */
     2947
     2948                AssertMsg(rc == VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT, ("Unexpected rc=%Vrc\n", rc));
     2949                continue;   /* next PDPTE */
    29482950            }
    29492951            Assert(pPDDst);
     
    29652967                            if (rc != VINF_SUCCESS)
    29662968                            {
    2967                                 AssertMsg(rc == VERR_PAGE_TABLE_NOT_PRESENT, ("Unexpected rc=%Vrc\n", rc));
    2968                                 return rc;
     2969                                AssertMsg(rc == VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT, ("Unexpected rc=%Vrc\n", rc));
     2970                                continue;
    29692971                            }
    29702972
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