diff options
Diffstat (limited to 'kernel/src/sys')
| -rw-r--r-- | kernel/src/sys/userspace_asm.S | 20 |
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 |
