iPXE
|
iPXE I/O API for x86 More...
Go to the source code of this file.
Macros | |
#define | IOAPI_PREFIX_x86 __x86_ |
#define | X86_READX(_api_func, _type) |
#define | X86_WRITEX(_api_func, _type) |
#define | X86_INX(_insn_suffix, _type, _reg_prefix) |
#define | X86_OUTX(_insn_suffix, _type, _reg_prefix) |
Functions | |
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.
#define X86_READX | ( | _api_func, | |
_type | |||
) |
#define X86_WRITEX | ( | _api_func, | |
_type | |||
) |
#define X86_INX | ( | _insn_suffix, | |
_type, | |||
_reg_prefix | |||
) |
#define X86_OUTX | ( | _insn_suffix, | |
_type, | |||
_reg_prefix | |||
) |
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
inlinestatic |
|
inlinestatic |
X86_INX | ( | b | , |
uint8_t | , | ||
"b" | |||
) |
X86_INX | ( | w | , |
uint16_t | , | ||
"w" | |||
) |
X86_OUTX | ( | b | , |
uint8_t | , | ||
"b" | |||
) |
X86_OUTX | ( | w | , |
uint16_t | , | ||
"w" | |||
) |
|
inlinestatic |
Definition at line 130 of file x86_io.h.
References __asm__(), and __volatile__().
|
inlinestatic |
Definition at line 140 of file x86_io.h.
References __asm__(), and __volatile__().