| #ifndef _SYS_IO_H |
| #define _SYS_IO_H |
| |
| #include <inttypes.h> |
| |
| static inline uint8_t inb(uint16_t p) |
| { |
| uint8_t v; |
| asm volatile ("inb %1,%0":"=a" (v):"Nd"(p)); |
| return v; |
| } |
| |
| static inline uint16_t inw(uint16_t p) |
| { |
| uint16_t v; |
| asm volatile ("inw %1,%0":"=a" (v):"Nd"(p)); |
| return v; |
| } |
| |
| static inline uint32_t inl(uint16_t p) |
| { |
| uint32_t v; |
| asm volatile ("inl %1,%0":"=a" (v):"Nd"(p)); |
| return v; |
| } |
| |
| static inline void outb(uint8_t v, uint16_t p) |
| { |
| asm volatile ("outb %0,%1"::"a" (v), "Nd"(p)); |
| } |
| |
| static inline void outw(uint16_t v, uint16_t p) |
| { |
| asm volatile ("outw %0,%1"::"a" (v), "Nd"(p)); |
| } |
| |
| static inline void outl(uint32_t v, uint16_t p) |
| { |
| asm volatile ("outl %0,%1"::"a" (v), "Nd"(p)); |
| } |
| |
| #endif /* _SYS_IO_H */ |