diff options
author | dzwdz | 2021-06-25 16:22:43 +0200 |
---|---|---|
committer | dzwdz | 2021-06-25 16:22:43 +0200 |
commit | f60d40f3bf4dfe8ed6f63a27367d323319a4ef97 (patch) | |
tree | 1cde54eb600106d0d1fc11927f55d5a03eb2b4aa /kernel/main.c | |
parent | 376325d08388d9103ca2f57aceb60c4a507a42aa (diff) |
ring3
Diffstat (limited to 'kernel/main.c')
-rw-r--r-- | kernel/main.c | 16 |
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 (;;) {} } |