6 static inline uint8_t io_inb(int port) {
8 asm volatile("inb %w1,%0" : "=a" (data) : "d" (port));
12 static inline void io_insb(int port, void* addr, int cnt) {
13 asm volatile("cld\n\trepne\n\tinsb"
14 : "=D" (addr), "=c" (cnt)
15 : "d" (port), "0" (addr), "1" (cnt)
19 static inline uint16_t io_inw(int port) {
21 asm volatile("inw %w1,%0" : "=a" (data) : "d" (port));
25 static inline void io_insw(int port, void* addr, int cnt) {
26 asm volatile("cld\n\trepne\n\tinsw"
27 : "=D" (addr), "=c" (cnt)
28 : "d" (port), "0" (addr), "1" (cnt)
32 static inline uint32_t io_inl(int port) {
34 asm volatile("inl %w1,%0" : "=a" (data) : "d" (port));
38 static inline void io_insl(int port, void* addr, int cnt) {
39 asm volatile("cld\n\trepne\n\tinsl"
40 : "=D" (addr), "=c" (cnt)
41 : "d" (port), "0" (addr), "1" (cnt)
45 static inline void io_outb(int port, uint8_t data) {
46 asm volatile("outb %0,%w1" : : "a" (data), "d" (port));
49 static inline void io_outsb(int port, const void* addr, int cnt) {
50 asm volatile("cld\n\trepne\n\toutsb"
51 : "=S" (addr), "=c" (cnt)
52 : "d" (port), "0" (addr), "1" (cnt)
56 static inline void io_outw(int port, uint16_t data) {
57 asm volatile("outw %0,%w1" : : "a" (data), "d" (port));
60 static inline void io_outsw(int port, const void* addr, int cnt) {
61 asm volatile("cld\n\trepne\n\toutsw"
62 : "=S" (addr), "=c" (cnt)
63 : "d" (port), "0" (addr), "1" (cnt)
67 static inline void io_outsl(int port, const void* addr, int cnt) {
68 asm volatile("cld\n\trepne\n\toutsl"
69 : "=S" (addr), "=c" (cnt)
70 : "d" (port), "0" (addr), "1" (cnt)
74 static inline void io_outl(int port, uint32_t data) {
75 asm volatile("outl %0,%w1" : : "a" (data), "d" (port));
78 #endif /* __LUNAIX_IO_H */