diff options
Diffstat (limited to 'kernel/include/sys.h')
-rw-r--r-- | kernel/include/sys.h | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/kernel/include/sys.h b/kernel/include/sys.h index 319cbef..2304eec 100644 --- a/kernel/include/sys.h +++ b/kernel/include/sys.h @@ -2,10 +2,25 @@ #include <config.h> -void outb(uint16_t port, uint8_t value); -void outw(uint16_t port, uint16_t value); -uint8_t inb(uint16_t port); -uint16_t inw(uint16_t port); +static inline void outb(uint16_t port, uint8_t value) { + asm volatile("outb %1, %0" : : "dN"(port), "a"(value)); +} + +static inline void outw(uint16_t port, uint16_t value) { + asm volatile("outw %1, %0" : : "dN"(port), "a"(value)); +} + +static inline uint8_t inb(uint16_t port) { + uint8_t ret; + asm volatile("inb %1, %0" : "=a"(ret) : "dN"(port)); + return ret; +} + +static inline uint16_t inw(uint16_t port) { + uint16_t ret; + asm volatile("inw %1, %0" : "=a"(ret) : "dN"(port)); + return ret; +} void panic(const char* message, const char* file, int line); void panic_assert(const char* assertion, const char* file, int line); |