- Timestamp:
- May 18, 2015 12:02:58 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pgm.h
r55900 r55903 121 121 122 122 /** 123 * \#PF Handler callback for physical access handler ranges in RC.124 *125 * @returns VBox status code (appropriate for RC return).126 * @param pVM VM Handle.127 * @param uErrorCode CPU Error code.128 * @param pRegFrame Trap register frame.129 * NULL on DMA and other non CPU access.130 * @param pvFault The fault address (cr2).131 * @param GCPhysFault The GC physical address corresponding to pvFault.132 * @param pvUser User argument.133 */134 typedef DECLCALLBACK(int) FNPGMRCPHYSPFHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,135 RTGCPHYS GCPhysFault, void *pvUser);136 /** Pointer to PGM access callback. */137 typedef FNPGMRCPHYSPFHANDLER *PFNPGMRCPHYSPFHANDLER;138 139 /**140 * \#PF Handler callback for physical access handler ranges in R0.141 *142 * @returns VBox status code (appropriate for R0 return).143 * @param pVM VM Handle.144 * @param uErrorCode CPU Error code.145 * @param pRegFrame Trap register frame.146 * NULL on DMA and other non CPU access.147 * @param pvFault The fault address (cr2).148 * @param GCPhysFault The GC physical address corresponding to pvFault.149 * @param pvUser User argument.150 */151 typedef DECLCALLBACK(int) FNPGMR0PHYSPFHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,152 RTGCPHYS GCPhysFault, void *pvUser);153 /** Pointer to PGM access callback. */154 typedef FNPGMR0PHYSPFHANDLER *PFNPGMR0PHYSPFHANDLER;155 156 /**157 123 * Guest Access type 158 124 */ … … 165 131 } PGMACCESSTYPE; 166 132 133 134 /** 135 * \#PF Handler callback for physical access handler ranges in RC and R0. 136 * 137 * @returns VBox status code (appropriate for RC return). 138 * @param pVM VM Handle. 139 * @param pVCpu Pointer to the cross context CPU context for the 140 * calling EMT. 141 * @param uErrorCode CPU Error code. 142 * @param pRegFrame Trap register frame. 143 * NULL on DMA and other non CPU access. 144 * @param pvFault The fault address (cr2). 145 * @param GCPhysFault The GC physical address corresponding to pvFault. 146 * @param pvUser User argument. 147 */ 148 typedef DECLCALLBACK(int) FNPGMRZPHYSPFHANDLER(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 149 RTGCPHYS GCPhysFault, void *pvUser); 150 /** Pointer to PGM access callback. */ 151 typedef FNPGMRZPHYSPFHANDLER *PFNPGMRZPHYSPFHANDLER; 152 153 167 154 /** 168 155 * \#PF Handler callback for physical access handler ranges (MMIO among others) in HC. … … 174 161 * @returns VINF_PGM_HANDLER_DO_DEFAULT if the caller should carry out the access operation. 175 162 * @param pVM VM Handle. 163 * @param pVCpu Pointer to the cross context CPU context for the 164 * calling EMT. 176 165 * @param GCPhys The physical address the guest is writing to. 177 166 * @param pvPhys The HC mapping of that address. … … 179 168 * @param cbBuf How much it's reading/writing. 180 169 * @param enmAccessType The access type. 170 * @param enmOrigin The origin of this call. 181 171 * @param pvUser User argument. 182 172 * 183 173 * @todo Add pVCpu, possibly replacing pVM. 184 174 */ 185 typedef DECLCALLBACK(int) FNPGMR3PHYSHANDLER(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf,186 PGMACCESSTYPE enmAccessType, void *pvUser);175 typedef DECLCALLBACK(int) FNPGMR3PHYSHANDLER(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 176 PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser); 187 177 /** Pointer to PGM access callback. */ 188 178 typedef FNPGMR3PHYSHANDLER *PFNPGMR3PHYSHANDLER; … … 222 212 * @param pvUser User argument. 223 213 */ 224 typedef DECLCALLBACK(int) FNPGMRCVIRTPFHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,214 typedef DECLCALLBACK(int) FNPGMRCVIRTPFHANDLER(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 225 215 RTGCPTR pvRange, uintptr_t offRange, void *pvUser); 226 216 /** Pointer to PGM access callback. */ … … 578 568 VMMR3_INT_DECL(int) PGMR3HandlerPhysicalTypeRegisterEx(PVM pVM, PGMPHYSHANDLERKIND enmKind, 579 569 PFNPGMR3PHYSHANDLER pfnHandlerR3, 580 R0PTRTYPE(PFNPGMR 0PHYSPFHANDLER) pfnPfHandlerR0,581 RCPTRTYPE(PFNPGMR CPHYSPFHANDLER) pfnPfHandlerRC,570 R0PTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerR0, 571 RCPTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerRC, 582 572 const char *pszDesc, PPGMPHYSHANDLERTYPE phType); 583 573 VMMR3DECL(int) PGMR3HandlerPhysicalTypeRegister(PVM pVM, PGMPHYSHANDLERKIND enmKind, -
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r55899 r55903 1735 1735 * @returns VBox status code (appropriate for GC return). 1736 1736 * @param pVM Pointer to the VM. 1737 * @param pVCpu Pointer to the cross context CPU context for the 1738 * calling EMT. 1737 1739 * @param uErrorCode CPU Error code. 1738 1740 * @param pCtxCore Trap register frame. … … 1741 1743 * @param pvUser Pointer to the MMIO ring-3 range entry. 1742 1744 */ 1743 DECLEXPORT(int) iomMmioPfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pCtxCore, RTGCPTR pvFault,1745 DECLEXPORT(int) iomMmioPfHandler(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pCtxCore, RTGCPTR pvFault, 1744 1746 RTGCPHYS GCPhysFault, void *pvUser) 1745 1747 { 1746 1748 LogFlow(("iomMmioPfHandler: GCPhys=%RGp uErr=%#x pvFault=%RGv rip=%RGv\n", 1747 1749 GCPhysFault, (uint32_t)uErrorCode, pvFault, (RTGCPTR)pCtxCore->rip)); 1748 VBOXSTRICTRC rcStrict = iomMMIOHandler(pVM, VMMGetCpu(pVM), (uint32_t)uErrorCode, pCtxCore, GCPhysFault, pvUser);1750 VBOXSTRICTRC rcStrict = iomMMIOHandler(pVM, pVCpu, (uint32_t)uErrorCode, pCtxCore, GCPhysFault, pvUser); 1749 1751 return VBOXSTRICTRC_VAL(rcStrict); 1750 1752 } … … 1793 1795 * @returns VINF_PGM_HANDLER_DO_DEFAULT if the caller should carry out the access operation. 1794 1796 * @param pVM Pointer to the VM. 1797 * @param pVCpu The cross context CPU structure for the calling EMT. 1795 1798 * @param GCPhys The physical address the guest is writing to. 1796 1799 * @param pvPhys The HC mapping of that address. … … 1798 1801 * @param cbBuf How much it's reading/writing. 1799 1802 * @param enmAccessType The access type. 1803 * @param enmOrigin Who is making the access. 1800 1804 * @param pvUser Pointer to the MMIO range entry. 1801 1805 */ 1802 DECLCALLBACK(int) iomR3MmioHandler(PVM pVM, RTGCPHYS GCPhysFault, void *pvPhys, void *pvBuf, size_t cbBuf, 1803 PGMACCESSTYPE enmAccessType, void *pvUser) 1804 { 1805 PVMCPU pVCpu = VMMGetCpu(pVM); 1806 DECLCALLBACK(int) iomR3MmioHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhysFault, void *pvPhys, void *pvBuf, size_t cbBuf, 1807 PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser) 1808 { 1806 1809 PIOMMMIORANGE pRange = (PIOMMMIORANGE)pvUser; 1807 1810 STAM_COUNTER_INC(&pVM->iom.s.StatR3MMIOHandler); … … 1809 1812 AssertMsg(cbBuf >= 1 && cbBuf <= 16, ("%zu\n", cbBuf)); 1810 1813 AssertPtr(pRange); 1811 NOREF(pvPhys); 1814 NOREF(pvPhys); NOREF(enmOrigin); 1812 1815 1813 1816 /* -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r55896 r55903 260 260 } 261 261 262 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, GCPhysFault, pvUser);262 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, GCPhysFault, pvUser); 263 263 264 264 # ifdef VBOX_WITH_STATISTICS … … 330 330 STAM_PROFILE_START(&pCur->Stat, h); 331 331 RTGCPTR GCPtrStart = pCur->Core.Key; 332 void *pvUser = pCur->CTX_SUFF(pvUser); 332 333 pgmUnlock(pVM); 333 334 *pfLockTaken = false; 334 335 335 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, GCPtrStart, pvFault -GCPtrStart,336 p Cur->pvUserRC);336 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, GCPtrStart, 337 pvFault - GCPtrStart, pvUser); 337 338 338 339 # ifdef VBOX_WITH_STATISTICS … … 370 371 STAM_PROFILE_START(&pCur->Stat, h); 371 372 RTGCPTR GCPtrStart = pCur->Core.Key; 373 void *pvUser = pCur->CTX_SUFF(pvUser); 372 374 pgmUnlock(pVM); 373 375 *pfLockTaken = false; … … 377 379 - (GCPtrStart & PAGE_OFFSET_MASK); 378 380 Assert(off < pCur->cb); 379 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, GCPtrStart, off, pCur->pvUserRC);381 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, GCPtrStart, off, pvUser); 380 382 381 383 # ifdef VBOX_WITH_STATISTICS … … 721 723 STAM_PROFILE_START(&pCur->Stat, h); 722 724 PPGMVIRTHANDLERTYPEINT pCurType = PGMVIRTANDLER_GET_TYPE(pVM, pCur); 725 void *pvUser = pCur->CTX_SUFF(pvUser); 723 726 pgmUnlock(pVM); 724 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, pvFault -pCur->Core.Key,725 p Cur->pvUserRC);727 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key, 728 pvFault - pCur->Core.Key, pvUser); 726 729 pgmLock(pVM); 727 730 STAM_PROFILE_STOP(&pCur->Stat, h); … … 816 819 # ifdef IN_RC 817 820 STAM_PROFILE_START(&pCur->Stat, h); 821 void *pvUser = pCur->CTX_SUFF(pvUser); 818 822 pgmUnlock(pVM); 819 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, pvFault -pCur->Core.Key,820 p Cur->pvUserRC);823 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key, 824 pvFault - pCur->Core.Key, pvUser); 821 825 pgmLock(pVM); 822 826 STAM_PROFILE_STOP(&pCur->Stat, h); -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r55900 r55903 58 58 * @returns VBox status code (appropriate for trap handling and GC return). 59 59 * @param pVM Pointer to the VM. 60 * @param pVCpu Pointer to the cross context CPU context for the 61 * calling EMT. 60 62 * @param uErrorCode CPU Error code. 61 63 * @param pRegFrame Trap register frame. … … 64 66 * @param pvUser User argument. 65 67 */ 66 VMMDECL(int) pgmPhysPfHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,68 VMMDECL(int) pgmPhysPfHandlerRedirectToHC(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 67 69 RTGCPHYS GCPhysFault, void *pvUser) 68 70 { 69 NOREF(pVM); NOREF( uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(GCPhysFault); NOREF(pvUser);71 NOREF(pVM); NOREF(pVCpu); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(GCPhysFault); NOREF(pvUser); 70 72 return (uErrorCode & X86_TRAP_PF_RW) ? VINF_IOM_R3_MMIO_WRITE : VINF_IOM_R3_MMIO_READ; 71 73 } … … 78 80 * @returns VBox status code (appropriate for trap handling and GC return). 79 81 * @param pVM Pointer to the VM. 82 * @param pVCpu Pointer to the cross context CPU context for the 83 * calling EMT. 80 84 * @param uErrorCode CPU Error code. 81 85 * @param pRegFrame Trap register frame. … … 84 88 * @param pvUser User argument. Pointer to the ROM range structure. 85 89 */ 86 DECLEXPORT(int) pgmPhysRomWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,90 DECLEXPORT(int) pgmPhysRomWritePfHandler(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 87 91 RTGCPHYS GCPhysFault, void *pvUser) 88 92 { … … 90 94 PPGMROMRANGE pRom = (PPGMROMRANGE)pvUser; 91 95 uint32_t iPage = (GCPhysFault - pRom->GCPhys) >> PAGE_SHIFT; 92 PVMCPU pVCpu = VMMGetCpu(pVM);93 96 NOREF(uErrorCode); NOREF(pvFault); 94 97 … … 2131 2134 /* Release the PGM lock as MMIO handlers take the IOM lock. (deadlock prevention) */ 2132 2135 pgmUnlock(pVM); 2133 rc = pfnHandler(pVM, GCPhys, (void *)pvSrc, pvBuf, cb, PGMACCESSTYPE_READ, pvUser);2136 rc = pfnHandler(pVM, pVCpu, GCPhys, (void *)pvSrc, pvBuf, cb, PGMACCESSTYPE_READ, enmOrigin, pvUser); 2134 2137 pgmLock(pVM); 2135 2138 # ifdef VBOX_WITH_STATISTICS … … 2391 2394 /* Release the PGM lock as MMIO handlers take the IOM lock. (deadlock prevention) */ 2392 2395 pgmUnlock(pVM); 2393 rc = pfnHandler(pVM, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, pvUser);2396 rc = pfnHandler(pVM, pVCpu, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, enmOrigin, pvUser); 2394 2397 pgmLock(pVM); 2395 2398 # ifdef VBOX_WITH_STATISTICS … … 2617 2620 /* Release the PGM lock as MMIO handlers take the IOM lock. (deadlock prevention) */ 2618 2621 pgmUnlock(pVM); 2619 rc = pfnHandler(pVM, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, pvUser);2622 rc = pfnHandler(pVM, pVCpu, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, enmOrigin, pvUser); 2620 2623 pgmLock(pVM); 2621 2624 # ifdef VBOX_WITH_STATISTICS … … 2692 2695 /* Release the PGM lock as MMIO handlers take the IOM lock. (deadlock prevention) */ 2693 2696 pgmUnlock(pVM); 2694 rc = pfnHandler(pVM, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, pvUser);2697 rc = pfnHandler(pVM, pVCpu, GCPhys, pvDst, (void *)pvBuf, cbRange, PGMACCESSTYPE_WRITE, enmOrigin, pvUser); 2695 2698 pgmLock(pVM); 2696 2699 # ifdef VBOX_WITH_STATISTICS -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r55896 r55903 52 52 static void pgmPoolMonitorModifiedRemove(PPGMPOOL pPool, PPGMPOOLPAGE pPage); 53 53 #ifndef IN_RING3 54 DECLEXPORT( CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPoolAccessPfHandler;54 DECLEXPORT(FNPGMRZPHYSPFHANDLER) pgmPoolAccessPfHandler; 55 55 #endif 56 56 #if defined(LOG_ENABLED) || defined(VBOX_STRICT) … … 1051 1051 * @returns VBox status code (appropriate for GC return). 1052 1052 * @param pVM Pointer to the VM. 1053 * @param pVCpu Pointer to the cross context CPU context for the 1054 * calling EMT. 1053 1055 * @param uErrorCode CPU Error code. 1054 1056 * @param pRegFrame Trap register frame. … … 1058 1060 * @param pvUser User argument. 1059 1061 */ 1060 DECLEXPORT(int) pgmPoolAccessPfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,1062 DECLEXPORT(int) pgmPoolAccessPfHandler(PVM pVM, PVMCPU pVCpu, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 1061 1063 RTGCPHYS GCPhysFault, void *pvUser) 1062 1064 { … … 1064 1066 PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); 1065 1067 PPGMPOOLPAGE pPage = (PPGMPOOLPAGE)pvUser; 1066 PVMCPU pVCpu = VMMGetCpu(pVM);1067 1068 unsigned cMaxModifications; 1068 1069 bool fForcedFlush = false; -
trunk/src/VBox/VMM/VMMR0/PGMR0.cpp
r55896 r55903 587 587 588 588 Log6(("PGMR0Trap0eHandlerNPMisconfig: calling %p(,%#x,,%RGp,%p)\n", pHandlerType->CTX_SUFF(pfnPfHandler), uErr, GCPhysFault, pvUser)); 589 rc = pHandlerType->CTX_SUFF(pfnPfHandler)(pVM, uErr == UINT32_MAX ? RTGCPTR_MAX : uErr, pRegFrame,589 rc = pHandlerType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr == UINT32_MAX ? RTGCPTR_MAX : uErr, pRegFrame, 590 590 GCPhysFault, GCPhysFault, pvUser); 591 591 -
trunk/src/VBox/VMM/VMMR3/GIM.cpp
r55493 r55903 70 70 static DECLCALLBACK(int) gimR3Save(PVM pVM, PSSMHANDLE pSSM); 71 71 static DECLCALLBACK(int) gimR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uSSMVersion, uint32_t uPass); 72 static FNPGMR3PHYSHANDLER gimR3Mmio2WriteHandler; 72 73 73 74 … … 486 487 * 487 488 * @returns VBox status code. 488 * @param pVM Pointer to the VM. 489 * @param GCPhys The guest-physical address of the region. 490 * @param pvPhys Pointer to the region in the guest address space. 491 * @param pvBuf Pointer to the data being read/written. 492 * @param cbBuf The size of the buffer in @a pvBuf. 493 * @param enmAccessType The type of access. 494 * @param pvUser User argument (NULL, not used). 495 */ 496 static DECLCALLBACK(int) gimR3Mmio2WriteHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 497 PGMACCESSTYPE enmAccessType, void *pvUser) 489 * @param pVM Pointer to the VM. 490 * @param pVCpu The cross context CPU structure for the calling EMT. 491 * @param GCPhys The guest-physical address of the region. 492 * @param pvPhys Pointer to the region in the guest address space. 493 * @param pvBuf Pointer to the data being read/written. 494 * @param cbBuf The size of the buffer in @a pvBuf. 495 * @param enmAccessType The type of access. 496 * @param enmOrigin Who is making the access. 497 * @param pvUser User argument (NULL, not used). 498 */ 499 static DECLCALLBACK(int) gimR3Mmio2WriteHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 500 PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser) 498 501 { 499 502 /* -
trunk/src/VBox/VMM/VMMR3/PGMHandler.cpp
r55897 r55903 82 82 VMMR3_INT_DECL(int) PGMR3HandlerPhysicalTypeRegisterEx(PVM pVM, PGMPHYSHANDLERKIND enmKind, 83 83 PFNPGMR3PHYSHANDLER pfnHandlerR3, 84 R0PTRTYPE(PFNPGMR 0PHYSPFHANDLER) pfnPfHandlerR0,85 RCPTRTYPE(PFNPGMR CPHYSPFHANDLER) pfnPfHandlerRC,84 R0PTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerR0, 85 RCPTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerRC, 86 86 const char *pszDesc, PPGMPHYSHANDLERTYPE phType) 87 87 { -
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r55899 r55903 3502 3502 * @returns VINF_PGM_HANDLER_DO_DEFAULT if the caller should carry out the access operation. 3503 3503 * @param pVM Pointer to the VM. 3504 * @param pVCpu The cross context CPU structure for the calling EMT. 3504 3505 * @param GCPhys The physical address the guest is writing to. 3505 3506 * @param pvPhys The HC mapping of that address. … … 3507 3508 * @param cbBuf How much it's reading/writing. 3508 3509 * @param enmAccessType The access type. 3510 * @param enmOrigin Who is making the access. 3509 3511 * @param pvUser User argument. 3510 3512 */ 3511 DECLCALLBACK(int) pgmR3PhysRomWriteHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf,3512 PGMACCESSTYPE enmAccessType, void *pvUser)3513 DECLCALLBACK(int) pgmR3PhysRomWriteHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 3514 PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser) 3513 3515 { 3514 3516 PPGMROMRANGE pRom = (PPGMROMRANGE)pvUser; … … 3517 3519 PPGMROMPAGE pRomPage = &pRom->aPages[iPage]; 3518 3520 Log5(("pgmR3PhysRomWriteHandler: %d %c %#08RGp %#04zx\n", pRomPage->enmProt, enmAccessType == PGMACCESSTYPE_READ ? 'R' : 'W', GCPhys, cbBuf)); 3519 NOREF(p vPhys);3521 NOREF(pVCpu); NOREF(pvPhys); NOREF(enmOrigin); 3520 3522 3521 3523 if (enmAccessType == PGMACCESSTYPE_READ) -
trunk/src/VBox/VMM/VMMR3/PGMPool.cpp
r55896 r55903 518 518 * @returns VINF_PGM_HANDLER_DO_DEFAULT if the caller should carry out the access operation. 519 519 * @param pVM Pointer to the VM. 520 * @param pVCpu The cross context CPU structure for the calling EMT. 520 521 * @param GCPhys The physical address the guest is writing to. 521 522 * @param pvPhys The HC mapping of that address. … … 523 524 * @param cbBuf How much it's reading/writing. 524 525 * @param enmAccessType The access type. 526 * @param enmOrigin Who is making the access. 525 527 * @param pvUser User argument. 526 528 */ 527 static DECLCALLBACK(int) pgmR3PoolAccessHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf,528 PGMACCESSTYPE enmAccessType, void *pvUser)529 static DECLCALLBACK(int) pgmR3PoolAccessHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 530 PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser) 529 531 { 530 532 STAM_PROFILE_START(&pVM->pgm.s.pPoolR3->StatMonitorR3, a); 531 533 PPGMPOOL pPool = pVM->pgm.s.pPoolR3; 532 534 PPGMPOOLPAGE pPage = (PPGMPOOLPAGE)pvUser; 533 PVMCPU pVCpu = VMMGetCpu(pVM);534 535 LogFlow(("pgmR3PoolAccessHandler: GCPhys=%RGp %p:{.Core=%RHp, .idx=%d, .GCPhys=%RGp, .enmType=%d}\n", 535 536 GCPhys, pPage, pPage->Core.Key, pPage->idx, pPage->GCPhys, pPage->enmKind)); 536 537 537 NOREF(pvBuf); NOREF(enmAccessType); 538 NOREF(pvBuf); NOREF(enmAccessType); NOREF(enmOrigin); 538 539 539 540 /* -
trunk/src/VBox/VMM/include/IOMInternal.h
r55896 r55903 423 423 424 424 #ifndef IN_RING3 425 DECLEXPORT( CTX_MID(FNPGM,PHYSPFHANDLER)) iomMmioPfHandler;425 DECLEXPORT(FNPGMRZPHYSPFHANDLER) iomMmioPfHandler; 426 426 #endif 427 427 #ifdef IN_RING3 428 FNPGMR3PHYSHANDLER 428 FNPGMR3PHYSHANDLER iomR3MmioHandler; 429 429 #endif 430 430 -
trunk/src/VBox/VMM/include/PGMInternal.h
r55896 r55903 591 591 uint32_t uState; 592 592 /** Pointer to RC callback function for \#PFs. */ 593 RCPTRTYPE(PFNPGMR CPHYSPFHANDLER) pfnPfHandlerRC;593 RCPTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerRC; 594 594 /** Explicit alignment padding. */ 595 595 RTRCPTR RCPtrPadding; … … 597 597 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3; 598 598 /** Pointer to R0 callback function for \#PFs. */ 599 R0PTRTYPE(PFNPGMR 0PHYSPFHANDLER) pfnPfHandlerR0;599 R0PTRTYPE(PFNPGMRZPHYSPFHANDLER) pfnPfHandlerR0; 600 600 /** Description / Name. For easing debugging. */ 601 601 R3PTRTYPE(const char *) pszDesc; … … 4147 4147 void pgmPhysReleaseInternalPageMappingLock(PVM pVM, PPGMPAGEMAPLOCK pLock); 4148 4148 #ifndef IN_RING3 4149 DECLEXPORT( CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPhysPfHandlerRedirectToHC;4150 DECLEXPORT( CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPhysRomWritePfHandler;4149 DECLEXPORT(FNPGMRZPHYSPFHANDLER) pgmPhysPfHandlerRedirectToHC; 4150 DECLEXPORT(FNPGMRZPHYSPFHANDLER) pgmPhysRomWritePfHandler; 4151 4151 #endif 4152 4152 int pgmPhysFreePage(PVM pVM, PGMMFREEPAGESREQ pReq, uint32_t *pcPendingPages, PPGMPAGE pPage, RTGCPHYS GCPhys);
Note:
See TracChangeset
for help on using the changeset viewer.