xref: /kvmtool/x86/init.S (revision 5614f9d933c9fac94886fe359f807a60acda3fa4)
1*5614f9d9SOleg Nesterov.data
2*5614f9d9SOleg Nesterov
3*5614f9d9SOleg Nesterov.m_dev:
4*5614f9d9SOleg Nesterov.string "hostfs"
5*5614f9d9SOleg Nesterov.m_dir:
6*5614f9d9SOleg Nesterov.string "/host"
7*5614f9d9SOleg Nesterov.m_typ:
8*5614f9d9SOleg Nesterov.string "9p"
9*5614f9d9SOleg Nesterov.m_opt:
10*5614f9d9SOleg Nesterov.string "trans=virtio,version=9p2000.L"
11*5614f9d9SOleg Nesterov
12*5614f9d9SOleg Nesterov.e_nam:
13*5614f9d9SOleg Nesterov.string "/virt/init"
14*5614f9d9SOleg Nesterov
15*5614f9d9SOleg Nesterov.text
16*5614f9d9SOleg Nesterov.globl _start
17*5614f9d9SOleg Nesterov_start:
18*5614f9d9SOleg Nesterov
19*5614f9d9SOleg Nesterov	mov $165, %rax		# __NR_mount
20*5614f9d9SOleg Nesterov	mov $.m_dev, %rdi
21*5614f9d9SOleg Nesterov	mov $.m_dir, %rsi
22*5614f9d9SOleg Nesterov	mov $.m_typ, %rdx
23*5614f9d9SOleg Nesterov	mov $1, %r10		# MS_RDONLY
24*5614f9d9SOleg Nesterov	mov $.m_opt, %r8
25*5614f9d9SOleg Nesterov	syscall
26*5614f9d9SOleg Nesterov
27*5614f9d9SOleg Nesterov	mov $59, %rax		# __NR_execve
28*5614f9d9SOleg Nesterov	mov $.e_nam, %rdi
29*5614f9d9SOleg Nesterov	lea 8(%rsp), %rsi	# argv[]
30*5614f9d9SOleg Nesterov	mov %rdi, (%rsi)	# change argv[0]
31*5614f9d9SOleg Nesterov	pop %rcx		# argc
32*5614f9d9SOleg Nesterov	inc %rcx
33*5614f9d9SOleg Nesterov	lea (%rsi,%rcx,8), %rdx # envp[]
34*5614f9d9SOleg Nesterov	syscall
35*5614f9d9SOleg Nesterov
36*5614f9d9SOleg Nesterov	mov $60, %rax		# __NR_exit
37*5614f9d9SOleg Nesterov	mov $1, %rdi
38*5614f9d9SOleg Nesterov	syscall			# panic
39