summaryrefslogtreecommitdiff
path: root/kernel/main.c
diff options
context:
space:
mode:
authordzwdz2021-06-25 16:22:43 +0200
committerdzwdz2021-06-25 16:22:43 +0200
commitf60d40f3bf4dfe8ed6f63a27367d323319a4ef97 (patch)
tree1cde54eb600106d0d1fc11927f55d5a03eb2b4aa /kernel/main.c
parent376325d08388d9103ca2f57aceb60c4a507a42aa (diff)
ring3
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/main.c b/kernel/main.c
index d2f0693..e63ca14 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -1,8 +1,24 @@
#include <kernel/gdt.h>
#include <kernel/tty.h>
+#include <platform/sysenter.h>
+
+extern void stack_top;
+
+void r3_test();
void kmain()
{
tty_clear();
gdt_init();
+ sysenter_setup();
+
+ tty_write("user...", 7);
+ sysexit(r3_test, &stack_top);
+}
+
+void r3_test() {
+ tty_write("in ring3", 8);
+ asm("cli"); // privileged instruction, should cause a GP
+ tty_write(" oh no", 6); // shouldn't happen
+ for (;;) {}
}