#pragma once #include "types.h" #include #include static inline void outb(u16 port, u8 val) { __asm__ volatile("outb %b0, %w1" : : "a"(val), "Nd"(port) : "memory"); } static inline u8 inb(u16 port) { u8 ret; __asm__ volatile("inb %w1, %b0" : "=a"(ret) : "Nd"(port) : "memory"); return ret; } static inline void outw(u16 port, u16 val) { __asm__ volatile("outb %b0, %w1" : : "a"(val), "Nd"(port) : "memory"); } static inline u16 inw(u16 port) { u8 ret; __asm__ volatile("inb %w1, %b0" : "=a"(ret) : "Nd"(port) : "memory"); return ret; } static inline void io_wait(void) { outb(0x80, 0); }