summaryrefslogtreecommitdiff
path: root/kernel/src/sys/userspace_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/sys/userspace_asm.S')
-rw-r--r--kernel/src/sys/userspace_asm.S20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/src/sys/userspace_asm.S b/kernel/src/sys/userspace_asm.S
new file mode 100644
index 0000000..5838051
--- /dev/null
+++ b/kernel/src/sys/userspace_asm.S
@@ -0,0 +1,20 @@
+.text
+
+.extern begin_userspace
+
+.global jump_userspace
+jump_userspace:
+ mov $0x23, %ax
+ mov %ax, %ds
+ mov %ax, %es
+ mov %ax, %fs
+ mov %ax, %gs
+
+ mov %esp, %eax
+ push $0x23
+ push %rax
+ pushf
+ push $0x1b
+ sub $8, %rsp
+ movabs $begin_userspace, %rsp
+ iretq