129
130
/** Number of writes to this address from R0/RC which was serviced in R3. */
130
131
STAMCOUNTER WriteRZToR3;
133
AssertCompileMemberAlignment(IOMMMIOSTATS, ReadR3, 8);
132
134
/** Pointer to I/O port statistics. */
133
135
typedef IOMMMIOSTATS *PIOMMMIOSTATS;
241
243
/** Avl node core with the port as Key. */
242
244
AVLOIOPORTNODECORE Core;
243
#if HC_ARCH_BITS == 64 && !defined(RT_OS_WINDOWS)
245
#if HC_ARCH_BITS != 64 || !defined(RT_OS_WINDOWS)
244
246
uint32_t u32Alignment; /**< The sizeof(Core) differs. */
246
248
/** Number of INs to this port from R3. */
266
268
/** Number of OUTs to this port from R0/RC which was serviced in R3. */
267
269
STAMCOUNTER OutRZToR3;
268
270
} IOMIOPORTSTATS;
271
AssertCompileMemberAlignment(IOMIOPORTSTATS, InR3, 8);
269
272
/** Pointer to I/O port statistics. */
270
273
typedef IOMIOPORTSTATS *PIOMIOPORTSTATS;
429
432
PIOMMMIOSTATS iomR3MMIOStatsCreate(PVM pVM, RTGCPHYS GCPhys, const char *pszDesc);
430
433
#endif /* IN_RING3 */
433
* \#PF Handler callback for MMIO ranges.
435
* @returns VBox status code (appropriate for GC return).
437
* @param pVM VM Handle.
438
* @param uErrorCode CPU Error code.
439
* @param pRegFrame Trap register frame.
440
* @param pvFault The fault address (cr2).
441
* @param GCPhysFault The GC physical address corresponding to pvFault.
442
* @param pvUser Pointer to the MMIO range entry.
444
VMMDECL(int) IOMMMIOHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);
435
VMMDECL(int) IOMMMIOHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser);
448
* \#PF Handler callback for MMIO ranges.
450
* @returns VINF_SUCCESS if the handler have carried out the operation.
451
* @returns VINF_PGM_HANDLER_DO_DEFAULT if the caller should carry out the access operation.
452
* @param pVM VM Handle.
453
* @param GCPhys The physical address the guest is writing to.
454
* @param pvPhys The HC mapping of that address.
455
* @param pvBuf What the guest is reading/writing.
456
* @param cbBuf How much it's reading/writing.
457
* @param enmAccessType The access type.
458
* @param pvUser Pointer to the MMIO range entry.
460
DECLCALLBACK(int) IOMR3MMIOHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser);
437
DECLCALLBACK(int) IOMR3MMIOHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser);