#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)); #define inportb(port) \ ({ \ u8_t val; \ __asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port)); \ val; \ }); #define inportw(port) \ ({ \ u16_t val; \ __asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port)); \ val; \ }); #define inportd(port) \ ({ \ u32_t val; \ __asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port)); \ val; \ }); #endif