Changeset 55896 in vbox
- Timestamp:
- May 17, 2015 8:20:30 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pgm.h
r55895 r55896 102 102 * @param pvUser User argument. 103 103 */ 104 typedef DECLCALLBACK(int) FNPGMRCPHYSHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser); 104 typedef DECLCALLBACK(int) FNPGMRCPHYSPFHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 105 RTGCPHYS GCPhysFault, void *pvUser); 105 106 /** Pointer to PGM access callback. */ 106 typedef FNPGMRCPHYS HANDLER *PFNPGMRCPHYSHANDLER;107 typedef FNPGMRCPHYSPFHANDLER *PFNPGMRCPHYSPFHANDLER; 107 108 108 109 /** … … 118 119 * @param pvUser User argument. 119 120 */ 120 typedef DECLCALLBACK(int) FNPGMR0PHYSHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser); 121 typedef DECLCALLBACK(int) FNPGMR0PHYSPFHANDLER(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 122 RTGCPHYS GCPhysFault, void *pvUser); 121 123 /** Pointer to PGM access callback. */ 122 typedef FNPGMR0PHYS HANDLER *PFNPGMR0PHYSHANDLER;124 typedef FNPGMR0PHYSPFHANDLER *PFNPGMR0PHYSPFHANDLER; 123 125 124 126 /** … … 151 153 * @todo Add pVCpu, possibly replacing pVM. 152 154 */ 153 typedef DECLCALLBACK(int) FNPGMR3PHYSHANDLER(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser); 155 typedef DECLCALLBACK(int) FNPGMR3PHYSHANDLER(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 156 PGMACCESSTYPE enmAccessType, void *pvUser); 154 157 /** Pointer to PGM access callback. */ 155 158 typedef FNPGMR3PHYSHANDLER *PFNPGMR3PHYSHANDLER; … … 539 542 VMMR3_INT_DECL(int) PGMR3HandlerPhysicalTypeRegisterEx(PVM pVM, PGMPHYSHANDLERKIND enmKind, 540 543 PFNPGMR3PHYSHANDLER pfnHandlerR3, 541 R0PTRTYPE(PFNPGMR0PHYS HANDLER) pfnHandlerR0,542 RCPTRTYPE(PFNPGMRCPHYS HANDLER) pfnHandlerRC,544 R0PTRTYPE(PFNPGMR0PHYSPFHANDLER) pfnPfHandlerR0, 545 RCPTRTYPE(PFNPGMRCPHYSPFHANDLER) pfnPfHandlerRC, 543 546 const char *pszDesc, PPGMPHYSHANDLERTYPE phType); 544 547 VMMR3DECL(int) PGMR3HandlerPhysicalTypeRegister(PVM pVM, PGMPHYSHANDLERKIND enmKind, 545 548 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3, 546 const char *pszModR0, const char *psz HandlerR0,547 const char *pszModRC, const char *psz HandlerRC, const char *pszDesc,549 const char *pszModR0, const char *pszPfHandlerR0, 550 const char *pszModRC, const char *pszPfHandlerRC, const char *pszDesc, 548 551 PPGMPHYSHANDLERTYPE phType); 549 552 VMMR3_INT_DECL(int) PGMR3HandlerVirtualTypeRegisterEx(PVM pVM, PGMVIRTHANDLERKIND enmKind, bool fRelocUserRC, -
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r55838 r55896 3524 3524 3525 3525 3526 #ifdef IN_RC 3526 #ifndef IN_RING3 3527 RT_C_DECLS_BEGIN 3528 DECLEXPORT(CTX_MID(FNPGM,PHYSPFHANDLER)) vgaLbfAccessPfHandler; 3529 RT_C_DECLS_END 3530 3527 3531 /** 3528 3532 * @callback_method_impl{FNPGMRCPHYSHANDLER, \#PF Handler for VBE LFB access.} 3529 3533 */ 3530 PDMBOTHCBDECL(int) vgaRCLFBAccessHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser) 3534 PDMBOTHCBDECL(int) vgaLbfAccessPfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 3535 RTGCPHYS GCPhysFault, void *pvUser) 3531 3536 { 3532 3537 PVGASTATE pThis = (PVGASTATE)pvUser; 3533 3538 AssertPtr(pThis); 3534 Assert(GCPhysFault >= pThis->GCPhysVRAM);3535 AssertMsg(uErrorCode & X86_TRAP_PF_RW, ("uErrorCode=%#x\n", uErrorCode));3536 NOREF(pRegFrame);3537 3538 return vgaLFBAccess(pVM, pThis, GCPhysFault, pvFault);3539 }3540 3541 #elif IN_RING03542 3543 /**3544 * @callback_method_impl{FNPGMR0PHYSHANDLER, \#PF Handler for VBE LFB access.}3545 */3546 PDMBOTHCBDECL(int) vgaR0LFBAccessHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)3547 {3548 PVGASTATE pThis = (PVGASTATE)pvUser;3549 Assert(pThis);3550 3539 Assert(GCPhysFault >= pThis->GCPhysVRAM); 3551 3540 AssertMsg(uErrorCode & X86_TRAP_PF_RW, ("uErrorCode=%#x\n", uErrorCode)); … … 6220 6209 rc = PGMR3HandlerPhysicalTypeRegister(pVM, PGMPHYSHANDLERKIND_WRITE, 6221 6210 vgaR3LFBAccessHandler, 6222 g_DeviceVga.szR0Mod, "vga R0LFBAccessHandler",6223 g_DeviceVga.szRCMod, "vga RCLFBAccessHandler",6211 g_DeviceVga.szR0Mod, "vgaLbfAccessPfHandler", 6212 g_DeviceVga.szRCMod, "vgaLbfAccessPfHandler", 6224 6213 "VGA LFB", &pThis->hLfbAccessHandlerType); 6225 6214 AssertRCReturn(rc, rc); -
trunk/src/VBox/Devices/Network/DevPCNet.cpp
r55493 r55896 1075 1075 } 1076 1076 1077 RT_C_DECLS_BEGIN1078 #ifndef IN_RING31079 DECLEXPORT(int) pcnetHandleRingWrite(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame,1080 RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);1081 #endif1082 RT_C_DECLS_END1083 1077 1084 1078 #undef htonl … … 1096 1090 #ifdef PCNET_NO_POLLING 1097 1091 # ifndef IN_RING3 1092 RT_C_DECLS_BEGIN 1093 DECLEXPORT(CTX_SUFF(FNPGM,PHYSPFHANDLER)) pcnetHandleRingWritePf; 1094 RT_C_DECLS_END 1098 1095 1099 1096 /** … … 1108 1105 * @param pvUser User argument. 1109 1106 */ 1110 DECLEXPORT(int) pcnetHandleRingWrite (PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame,1111 RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)1107 DECLEXPORT(int) pcnetHandleRingWritePf(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, 1108 RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser) 1112 1109 { 1113 1110 PPCNETSTATE pThis = (PPCNETSTATE)pvUser; 1114 1111 1115 Log(("#%d pcnetHandleRingWrite GC: write to %#010x\n", PCNET_INST_NR, GCPhysFault));1112 Log(("#%d pcnetHandleRingWritePf: write to %#010x\n", PCNET_INST_NR, GCPhysFault)); 1116 1113 1117 1114 uint32_t cb; … … 1168 1165 * @param pvUser User argument. 1169 1166 */ 1170 static DECLCALLBACK(int) pcnet HandleRingWrite(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf,1171 size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser)1167 static DECLCALLBACK(int) pcnetR3HandleRingWrite(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, 1168 size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser) 1172 1169 { 1173 1170 PPDMDEVINS pDevIns = (PPDMDEVINS)pvUser; 1174 1171 PPCNETSTATE pThis = PDMINS_2_DATA(pDevIns, PPCNETSTATE); 1175 1172 1176 Log(("#%d pcnet HandleRingWrite: write to %#010x\n", PCNET_INST_NR, GCPhys));1173 Log(("#%d pcnetR3HandleRingWrite: write to %#010x\n", PCNET_INST_NR, GCPhys)); 1177 1174 #ifdef VBOX_WITH_STATISTICS 1178 1175 STAM_COUNTER_INC(&CTXSUFF(pThis->StatRingWrite)); … … 4976 4973 4977 4974 rc = PGMR3HandlerPhysicalTypeRegister(PDMDevHlpGetVM(pDevIns), PGMPHYSHANDLERKIND_WRITE, 4978 pcnet HandleRingWrite,4979 g_DevicePCNet.szR0Mod, "pcnetHandleRingWrite ",4980 g_DevicePCNet.szRCMod, "pcnetHandleRingWrite ",4975 pcnetR3HandleRingWrite, 4976 g_DevicePCNet.szR0Mod, "pcnetHandleRingWritePf", 4977 g_DevicePCNet.szRCMod, "pcnetHandleRingWritePf", 4981 4978 "PCNet ring write access handler", 4982 4979 &pThis->hNoPollingHandlerType); -
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r55841 r55896 1741 1741 * @param pvUser Pointer to the MMIO ring-3 range entry. 1742 1742 */ 1743 VMMDECL(int) IOMMMIOHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pCtxCore, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser) 1744 { 1745 LogFlow(("IOMMMIOHandler: GCPhys=%RGp uErr=%#x pvFault=%RGv rip=%RGv\n", 1743 DECLEXPORT(int) iomMmioPfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pCtxCore, RTGCPTR pvFault, 1744 RTGCPHYS GCPhysFault, void *pvUser) 1745 { 1746 LogFlow(("iomMmioPfHandler: GCPhys=%RGp uErr=%#x pvFault=%RGv rip=%RGv\n", 1746 1747 GCPhysFault, (uint32_t)uErrorCode, pvFault, (RTGCPTR)pCtxCore->rip)); 1747 1748 VBOXSTRICTRC rcStrict = iomMMIOHandler(pVM, VMMGetCpu(pVM), (uint32_t)uErrorCode, pCtxCore, GCPhysFault, pvUser); … … 1799 1800 * @param pvUser Pointer to the MMIO range entry. 1800 1801 */ 1801 DECLCALLBACK(int) IOMR3MMIOHandler(PVM pVM, RTGCPHYS GCPhysFault, void *pvPhys, void *pvBuf, size_t cbBuf,1802 DECLCALLBACK(int) iomR3MmioHandler(PVM pVM, RTGCPHYS GCPhysFault, void *pvPhys, void *pvBuf, size_t cbBuf, 1802 1803 PGMACCESSTYPE enmAccessType, void *pvUser) 1803 1804 { -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r55895 r55896 248 248 } 249 249 250 if (pCurType->CTX_SUFF(pfn Handler))250 if (pCurType->CTX_SUFF(pfnPfHandler)) 251 251 { 252 PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); 253 void *pvUser = pCur->CTX_SUFF(pvUser); 254 # ifdef IN_RING0 255 PFNPGMR0PHYSHANDLER pfnHandler = pCurType->CTX_SUFF(pfnHandler); 256 # else 257 PFNPGMRCPHYSHANDLER pfnHandler = pCurType->CTX_SUFF(pfnHandler); 258 # endif 252 PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); 253 void *pvUser = pCur->CTX_SUFF(pvUser); 259 254 260 255 STAM_PROFILE_START(&pCur->Stat, h); … … 265 260 } 266 261 267 rc = p fnHandler(pVM, uErr, pRegFrame, pvFault, GCPhysFault, pvUser);262 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, uErr, pRegFrame, pvFault, GCPhysFault, pvUser); 268 263 269 264 # ifdef VBOX_WITH_STATISTICS -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r55889 r55896 64 64 * @param pvUser User argument. 65 65 */ 66 VMMDECL(int) pgmPhysHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser) 66 VMMDECL(int) pgmPhysPfHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 67 RTGCPHYS GCPhysFault, void *pvUser) 67 68 { 68 69 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(GCPhysFault); NOREF(pvUser); … … 83 84 * @param pvUser User argument. Pointer to the ROM range structure. 84 85 */ 85 VMMDECL(int) pgmPhysRomWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser) 86 DECLEXPORT(int) pgmPhysRomWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 87 RTGCPHYS GCPhysFault, void *pvUser) 86 88 { 87 89 int rc; … … 2355 2357 { 2356 2358 Assert(GCPhys >= pCur->Core.Key && GCPhys <= pCur->Core.KeyLast); 2357 Assert(PGMPHYSHANDLER_GET_TYPE(pVM, pCur)->CTX_SUFF(pfnHandler));2358 2359 2359 2360 size_t cbRange = pCur->Core.KeyLast - GCPhys + 1; … … 2368 2369 2369 2370 #else /* IN_RING3 */ 2371 Assert(PGMPHYSHANDLER_GET_TYPE(pVM, pCur)->CTX_SUFF(pfnHandler)); 2370 2372 Log5(("pgmPhysWriteHandler: GCPhys=%RGp cbRange=%#x pPage=%R[pgmpage] phys %s\n", 2371 2373 GCPhys, cbRange, pPage, R3STRING(pCur->pszDesc) )); -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r55493 r55896 52 52 static void pgmPoolMonitorModifiedRemove(PPGMPOOL pPool, PPGMPOOLPAGE pPage); 53 53 #ifndef IN_RING3 54 DECLEXPORT( int) pgmPoolAccessHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);54 DECLEXPORT(CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPoolAccessPfHandler; 55 55 #endif 56 56 #if defined(LOG_ENABLED) || defined(VBOX_STRICT) … … 823 823 * @todo VBOXSTRICTRC 824 824 */ 825 static int pgmPoolAccess HandlerFlush(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,826 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault)825 static int pgmPoolAccessPfHandlerFlush(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis, 826 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault) 827 827 { 828 828 NOREF(pVM); NOREF(GCPhysFault); … … 855 855 if (PATMIsPatchGCAddr(pVM, pRegFrame->eip)) 856 856 { 857 LogFlow(("pgmPoolAccess HandlerPTWorker: Interpretation failed for patch code %04x:%RGv, ignoring.\n",857 LogFlow(("pgmPoolAccessPfHandlerPTWorker: Interpretation failed for patch code %04x:%RGv, ignoring.\n", 858 858 pRegFrame->cs.Sel, (RTGCPTR)pRegFrame->eip)); 859 859 rc = VINF_SUCCESS; … … 872 872 AssertMsgFailed(("%Rrc\n", VBOXSTRICTRC_VAL(rc2))); /* ASSUMES no complicated stuff here. */ 873 873 874 LogFlow(("pgmPoolAccess HandlerPT: returns %Rrc (flushed)\n", rc));874 LogFlow(("pgmPoolAccessPfHandlerPT: returns %Rrc (flushed)\n", rc)); 875 875 return rc; 876 876 } … … 889 889 * @param pvFault The fault address. 890 890 */ 891 DECLINLINE(int) pgmPoolAccess HandlerSTOSD(PVM pVM, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,892 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault)891 DECLINLINE(int) pgmPoolAccessPfHandlerSTOSD(PVM pVM, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis, 892 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault) 893 893 { 894 894 unsigned uIncrement = pDis->Param1.cb; … … 905 905 #endif 906 906 907 Log3(("pgmPoolAccess HandlerSTOSD\n"));907 Log3(("pgmPoolAccessPfHandlerSTOSD\n")); 908 908 909 909 /* … … 943 943 pRegFrame->rip += pDis->cbInstr; 944 944 945 LogFlow(("pgmPoolAccess HandlerSTOSD: returns\n"));945 LogFlow(("pgmPoolAccessPfHandlerSTOSD: returns\n")); 946 946 return VINF_SUCCESS; 947 947 } … … 962 962 * @param pfReused Reused state (in/out) 963 963 */ 964 DECLINLINE(int) pgmPoolAccess HandlerSimple(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,965 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault, bool *pfReused)966 { 967 Log3(("pgmPoolAccess HandlerSimple\n"));964 DECLINLINE(int) pgmPoolAccessPfHandlerSimple(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis, 965 PCPUMCTXCORE pRegFrame, RTGCPHYS GCPhysFault, RTGCPTR pvFault, bool *pfReused) 966 { 967 Log3(("pgmPoolAccessPfHandlerSimple\n")); 968 968 NOREF(pVM); 969 969 NOREF(pfReused); /* initialized by caller */ … … 1005 1005 else if (rc == VERR_EM_INTERPRETER) 1006 1006 { 1007 LogFlow(("pgmPoolAccess HandlerPTWorker: Interpretation failed for %04x:%RGv - opcode=%d\n",1007 LogFlow(("pgmPoolAccessPfHandlerPTWorker: Interpretation failed for %04x:%RGv - opcode=%d\n", 1008 1008 pRegFrame->cs.Sel, (RTGCPTR)pRegFrame->rip, pDis->pCurInstr->uOpcode)); 1009 1009 rc = VINF_EM_RAW_EMULATE_INSTR; … … 1041 1041 #endif 1042 1042 1043 LogFlow(("pgmPoolAccess HandlerSimple: returns %Rrc\n", VBOXSTRICTRC_VAL(rc)));1043 LogFlow(("pgmPoolAccessPfHandlerSimple: returns %Rrc\n", VBOXSTRICTRC_VAL(rc))); 1044 1044 return VBOXSTRICTRC_VAL(rc); 1045 1045 } … … 1058 1058 * @param pvUser User argument. 1059 1059 */ 1060 DECLEXPORT(int) pgmPoolAccess Handler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault,1061 RTGCPHYS GCPhysFault, void *pvUser)1060 DECLEXPORT(int) pgmPoolAccessPfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 1061 RTGCPHYS GCPhysFault, void *pvUser) 1062 1062 { 1063 1063 STAM_PROFILE_START(&pVM->pgm.s.CTX_SUFF(pPool)->CTX_SUFF_Z(StatMonitor), a); … … 1069 1069 NOREF(uErrorCode); 1070 1070 1071 LogFlow(("pgmPoolAccess Handler: pvFault=%RGv pPage=%p:{.idx=%d} GCPhysFault=%RGp\n", pvFault, pPage, pPage->idx, GCPhysFault));1071 LogFlow(("pgmPoolAccessPfHandler: pvFault=%RGv pPage=%p:{.idx=%d} GCPhysFault=%RGp\n", pvFault, pPage, pPage->idx, GCPhysFault)); 1072 1072 1073 1073 pgmLock(pVM); … … 1075 1075 { 1076 1076 /* Pool page changed while we were waiting for the lock; ignore. */ 1077 Log(("CPU%d: pgmPoolAccess Handler pgm pool page for %RGp changed (to %RGp) while waiting!\n", pVCpu->idCpu, PHYS_PAGE_ADDRESS(GCPhysFault), PHYS_PAGE_ADDRESS(pPage->GCPhys)));1077 Log(("CPU%d: pgmPoolAccessPfHandler pgm pool page for %RGp changed (to %RGp) while waiting!\n", pVCpu->idCpu, PHYS_PAGE_ADDRESS(GCPhysFault), PHYS_PAGE_ADDRESS(pPage->GCPhys))); 1078 1078 STAM_PROFILE_STOP_EX(&pVM->pgm.s.CTX_SUFF(pPool)->CTX_SUFF_Z(StatMonitor), &pPool->CTX_MID_Z(StatMonitor,Handled), a); 1079 1079 pgmUnlock(pVM); … … 1173 1173 if (!(pDis->fPrefix & (DISPREFIX_REP | DISPREFIX_REPNE))) 1174 1174 { 1175 rc = pgmPoolAccess HandlerSimple(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault, &fReused);1175 rc = pgmPoolAccessPfHandlerSimple(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault, &fReused); 1176 1176 if (fReused) 1177 1177 goto flushPage; … … 1244 1244 if (fValidStosd) 1245 1245 { 1246 rc = pgmPoolAccess HandlerSTOSD(pVM, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault);1246 rc = pgmPoolAccessPfHandlerSTOSD(pVM, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault); 1247 1247 STAM_PROFILE_STOP_EX(&pVM->pgm.s.CTX_SUFF(pPool)->CTX_SUFF_Z(StatMonitor), &pPool->CTX_MID_Z(StatMonitor,RepStosd), a); 1248 1248 pgmUnlock(pVM); … … 1253 1253 /* REP prefix, don't bother. */ 1254 1254 STAM_COUNTER_INC(&pPool->CTX_MID_Z(StatMonitor,RepPrefix)); 1255 Log4(("pgmPoolAccess Handler: eax=%#x ecx=%#x edi=%#x esi=%#x rip=%RGv opcode=%d prefix=%#x\n",1255 Log4(("pgmPoolAccessPfHandler: eax=%#x ecx=%#x edi=%#x esi=%#x rip=%RGv opcode=%d prefix=%#x\n", 1256 1256 pRegFrame->eax, pRegFrame->ecx, pRegFrame->edi, pRegFrame->esi, (RTGCPTR)pRegFrame->rip, pDis->pCurInstr->uOpcode, pDis->fPrefix)); 1257 1257 fNotReusedNotForking = true; … … 1341 1341 * the reuse detection must be fixed. 1342 1342 */ 1343 rc = pgmPoolAccess HandlerFlush(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault);1343 rc = pgmPoolAccessPfHandlerFlush(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault); 1344 1344 if ( rc == VINF_EM_RAW_EMULATE_INSTR 1345 1345 && fReused) -
trunk/src/VBox/VMM/VMMR0/PGMR0.cpp
r55493 r55896 580 580 else 581 581 { 582 if (pHandlerType->CTX_SUFF(pfn Handler))582 if (pHandlerType->CTX_SUFF(pfnPfHandler)) 583 583 { 584 CTX_MID(PFNPGM,PHYSHANDLER) pfnHandler = pHandlerType->CTX_SUFF(pfnHandler); 585 void *pvUser = pHandler->CTX_SUFF(pvUser); 584 void *pvUser = pHandler->CTX_SUFF(pvUser); 586 585 STAM_PROFILE_START(&pHandler->Stat, h); 587 586 pgmUnlock(pVM); 588 587 589 Log6(("PGMR0Trap0eHandlerNPMisconfig: calling %p(,%#x,,%RGp,%p)\n", pfnHandler, uErr, GCPhysFault, pvUser)); 590 rc = pfnHandler(pVM, uErr == UINT32_MAX ? RTGCPTR_MAX : uErr, pRegFrame, GCPhysFault, GCPhysFault, pvUser); 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, 590 GCPhysFault, GCPhysFault, pvUser); 591 591 592 592 #ifdef VBOX_WITH_STATISTICS -
trunk/src/VBox/VMM/VMMR3/IOM.cpp
r55493 r55896 42 42 * with the PGM access handler sub-system. The access handler catches all 43 43 * access and will be called in the context of a \#PF handler. In RC and R0 this 44 * handler is IOMMMIOHandler while in ring-3 it's IOMR3MMIOHandler (although in45 * ring-3 there can be alternative ways). IOMMMIOHandler will attempt to emulate46 * the instruction that is doing the access and pass the corresponding reads /47 * writes to the device.44 * handler is iomMmioPfHandler while in ring-3 it's iomR3MmioHandler (although 45 * in ring-3 there can be alternative ways). iomMmioPfHandler will attempt to 46 * emulate the instruction that is doing the access and pass the corresponding 47 * reads / writes to the device. 48 48 * 49 49 * Emulating I/O port access is less complex and should be slightly faster than … … 69 69 * word and dword access) we call IOMMMIORead and IOMMMIOWrite directly. The 70 70 * alternative ways that the physical memory access which goes via PGM will take 71 * care of it by calling IOMR3MMIOHandler via the PGM access handler machinery71 * care of it by calling iomR3MmioHandler via the PGM access handler machinery 72 72 * - this shouldn't happen but it is an alternative... 73 73 * … … 187 187 */ 188 188 rc = PGMR3HandlerPhysicalTypeRegister(pVM, PGMPHYSHANDLERKIND_MMIO, 189 IOMR3MMIOHandler,190 NULL, " IOMMMIOHandler",191 NULL, " IOMMMIOHandler",189 iomR3MmioHandler, 190 NULL, "iomMmioPfHandler", 191 NULL, "iomMmioPfHandler", 192 192 "MMIO", 193 193 &pVM->iom.s.hMmioHandlerType); … … 205 205 * Statistics. 206 206 */ 207 STAM_REG(pVM, &pVM->iom.s.StatRZMMIOHandler, STAMTYPE_PROFILE, "/IOM/RZ-MMIOHandler", STAMUNIT_TICKS_PER_CALL, "Profiling of the IOMMMIOHandler() body, only success calls.");207 STAM_REG(pVM, &pVM->iom.s.StatRZMMIOHandler, STAMTYPE_PROFILE, "/IOM/RZ-MMIOHandler", STAMUNIT_TICKS_PER_CALL, "Profiling of the iomMmioPfHandler() body, only success calls."); 208 208 STAM_REG(pVM, &pVM->iom.s.StatRZMMIO1Byte, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/Access1", STAMUNIT_OCCURENCES, "MMIO access by 1 byte counter."); 209 209 STAM_REG(pVM, &pVM->iom.s.StatRZMMIO2Bytes, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/Access2", STAMUNIT_OCCURENCES, "MMIO access by 2 bytes counter."); 210 210 STAM_REG(pVM, &pVM->iom.s.StatRZMMIO4Bytes, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/Access4", STAMUNIT_OCCURENCES, "MMIO access by 4 bytes counter."); 211 211 STAM_REG(pVM, &pVM->iom.s.StatRZMMIO8Bytes, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/Access8", STAMUNIT_OCCURENCES, "MMIO access by 8 bytes counter."); 212 STAM_REG(pVM, &pVM->iom.s.StatRZMMIOFailures, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/MMIOFailures", STAMUNIT_OCCURENCES, "Number of times IOMMMIOHandler() didn't service the request.");212 STAM_REG(pVM, &pVM->iom.s.StatRZMMIOFailures, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/MMIOFailures", STAMUNIT_OCCURENCES, "Number of times iomMmioPfHandler() didn't service the request."); 213 213 STAM_REG(pVM, &pVM->iom.s.StatRZInstMov, STAMTYPE_PROFILE, "/IOM/RZ-MMIOHandler/Inst/MOV", STAMUNIT_TICKS_PER_CALL, "Profiling of the MOV instruction emulation."); 214 214 STAM_REG(pVM, &pVM->iom.s.StatRZInstCmp, STAMTYPE_PROFILE, "/IOM/RZ-MMIOHandler/Inst/CMP", STAMUNIT_TICKS_PER_CALL, "Profiling of the CMP instruction emulation."); … … 228 228 #endif 229 229 STAM_REG(pVM, &pVM->iom.s.StatRZInstOther, STAMTYPE_COUNTER, "/IOM/RZ-MMIOHandler/Inst/Other", STAMUNIT_OCCURENCES, "Other instructions counter."); 230 STAM_REG(pVM, &pVM->iom.s.StatR3MMIOHandler, STAMTYPE_COUNTER, "/IOM/R3-MMIOHandler", STAMUNIT_OCCURENCES, "Number of calls to IOMR3MMIOHandler.");230 STAM_REG(pVM, &pVM->iom.s.StatR3MMIOHandler, STAMTYPE_COUNTER, "/IOM/R3-MMIOHandler", STAMUNIT_OCCURENCES, "Number of calls to iomR3MmioHandler."); 231 231 STAM_REG(pVM, &pVM->iom.s.StatInstIn, STAMTYPE_COUNTER, "/IOM/IOWork/In", STAMUNIT_OCCURENCES, "Counter of any IN instructions."); 232 232 STAM_REG(pVM, &pVM->iom.s.StatInstOut, STAMTYPE_COUNTER, "/IOM/IOWork/Out", STAMUNIT_OCCURENCES, "Counter of any OUT instructions."); -
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r55895 r55896 1457 1457 rc = PGMR3HandlerPhysicalTypeRegister(pVM, PGMPHYSHANDLERKIND_WRITE, 1458 1458 pgmR3PhysRomWriteHandler, 1459 NULL, "pgmPhysRomWrite Handler",1460 NULL, "pgmPhysRomWrite Handler",1459 NULL, "pgmPhysRomWritePfHandler", 1460 NULL, "pgmPhysRomWritePfHandler", 1461 1461 "ROM write protection", 1462 1462 &pVM->pgm.s.hRomPhysHandlerType); … … 2430 2430 RTListOff32ForEach(&pVM->pgm.s.pTreesR3->HeadPhysHandlerTypes, pCurPhysType, PGMPHYSHANDLERTYPEINT, ListNode) 2431 2431 { 2432 if (pCurPhysType->pfn HandlerRC != NIL_RTRCPTR)2433 pCurPhysType->pfn HandlerRC += offDelta;2432 if (pCurPhysType->pfnPfHandlerRC != NIL_RTRCPTR) 2433 pCurPhysType->pfnPfHandlerRC += offDelta; 2434 2434 } 2435 2435 -
trunk/src/VBox/VMM/VMMR3/PGMHandler.cpp
r55895 r55896 73 73 * @param enmKind The kind of access handler. 74 74 * @param pfnHandlerR3 Pointer to the ring-3 handler callback. 75 * @param pfnHandlerR0 Pointer to the ring-0 handler callback. 76 * @param pfnHandlerRC Pointer to the raw-mode context handler callback. 75 * @param pfnPfHandlerR0 Pointer to the ring-0 \#PF handler callback. 76 * @param pfnPfHandlerRC Pointer to the raw-mode context \#PF handler 77 * callback. 77 78 * @param pszDesc The type description. 78 79 * @param phType Where to return the type handle (cross context … … 81 82 VMMR3_INT_DECL(int) PGMR3HandlerPhysicalTypeRegisterEx(PVM pVM, PGMPHYSHANDLERKIND enmKind, 82 83 PFNPGMR3PHYSHANDLER pfnHandlerR3, 83 R0PTRTYPE(PFNPGMR0PHYS HANDLER) pfnHandlerR0,84 RCPTRTYPE(PFNPGMRCPHYS HANDLER) pfnHandlerRC,84 R0PTRTYPE(PFNPGMR0PHYSPFHANDLER) pfnPfHandlerR0, 85 RCPTRTYPE(PFNPGMRCPHYSPFHANDLER) pfnPfHandlerRC, 85 86 const char *pszDesc, PPGMPHYSHANDLERTYPE phType) 86 87 { 87 88 AssertPtrReturn(pfnHandlerR3, VERR_INVALID_POINTER); 88 AssertReturn(pfn HandlerR0 != NIL_RTR0PTR, VERR_INVALID_POINTER);89 AssertReturn(pfn HandlerRC != NIL_RTRCPTR || HMIsEnabled(pVM), VERR_INVALID_POINTER);89 AssertReturn(pfnPfHandlerR0 != NIL_RTR0PTR, VERR_INVALID_POINTER); 90 AssertReturn(pfnPfHandlerRC != NIL_RTRCPTR || HMIsEnabled(pVM), VERR_INVALID_POINTER); 90 91 AssertPtrReturn(pszDesc, VERR_INVALID_POINTER); 91 92 AssertReturn( enmKind == PGMPHYSHANDLERKIND_WRITE … … 98 99 if (RT_SUCCESS(rc)) 99 100 { 100 pType->u32Magic = PGMPHYSHANDLERTYPEINT_MAGIC; 101 pType->cRefs = 1; 102 pType->enmKind = enmKind; 103 pType->uState = enmKind == PGMPHYSHANDLERKIND_WRITE ? PGM_PAGE_HNDL_PHYS_STATE_WRITE : PGM_PAGE_HNDL_PHYS_STATE_ALL; 104 pType->pfnHandlerR3 = pfnHandlerR3; 105 pType->pfnHandlerR0 = pfnHandlerR0; 106 pType->pfnHandlerRC = pfnHandlerRC; 107 pType->pszDesc = pszDesc; 101 pType->u32Magic = PGMPHYSHANDLERTYPEINT_MAGIC; 102 pType->cRefs = 1; 103 pType->enmKind = enmKind; 104 pType->uState = enmKind == PGMPHYSHANDLERKIND_WRITE 105 ? PGM_PAGE_HNDL_PHYS_STATE_WRITE : PGM_PAGE_HNDL_PHYS_STATE_ALL; 106 pType->pfnHandlerR3 = pfnHandlerR3; 107 pType->pfnPfHandlerR0 = pfnPfHandlerR0; 108 pType->pfnPfHandlerRC = pfnPfHandlerRC; 109 pType->pszDesc = pszDesc; 108 110 109 111 pgmLock(pVM); … … 113 115 *phType = MMHyperHeapPtrToOffset(pVM, pType); 114 116 LogFlow(("PGMR3HandlerPhysicalTypeRegisterEx: %p/%#x: enmKind=%d pfnHandlerR3=%RHv pfnHandlerR0=%RHv pfnHandlerRC=%RRv pszDesc=%s\n", 115 pType, *phType, enmKind, pfnHandlerR3, pfn HandlerR0, pfnHandlerRC, pszDesc));117 pType, *phType, enmKind, pfnHandlerR3, pfnPfHandlerR0, pfnPfHandlerRC, pszDesc)); 116 118 return VINF_SUCCESS; 117 119 } … … 130 132 * @param pszModR0 The name of the ring-0 module, NULL is an alias for 131 133 * the main ring-0 module. 132 * @param psz HandlerR0 The name of the ring-0 handler, NULL if the ring-3133 * handler should be called.134 * @param pszPfHandlerR0 The name of the ring-0 \#PF handler, NULL if the 135 * ring-3 handler should be called. 134 136 * @param pszModRC The name of the raw-mode context module, NULL is an 135 137 * alias for the main RC module. 136 * @param psz HandlerRC The name of the raw-mode context handler, NULL if137 * the ring-3 handler should be called.138 * @param pszPfHandlerRC The name of the raw-mode context \#PF handler, NULL 139 * if the ring-3 handler should be called. 138 140 * @param pszDesc The type description. 139 141 * @param phType Where to return the type handle (cross context … … 142 144 VMMR3DECL(int) PGMR3HandlerPhysicalTypeRegister(PVM pVM, PGMPHYSHANDLERKIND enmKind, 143 145 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3, 144 const char *pszModR0, const char *psz HandlerR0,145 const char *pszModRC, const char *psz HandlerRC, const char *pszDesc,146 const char *pszModR0, const char *pszPfHandlerR0, 147 const char *pszModRC, const char *pszPfHandlerRC, const char *pszDesc, 146 148 PPGMPHYSHANDLERTYPE phType) 147 149 { 148 LogFlow(("PGMR3HandlerPhysicalTypeRegister: enmKind=%d pfnHandlerR3=%RHv pszModR0=%s psz HandlerR0=%s pszModRC=%s pszHandlerRC=%s pszDesc=%s\n",149 enmKind, pfnHandlerR3, pszModR0, psz HandlerR0, pszHandlerRC, pszModRC, pszDesc));150 LogFlow(("PGMR3HandlerPhysicalTypeRegister: enmKind=%d pfnHandlerR3=%RHv pszModR0=%s pszPfHandlerR0=%s pszModRC=%s pszPfHandlerRC=%s pszDesc=%s\n", 151 enmKind, pfnHandlerR3, pszModR0, pszPfHandlerR0, pszModRC, pszPfHandlerRC, pszDesc)); 150 152 151 153 /* … … 156 158 if (!pszModR0) 157 159 pszModR0 = VMMR0_MAIN_MODULE_NAME; 158 if (!psz HandlerR0)159 psz HandlerR0 = "pgmPhysHandlerRedirectToHC";160 if (!psz HandlerRC)161 psz HandlerRC = "pgmPhysHandlerRedirectToHC";160 if (!pszPfHandlerR0) 161 pszPfHandlerR0 = "pgmPhysPfHandlerRedirectToHC"; 162 if (!pszPfHandlerRC) 163 pszPfHandlerRC = "pgmPhysPfHandlerRedirectToHC"; 162 164 AssertPtrReturn(pfnHandlerR3, VERR_INVALID_POINTER); 163 AssertPtrReturn(psz HandlerR0, VERR_INVALID_POINTER);164 AssertPtrReturn(psz HandlerRC, VERR_INVALID_POINTER);165 AssertPtrReturn(pszPfHandlerR0, VERR_INVALID_POINTER); 166 AssertPtrReturn(pszPfHandlerRC, VERR_INVALID_POINTER); 165 167 166 168 /* 167 169 * Resolve the R0 handler. 168 170 */ 169 R0PTRTYPE(PFNPGMR0PHYS HANDLER) pfnHandlerR0 = NIL_RTR0PTR;170 int rc = PDMR3LdrGetSymbolR0Lazy(pVM, pszModR0, NULL /*pszSearchPath*/, psz HandlerR0, &pfnHandlerR0);171 R0PTRTYPE(PFNPGMR0PHYSPFHANDLER) pfnPfHandlerR0 = NIL_RTR0PTR; 172 int rc = PDMR3LdrGetSymbolR0Lazy(pVM, pszModR0, NULL /*pszSearchPath*/, pszPfHandlerR0, &pfnPfHandlerR0); 171 173 if (RT_SUCCESS(rc)) 172 174 { … … 174 176 * Resolve the GC handler. 175 177 */ 176 RTRCPTR pfn HandlerRC = NIL_RTRCPTR;178 RTRCPTR pfnPfHandlerRC = NIL_RTRCPTR; 177 179 if (!HMIsEnabled(pVM)) 178 rc = PDMR3LdrGetSymbolRCLazy(pVM, pszModRC, NULL /*pszSearchPath*/, psz HandlerRC, &pfnHandlerRC);180 rc = PDMR3LdrGetSymbolRCLazy(pVM, pszModRC, NULL /*pszSearchPath*/, pszPfHandlerRC, &pfnPfHandlerRC); 179 181 if (RT_SUCCESS(rc)) 180 return PGMR3HandlerPhysicalTypeRegisterEx(pVM, enmKind, pfnHandlerR3, pfn HandlerR0, pfnHandlerRC, pszDesc, phType);181 182 AssertMsgFailed(("Failed to resolve %s.%s, rc=%Rrc.\n", pszModRC, psz HandlerRC, rc));182 return PGMR3HandlerPhysicalTypeRegisterEx(pVM, enmKind, pfnHandlerR3, pfnPfHandlerR0, pfnPfHandlerRC, pszDesc, phType); 183 184 AssertMsgFailed(("Failed to resolve %s.%s, rc=%Rrc.\n", pszModRC, pszPfHandlerRC, rc)); 183 185 } 184 186 else 185 AssertMsgFailed(("Failed to resolve %s.%s, rc=%Rrc.\n", pszModR0, psz HandlerR0, rc));187 AssertMsgFailed(("Failed to resolve %s.%s, rc=%Rrc.\n", pszModR0, pszPfHandlerR0, rc)); 186 188 187 189 return rc; … … 282 284 * @param pfnInvalidateR3 Pointer to the ring-3 invalidation handler callback. 283 285 * @param pfnHandlerR3 Pointer to the ring-3 handler callback. 284 * @param pfn HandlerRCPointer to the raw-mode context handler callback.286 * @param pfnPfHandlerRC Pointer to the raw-mode context handler callback. 285 287 * @param pszDesc The type description. 286 288 * @param phType Where to return the type handle (cross context … … 720 722 pHlp->pfnPrintf(pHlp, 721 723 "%RGp - %RGp %RHv %RHv %RRv %RRv %s %s\n", 722 pCur->Core.Key, pCur->Core.KeyLast, pCurType->pfnHandlerR3, pCur->pvUserR3, pCurType->pfn HandlerRC, pCur->pvUserRC,724 pCur->Core.Key, pCur->Core.KeyLast, pCurType->pfnHandlerR3, pCur->pvUserR3, pCurType->pfnPfHandlerRC, pCur->pvUserRC, 723 725 pszType, pCur->pszDesc); 724 726 #ifdef VBOX_WITH_STATISTICS -
trunk/src/VBox/VMM/VMMR3/PGMPool.cpp
r55493 r55896 114 114 * Internal Functions * 115 115 *******************************************************************************/ 116 static DECLCALLBACK(int) pgmR3PoolAccessHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser);116 static FNPGMR3PHYSHANDLER pgmR3PoolAccessHandler; 117 117 #ifdef VBOX_WITH_DEBUGGER 118 118 static FNDBGCCMD pgmR3PoolCmdCheck; … … 284 284 rc = PGMR3HandlerPhysicalTypeRegister(pVM, PGMPHYSHANDLERKIND_WRITE, 285 285 pgmR3PoolAccessHandler, 286 NULL, "pgmPoolAccess Handler",287 NULL, "pgmPoolAccess Handler",286 NULL, "pgmPoolAccessPfHandler", 287 NULL, "pgmPoolAccessPfHandler", 288 288 "Guest Paging Access Handler", 289 289 &pPool->hAccessHandlerType); -
trunk/src/VBox/VMM/include/IOMInternal.h
r55493 r55896 422 422 #endif /* IN_RING3 */ 423 423 424 VMMDECL(int) IOMMMIOHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 425 RTGCPHYS GCPhysFault, void *pvUser); 424 #ifndef IN_RING3 425 DECLEXPORT(CTX_MID(FNPGM,PHYSPFHANDLER)) iomMmioPfHandler; 426 #endif 426 427 #ifdef IN_RING3 427 DECLCALLBACK(int) IOMR3MMIOHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 428 PGMACCESSTYPE enmAccessType, void *pvUser); 428 FNPGMR3PHYSHANDLER iomR3MmioHandler; 429 429 #endif 430 430 -
trunk/src/VBox/VMM/include/PGMInternal.h
r55895 r55896 590 590 /** The PGM_PAGE_HNDL_PHYS_STATE_XXX value corresponding to enmKind. */ 591 591 uint32_t uState; 592 /** Pointer to RC callback function . */593 RCPTRTYPE(PFNPGMRCPHYS HANDLER) pfnHandlerRC;592 /** Pointer to RC callback function for \#PFs. */ 593 RCPTRTYPE(PFNPGMRCPHYSPFHANDLER) pfnPfHandlerRC; 594 594 /** Explicit alignment padding. */ 595 595 RTRCPTR RCPtrPadding; 596 596 /** Pointer to R3 callback function. */ 597 597 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3; 598 /** Pointer to R0 callback function . */599 R0PTRTYPE(PFNPGMR0PHYS HANDLER) pfnHandlerR0;598 /** Pointer to R0 callback function for \#PFs. */ 599 R0PTRTYPE(PFNPGMR0PHYSPFHANDLER) pfnPfHandlerR0; 600 600 /** Description / Name. For easing debugging. */ 601 601 R3PTRTYPE(const char *) pszDesc; … … 710 710 bool fRelocUserRC; 711 711 bool afPadding[3]; 712 /** Pointer to RC callback function . */712 /** Pointer to RC callback function for \#PFs. */ 713 713 RCPTRTYPE(PFNPGMRCVIRTPFHANDLER) pfnPfHandlerRC; 714 714 /** Pointer to the R3 callback function for invalidation. */ … … 4146 4146 int pgmPhysGCPhys2CCPtrInternalReadOnly(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys, const void **ppv, PPGMPAGEMAPLOCK pLock); 4147 4147 void pgmPhysReleaseInternalPageMappingLock(PVM pVM, PPGMPAGEMAPLOCK pLock); 4148 VMMDECL(int) pgmPhysHandlerRedirectToHC(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser); 4149 VMMDECL(int) pgmPhysRomWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser); 4148 #ifndef IN_RING3 4149 DECLEXPORT(CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPhysPfHandlerRedirectToHC; 4150 DECLEXPORT(CTX_MID(FNPGM,PHYSPFHANDLER)) pgmPhysRomWritePfHandler; 4151 #endif 4150 4152 int pgmPhysFreePage(PVM pVM, PGMMFREEPAGESREQ pReq, uint32_t *pcPendingPages, PPGMPAGE pPage, RTGCPHYS GCPhys); 4151 4153 void pgmPhysInvalidRamRangeTlbs(PVM pVM); … … 4159 4161 4160 4162 #ifdef IN_RING3 4161 DECLCALLBACK(int) pgmR3PhysRomWriteHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, 4162 PGMACCESSTYPE enmAccessType, void *pvUser); 4163 FNPGMR3PHYSHANDLER pgmR3PhysRomWriteHandler; 4163 4164 void pgmR3PhysRelinkRamRanges(PVM pVM); 4164 4165 int pgmR3PhysRamPreAllocate(PVM pVM); -
trunk/src/VBox/VMM/testcase/tstVMStruct.h
r55895 r55896 791 791 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, uState); 792 792 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pfnHandlerR3); 793 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pfn HandlerR0);794 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pfn HandlerRC);793 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pfnPfHandlerR0); 794 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pfnPfHandlerRC); 795 795 GEN_CHECK_OFF(PGMPHYSHANDLERTYPEINT, pszDesc); 796 796 GEN_CHECK_SIZE(PGMPHYS2VIRTHANDLER);
Note:
See TracChangeset
for help on using the changeset viewer.