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
10 start:
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();
18 exit:
19 movl $SYS_exit, %eax
20 int $T_SYSCALL
21 jmp exit
22
23 # char init[] = "/init\0";
24 init:
25 .string "/init\0"
26
27 # char *argv[] = { init, 0 };
28 .p2align 2
29 argv:
30 .long init
31 .long 0
32