5 // Extended read, constrain to use registers as mandated by AMD MMCONFIG mechanism.
7 static inline __attribute__((always_inline)) uint8_t read8x(uint32_t addr)
12 :"=a"(value): "b" (addr)
17 static inline __attribute__((always_inline)) uint16_t read16x(uint32_t addr)
22 :"=a"(value): "b" (addr)
29 static inline __attribute__((always_inline)) uint32_t read32x(uint32_t addr)
33 "movl (%1), %%eax\n\t"
34 :"=a"(value): "b" (addr)
41 static inline __attribute__((always_inline)) void write8x(uint32_t addr, uint8_t value)
45 :: "b" (addr), "a" (value)
50 static inline __attribute__((always_inline)) void write16x(uint32_t addr, uint16_t value)
54 :: "b" (addr), "a" (value)
59 static inline __attribute__((always_inline)) void write32x(uint32_t addr, uint32_t value)
62 "movl %%eax, (%0)\n\t"
63 :: "b" (addr), "a" (value)
67 #endif /* ARCH_MMIO_H */