| Index: fusl/arch/x86_64/bits/io.h | 
| diff --git a/fusl/arch/x86_64/bits/io.h b/fusl/arch/x86_64/bits/io.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..dd5bddc967aa697140d61d77193ac4d3b3e711e8 | 
| --- /dev/null | 
| +++ b/fusl/arch/x86_64/bits/io.h | 
| @@ -0,0 +1,77 @@ | 
| +static __inline void outb(unsigned char __val, unsigned short __port) | 
| +{ | 
| +	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); | 
| +} | 
| + | 
| +static __inline void outw(unsigned short __val, unsigned short __port) | 
| +{ | 
| +	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); | 
| +} | 
| + | 
| +static __inline void outl(unsigned int __val, unsigned short __port) | 
| +{ | 
| +	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); | 
| +} | 
| + | 
| +static __inline unsigned char inb(unsigned short __port) | 
| +{ | 
| +	unsigned char __val; | 
| +	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); | 
| +	return __val; | 
| +} | 
| + | 
| +static __inline unsigned short inw(unsigned short __port) | 
| +{ | 
| +	unsigned short __val; | 
| +	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); | 
| +	return __val; | 
| +} | 
| + | 
| +static __inline unsigned int inl(unsigned short __port) | 
| +{ | 
| +	unsigned int __val; | 
| +	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); | 
| +	return __val; | 
| +} | 
| + | 
| +static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; outsb" | 
| +		      : "+S" (__buf), "+c" (__n) | 
| +		      : "d" (__port)); | 
| +} | 
| + | 
| +static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; outsw" | 
| +		      : "+S" (__buf), "+c" (__n) | 
| +		      : "d" (__port)); | 
| +} | 
| + | 
| +static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; outsl" | 
| +		      : "+S" (__buf), "+c"(__n) | 
| +		      : "d" (__port)); | 
| +} | 
| + | 
| +static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; insb" | 
| +		      : "+D" (__buf), "+c" (__n) | 
| +		      : "d" (__port)); | 
| +} | 
| + | 
| +static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; insw" | 
| +		      : "+D" (__buf), "+c" (__n) | 
| +		      : "d" (__port)); | 
| +} | 
| + | 
| +static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) | 
| +{ | 
| +	__asm__ volatile ("cld; rep; insl" | 
| +		      : "+D" (__buf), "+c" (__n) | 
| +		      : "d" (__port)); | 
| +} | 
|  |