11 asm volatile ("inb %w1,%0" : "=a" (data) : "d" (port));
16 insb(uint16_t port, void *addr, size_t cnt)
18 asm volatile ("cld\n\trepne\n\tinsb" :
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\n\trepne\n\tinsw" :
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\n\trepne\n\tinsl" :
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\n\trepne\n\toutsb" :
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\n\trepne\n\toutsw" :
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));