aboutsummaryrefslogtreecommitdiff
path: root/kernel/inc/cpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/inc/cpu.h')
-rw-r--r--kernel/inc/cpu.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/kernel/inc/cpu.h b/kernel/inc/cpu.h
new file mode 100644
index 0000000..eb09291
--- /dev/null
+++ b/kernel/inc/cpu.h
@@ -0,0 +1,29 @@
+// MIT License, Copyright (c) 2020 Marvin Borner
+
+#ifndef CPU_H
+#define CPU_H
+
+#include <def.h>
+
+u8 inb(u16 port);
+u16 inw(u16 port);
+u32 inl(u16 port);
+void insl(u16 port, void *addr, int n);
+
+void outb(u16 port, u8 data);
+void outw(u16 port, u16 data);
+void outl(u16 port, u32 data);
+void cli();
+void sti();
+void hlt();
+void idle();
+
+static inline void spinlock(int *ptr)
+{
+ int prev;
+ do
+ __asm__ volatile("lock xchgl %0,%1" : "=a"(prev) : "m"(*ptr), "a"(1));
+ while (prev);
+}
+
+#endif