xref: /aosp_15_r20/external/musl/arch/i386/bits/io.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)

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