Changeset 33540 in vbox for trunk/src/VBox/VMM/IOM.cpp
- Timestamp:
- Oct 28, 2010 9:27:05 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/IOM.cpp
r30050 r33540 31 31 * In raw-mode I/O port access is trapped (\#GP(0)) by ensuring that the actual 32 32 * IOPL is 0 regardless of what the guest IOPL is. The \#GP handler use the 33 * dis sassembler (DIS) to figure which instruction caused it (there are a number33 * disassembler (DIS) to figure which instruction caused it (there are a number 34 34 * of instructions in addition to the I/O ones) and if it's an I/O port access 35 35 * it will hand it to IOMGCIOPortHandler (via EMInterpretPortIO). … … 38 38 * taken. (Default action is to write into the void and read all set bits.) 39 39 * 40 * Memory Mapped I/O (MMIO) is implemented as a slig tly special case of PGM40 * Memory Mapped I/O (MMIO) is implemented as a slightly special case of PGM 41 41 * access handlers. An MMIO range is registered with IOM which then registers it 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 tin44 * handler is IOMMMIOHandler while in ring-3 it's IOMR3MMIOHandler (although in 45 45 * ring-3 there can be alternative ways). IOMMMIOHandler will attempt to emulate 46 46 * the instruction that is doing the access and pass the corresponding reads / 47 47 * writes to the device. 48 48 * 49 * Emulating I/O port access is less complex and should be slig tly faster than49 * Emulating I/O port access is less complex and should be slightly faster than 50 50 * emulating MMIO, so in most cases we should encourage the OS to use port I/O. 51 * Devices which are freq ently accessed should register GC handlers to speed up51 * Devices which are frequently accessed should register GC handlers to speed up 52 52 * execution. 53 53 * … … 488 488 * 489 489 * This API is called by PDM on behalf of a device. Devices must first register 490 * ring-3 ranges before any GC and R0 ranges can be register d using IOMR3IOPortRegisterRC()490 * ring-3 ranges before any GC and R0 ranges can be registered using IOMR3IOPortRegisterRC() 491 491 * and IOMR3IOPortRegisterR0(). 492 492 *
Note:
See TracChangeset
for help on using the changeset viewer.