root/initcode.S

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

/* [<][>][^][v][top][bottom][index][help] */