aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/sys.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/sys.h')
-rw-r--r--kernel/include/sys.h23
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);