diff --git a/kernel-src/include/arch/io.h b/kernel-src/include/arch/io.h new file mode 100644 index 00000000..6f537f8f --- /dev/null +++ b/kernel-src/include/arch/io.h @@ -0,0 +1,27 @@ +#ifndef IO_H +#define IO_H + +#include +#include + +static inline void outd(uint16_t port, uint32_t data) { + asm volatile("out %%eax, %%dx" : : "a"(data), "d"(port)); +} + +static inline uint32_t ind(uint16_t port) { + uint32_t ret; + asm volatile("in %%dx, %%eax" : "=a"(ret) : "d"(port)); + return ret; +} + +static inline void outb(uint16_t port, uint8_t data) { + asm volatile("out %%al, %%dx" : : "a"(data), "d"(port)); +} + +static inline uint8_t inb(uint16_t port) { + uint8_t ret; + asm volatile ("in %%dx, %%al" : "=a"(ret) : "d"(port)); + return ret; +} + +#endif