1static __inline void outb(unsigned char __val, unsigned short __port)
2{
3	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
4}
5
6static __inline void outw(unsigned short __val, unsigned short __port)
7{
8	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
9}
10
11static __inline void outl(unsigned int __val, unsigned short __port)
12{
13	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
14}
15
16static __inline unsigned char inb(unsigned short __port)
17{
18	unsigned char __val;
19	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
20	return __val;
21}
22
23static __inline unsigned short inw(unsigned short __port)
24{
25	unsigned short __val;
26	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
27	return __val;
28}
29
30static __inline unsigned int inl(unsigned short __port)
31{
32	unsigned int __val;
33	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
34	return __val;
35}
36
37static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
38{
39	__asm__ volatile ("cld; rep; outsb"
40		      : "+S" (__buf), "+c" (__n)
41		      : "d" (__port));
42}
43
44static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
45{
46	__asm__ volatile ("cld; rep; outsw"
47		      : "+S" (__buf), "+c" (__n)
48		      : "d" (__port));
49}
50
51static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
52{
53	__asm__ volatile ("cld; rep; outsl"
54		      : "+S" (__buf), "+c"(__n)
55		      : "d" (__port));
56}
57
58static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
59{
60	__asm__ volatile ("cld; rep; insb"
61		      : "+D" (__buf), "+c" (__n)
62		      : "d" (__port));
63}
64
65static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
66{
67	__asm__ volatile ("cld; rep; insw"
68		      : "+D" (__buf), "+c" (__n)
69		      : "d" (__port));
70}
71
72static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
73{
74	__asm__ volatile ("cld; rep; insl"
75		      : "+D" (__buf), "+c" (__n)
76		      : "d" (__port));
77}
78