#ifndef PORTIO_H #define PORTIO_H #include "hos_types.h" #define outportb(port, val) \ __asm__ __volatile__ ("outb %%al, %%dx" : : "a" (val), "d" (port)); #define outportw(port, val) \ __asm__ __volatile__ ("outw %%ax, %%dx" : : "a" (val), "d" (port)); #define outportd(port, val) \ __asm__ __volatile__ ("outl %%eax, %%dx" : : "a" (val), "d" (port)); static inline u8_t inportb(u16_t port) { u8_t val; __asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port)); return val; } static inline u16_t inportw(u16_t port) { u16_t val; __asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port)); return val; } static inline u32_t inportd(u16_t port) { u32_t val; __asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port)); return val; } #endif