VirtualBox

Changeset 42484 in vbox


Ignore:
Timestamp:
Jul 31, 2012 3:23:06 PM (12 years ago)
Author:
vboxsync
Message:

IEM: ring-3 mapping fixes.

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

Legend:

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

    r42483 r42484  
    45364536     *        living in PGM, but with publicly accessible inlined access methods
    45374537     *        could perhaps be an even better solution. */
    4538     return PGMPhysIemGCPhys2Ptr(IEMCPU_TO_VM(pIemCpu),
    4539                                 GCPhysMem,
    4540                                 RT_BOOL(fAccess & IEM_ACCESS_TYPE_WRITE),
    4541                                 pIemCpu->fByPassHandlers,
    4542                                 ppvMem,
    4543                                 pLock);
     4538    int rc = PGMPhysIemGCPhys2Ptr(IEMCPU_TO_VM(pIemCpu),
     4539                                  GCPhysMem,
     4540                                  RT_BOOL(fAccess & IEM_ACCESS_TYPE_WRITE),
     4541                                  pIemCpu->fByPassHandlers,
     4542                                  ppvMem,
     4543                                  pLock);
     4544    /*Log(("PGMPhysIemGCPhys2Ptr %Rrc pLock=%.*Rhxs\n", rc, sizeof(*pLock), pLock));*/
     4545    return rc;
    45444546}
    45454547
     
    45474549/**
    45484550 * Unmap a page previously mapped by iemMemPageMap.
    4549  *
    4550  * This is currently a dummy function.
    45514551 *
    45524552 * @param   pIemCpu             The IEM per CPU data.
     
    45624562    NOREF(fAccess);
    45634563    NOREF(pvMem);
    4564 #ifndef IN_RING3
    45654564    PGMPhysReleasePageMappingLock(IEMCPU_TO_VM(pIemCpu), pLock);
    4566 #endif
    45674565}
    45684566
     
    50265024    AssertReturn(iMemMap >= 0, iMemMap);
    50275025
    5028     /*
    5029      * If it's bounce buffered, we need to write back the buffer.
    5030      */
    5031     if (   (pIemCpu->aMemMappings[iMemMap].fAccess & (IEM_ACCESS_BOUNCE_BUFFERED | IEM_ACCESS_TYPE_WRITE))
    5032         == (IEM_ACCESS_BOUNCE_BUFFERED | IEM_ACCESS_TYPE_WRITE))
    5033         return iemMemBounceBufferCommitAndUnmap(pIemCpu, iMemMap);
    5034 
    5035 #ifndef IN_RING3
    5036     /* Unlock it. */
    5037     PGMPhysReleasePageMappingLock(IEMCPU_TO_VM(pIemCpu), &pIemCpu->aMemMappingLocks[iMemMap].Lock);
    5038 #endif
     5026    /* If it's bounce buffered, we may need to write back the buffer. */
     5027    if (pIemCpu->aMemMappings[iMemMap].fAccess & IEM_ACCESS_BOUNCE_BUFFERED)
     5028    {
     5029        if (pIemCpu->aMemMappings[iMemMap].fAccess & IEM_ACCESS_TYPE_WRITE)
     5030            return iemMemBounceBufferCommitAndUnmap(pIemCpu, iMemMap);
     5031    }
     5032    /* Otherwise unlock it. */
     5033    else
     5034        PGMPhysReleasePageMappingLock(IEMCPU_TO_VM(pIemCpu), &pIemCpu->aMemMappingLocks[iMemMap].Lock);
    50395035
    50405036    /* Free the entry. */
  • trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp

    r42453 r42484  
    41074107#endif
    41084108
    4109 
    41104109            Log6(("PGMPhysIemGCPhys2Ptr: GCPhys=%RGp rc=%Rrc pPage=%R[pgmpage] *ppv=%p\n", GCPhys, rc, pPage, *ppv));
    41114110        }
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