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