summaryrefslogtreecommitdiff
path: root/kernel/src/sys/userspace_asm.S
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-03-02 20:30:55 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-03-02 20:30:55 +0100
commitfbc2cc52c8a38c3c63a34f5547ba7c4209a667ac (patch)
tree985e3b96308123dc1771abfc30e9fe4f8daac5f4 /kernel/src/sys/userspace_asm.S
parent1e1c00c09991846257af4c8e50a177178355d986 (diff)
scheduling usermode processes & code refactoring
Diffstat (limited to 'kernel/src/sys/userspace_asm.S')
-rw-r--r--kernel/src/sys/userspace_asm.S20
1 files changed, 7 insertions, 13 deletions
diff --git a/kernel/src/sys/userspace_asm.S b/kernel/src/sys/userspace_asm.S
index 1bb19a3..ca5a0ba 100644
--- a/kernel/src/sys/userspace_asm.S
+++ b/kernel/src/sys/userspace_asm.S
@@ -1,19 +1,13 @@
.text
-.extern begin_userspace
-.extern syscall_handler
-
.set IA32_EFER, 0xc0000080
.set STAR_MSR, 0xc0000081
.set LSTAR_MSR, 0xc0000082
-.global jump_userspace
-jump_userspace:
- mov $0x1b, %ax
- mov %ax, %ds
- mov %ax, %es
- mov %ax, %fs
- mov %ax, %gs
+.global init_userspace
+init_userspace:
+ push %rbp
+ mov %rsp, %rbp
mov $LSTAR_MSR, %rcx
movabs $__syscall, %rax
@@ -30,6 +24,6 @@ jump_userspace:
mov $0x00130008, %edx
wrmsr
- movabs $begin_userspace, %rcx
- mov $0x202, %r11
- sysretq
+ mov %rbp, %rsp
+ pop %rbp
+ ret