#include "io.h"


void outb(ushort port, uchar val)
{
	asm volatile("outb %1, %0" : : "dN" (port), "a" (val));
}

uchar inb(ushort port)
{
	uchar ret;
	asm volatile("inb %1, %0" : "=a" (ret) : "dN" (port));
	return ret;
}

ushort inw(ushort port)
{
	ushort ret;
	asm volatile("inw %1, %0" : "=a" (ret) : "dN" (port));
	return ret;
}

void *memset(void *s, int c, size_t n)
{
	for (size_t i = 0; i < n; i++)
	{
		((uchar *)s)[i] = c;
	}
}

void *memcpy(void *dest, const void *src, size_t n)
{
	for (size_t i = 0; i < n; i++)
	{
		((uchar *)dest)[i] = ((uchar *)src)[i];
	}
}

void io_wait()
{
	asm volatile("outb %0, $0x80" :: "a"(0));
}
