VirtualBox

Changeset 15428 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Dec 13, 2008 10:02:55 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
40879
Message:

PGM: PGMDynMapHCPageOff -> pgmDynMapHCPageOff, making it internal and faster.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMInternal.h

    r15425 r15428  
    33623362#endif /* VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 */
    33633363
     3364#if defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) || defined(IN_RC)
     3365/**
     3366 * Temporarily maps one host page specified by HC physical address, returning
     3367 * pointer within the page.
     3368 *
     3369 * Be WARNED that the dynamic page mapping area is small, 8 pages, thus the space is
     3370 * reused after 8 mappings (or perhaps a few more if you score with the cache).
     3371 *
     3372 * @returns The address corresponding to HCPhys.
     3373 * @param   pPGM        Pointer to the PVM instance data.
     3374 * @param   HCPhys      HC Physical address of the page.
     3375 */
     3376DECLINLINE(void *) pgmDynMapHCPageOff(PPGM pPGM, RTHCPHYS HCPhys)
     3377{
     3378    void *pv;
     3379# ifdef VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0
     3380    pgmR0DynMapHCPageInlined(pPGM, HCPhys & ~(RTHCPHYS)PAGE_OFFSET_MASK, &pv);
     3381# else
     3382    PGMDynMapHCPage(PGM2VM(pPGM), HCPhys & ~(RTHCPHYS)PAGE_OFFSET_MASK, &pv);
     3383# endif
     3384    pv = (void *)((uintptr_t)pv | (HCPhys & PAGE_OFFSET_MASK));
     3385    return pv;
     3386}
     3387#endif /*  VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 || IN_RC */
     3388
     3389
    33643390#ifndef IN_RC
    33653391/**
  • trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp

    r15425 r15428  
    12361236                    {
    12371237#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1238                         void *pvSrc = NULL;
    1239                         PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvSrc);
     1238                        void *pvSrc = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    12401239#else
    12411240                        void *pvSrc = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    12841283                    {
    12851284#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1286                         void *pvSrc = NULL;
    1287                         PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvSrc);
     1285                        void *pvSrc = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    12881286#else
    12891287                        void *pvSrc = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    13131311                        {
    13141312#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1315                             void *pvSrc = NULL;
    1316                             PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvSrc);
     1313                            void *pvSrc = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    13171314#else
    13181315                            void *pvSrc = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    15371534                        {
    15381535#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1539                             void *pvDst = NULL;
    1540                             PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvDst);
     1536                            void *pvDst = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    15411537#else
    15421538                            void *pvDst = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    15811577                        {
    15821578#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1583                             void *pvDst = NULL;
    1584                             PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvDst);
     1579                            void *pvDst = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    15851580#else
    15861581                            void *pvDst = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    16251620                    {
    16261621#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1627                         void *pvDst = NULL;
    1628                         PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvDst);
     1622                        void *pvDst = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    16291623#else
    16301624                        void *pvDst = PGMRAMRANGE_GETHCPTR(pRam, off)
     
    16531647                        {
    16541648#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
    1655                             void *pvDst = NULL;
    1656                             PGMDynMapHCPageOff(pVM, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK), &pvDst);
     1649                            void *pvDst = pgmDynMapHCPageOff(&pVM->pgm.s, PGM_PAGE_GET_HCPHYS(pPage) + (off & PAGE_OFFSET_MASK));
    16571650#else
    16581651                            void *pvDst = PGMRAMRANGE_GETHCPTR(pRam, off)
Note: See TracChangeset for help on using the changeset viewer.

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