|
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) |
|
static __always_inline unsigned long | IOAPI_INLINE (x86, phys_to_bus)(unsigned long phys_addr) |
|
static __always_inline unsigned long | IOAPI_INLINE (x86, bus_to_phys)(unsigned long bus_addr) |
|
| X86_READX (readb, uint8_t) |
|
| X86_READX (readw, uint16_t) |
|
| X86_READX (readl, uint32_t) |
|
| X86_WRITEX (writeb, uint8_t) |
|
| X86_WRITEX (writew, uint16_t) |
|
| X86_WRITEX (writel, uint32_t) |
|
| X86_INX (b, uint8_t, "b") |
|
| X86_INX (w, uint16_t, "w") |
|
| X86_INX (l, uint32_t, "k") |
|
| X86_OUTX (b, uint8_t, "b") |
|
| X86_OUTX (w, uint16_t, "w") |
|
| X86_OUTX (l, uint32_t, "k") |
|
static __always_inline void | IOAPI_INLINE (x86, iodelay)(void) |
|
static __always_inline void | IOAPI_INLINE (x86, mb)(void) |
|
iPXE I/O API for x86
x86 uses direct pointer dereferences for accesses to memory-mapped I/O space, and the inX/outX instructions for accesses to port-mapped I/O space.
64-bit atomic accesses (readq() and writeq()) use MMX instructions under i386, and will crash original Pentium and earlier CPUs. Fortunately, no hardware that requires atomic 64-bit accesses will physically fit into a machine with such an old CPU anyway.
Definition in file x86_io.h.