summaryrefslogtreecommitdiff
path: root/kernel/src/sys/userspace_asm.S
blob: ca5a0bae2a43ecb141487ae622fd3f9d7544b7fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.text

.set IA32_EFER, 0xc0000080
.set STAR_MSR, 0xc0000081
.set LSTAR_MSR, 0xc0000082

.global init_userspace
init_userspace:
	push %rbp
	mov %rsp, %rbp

	mov $LSTAR_MSR, %rcx
	movabs $__syscall, %rax
	shr $32, %rax
	mov %eax, %edx
	movabs $__syscall, %rax
	wrmsr
	mov $IA32_EFER, %rcx
	rdmsr
	or $1, %eax
	wrmsr
	mov $STAR_MSR, %rcx
	rdmsr
	mov $0x00130008, %edx
	wrmsr

	mov %rbp, %rsp
	pop %rbp
	ret