1 #ifndef __LUNAIX_PORT_IO_H
2 #define __LUNAIX_PORT_IO_H
4 #include <lunaix/types.h>
10 asm volatile("inb %w1,%0" : "=a"(data) : "d"(port));
15 port_rdbytes(int port, void* addr, int cnt)
20 : "=D"(addr), "=c"(cnt)
21 : "d"(port), "0"(addr), "1"(cnt)
29 asm volatile("inw %w1,%0" : "=a"(data) : "d"(port));
34 port_rdwords(int port, void* addr, int cnt)
39 : "=D"(addr), "=c"(cnt)
40 : "d"(port), "0"(addr), "1"(cnt)
45 port_rddword(int port)
48 asm volatile("inl %w1,%0" : "=a"(data) : "d"(port));
53 port_rddwords(int port, void* addr, int cnt)
58 : "=D"(addr), "=c"(cnt)
59 : "d"(port), "0"(addr), "1"(cnt)
64 port_wrbyte(int port, u8_t data)
66 asm volatile("outb %0, %w1" : : "a"(data), "d"(port));
70 port_wrbytes(int port, const void* addr, int cnt)
75 : "=S"(addr), "=c"(cnt)
76 : "d"(port), "0"(addr), "1"(cnt)
81 port_wrword(int port, u16_t data)
83 asm volatile("outw %0,%w1" : : "a"(data), "d"(port));
87 port_wrwords(int port, const void* addr, int cnt)
92 : "=S"(addr), "=c"(cnt)
93 : "d"(port), "0"(addr), "1"(cnt)
98 port_wrdwords(int port, const void* addr, int cnt)
103 : "=S"(addr), "=c"(cnt)
104 : "d"(port), "0"(addr), "1"(cnt)
109 port_wrdword(int port, u32_t data)
111 asm volatile("outl %0,%w1" : : "a"(data), "d"(port));
115 port_delay(int counter)
117 asm volatile(" test %0, %0\n"
121 "1: dec %0" ::"a"(counter));
124 #endif /* __LUNAIX_PORT_port_H */