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));
}
