static void inline outb(char value, unsigned short port)
{
__asm__ volatile ("outb %0,%1"
		::"a" ((char) value),"d" ((unsigned short) port));
}

static void inline outb_p(char value, unsigned short port)
{
__asm__ volatile ("outb %0,%1\n"
		  "\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:"
		::"a" ((char) value),"d" ((unsigned short) port));
}

static unsigned char inline inb(unsigned short port)
{
	unsigned char _v;
__asm__ volatile ("inb %1,%0"
		:"=a" (_v):"d" ((unsigned short) port));
	return _v;
}

static unsigned char inb_p(unsigned short port)
{
	unsigned char _v;
__asm__ volatile ("inb %1,%0\n"
		  "\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:\tjmp 1f\n"
		"1:"
		:"=a" (_v):"d" ((unsigned short) port));
	return _v;
}
