outb(unsigned char __val,unsigned short __port)1 static __inline void outb(unsigned char __val, unsigned short __port)
2 {
3 	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
4 }
5 
outw(unsigned short __val,unsigned short __port)6 static __inline void outw(unsigned short __val, unsigned short __port)
7 {
8 	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
9 }
10 
outl(unsigned int __val,unsigned short __port)11 static __inline void outl(unsigned int __val, unsigned short __port)
12 {
13 	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
14 }
15 
inb(unsigned short __port)16 static __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 
inw(unsigned short __port)23 static __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 
inl(unsigned short __port)30 static __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 
outsb(unsigned short __port,const void * __buf,unsigned long __n)37 static __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 
outsw(unsigned short __port,const void * __buf,unsigned long __n)44 static __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 
outsl(unsigned short __port,const void * __buf,unsigned long __n)51 static __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 
insb(unsigned short __port,void * __buf,unsigned long __n)58 static __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 
insw(unsigned short __port,void * __buf,unsigned long __n)65 static __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 
insl(unsigned short __port,void * __buf,unsigned long __n)72 static __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