1# Initial process execs /init.
2# This code runs in user space.
3
4#include "syscall.h"
5#include "traps.h"
6
7
8# exec(init, argv)
9.globl start
10start:
11 pushl $argv
12 pushl $init
13 pushl $0 // where caller pc would be
14 movl $SYS_exec, %eax
15 int $T_SYSCALL
16
17# for(;;) exit();
18exit:
19 movl $SYS_exit, %eax
20 int $T_SYSCALL
21 jmp exit
22
23# char init[] = "/init\0";
24init:
25 .string "/init\0"
26
27# char *argv[] = { init, 0 };
28.p2align 2
29argv:
30 .long init
31 .long 0
32
33