11 asm volatile ("inb %w1,%0" : "=a" (data) : "d" (port));
16 insb (uint16_t port, void *addr, size_t cnt)
18 asm volatile ("cld; repne; insb"
19 : "=D" (addr), "=c" (cnt)
20 : "d" (port), "0" (addr), "1" (cnt)
24 static inline uint16_t
28 asm volatile ("inw %w1,%0" : "=a" (data) : "d" (port));
33 insw (uint16_t port, void *addr, size_t cnt)
35 asm volatile ("cld; repne; insw"
36 : "=D" (addr), "=c" (cnt)
37 : "d" (port), "0" (addr), "1" (cnt)
41 static inline uint32_t
45 asm volatile ("inl %w1,%0" : "=a" (data) : "d" (port));
50 insl(uint16_t port, void *addr, size_t cnt)
52 asm volatile ("cld; repne; insl"
53 : "=D" (addr), "=c" (cnt)
54 : "d" (port), "0" (addr), "1" (cnt)
59 outb(uint16_t port, uint8_t data)
61 asm volatile ("outb %0,%w1" : : "a" (data), "d" (port));
65 outsb (uint16_t port, const void *addr, size_t cnt)
67 asm volatile ("cld; repne; outsb"
68 : "=S" (addr), "=c" (cnt)
69 : "d" (port), "0" (addr), "1" (cnt)
74 outw (uint16_t port, uint16_t data)
76 asm volatile ("outw %0,%w1" : : "a" (data), "d" (port));
80 outsw (uint16_t port, const void *addr, size_t cnt)
82 asm volatile ("cld; repne; outsw"
83 : "=S" (addr), "=c" (cnt)
84 : "d" (port), "0" (addr), "1" (cnt)
89 outl (uint16_t port, uint32_t data)
91 asm volatile ("outl %0,%w1" : : "a" (data), "d" (port));