initcode.S 458 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # Initial process execs /init.
  2. #include "syscall.h"
  3. #include "traps.h"
  4. # exec(init, argv)
  5. .globl start
  6. start:
  7. push {lr}
  8. ldr r0, =argv
  9. push {r0}
  10. ldr r0, =init
  11. push {r0}
  12. mov r0, #SYS_exec
  13. swi #T_SYSCALL
  14. pop {lr}
  15. pop {lr}
  16. pop {lr}
  17. bx lr
  18. # for(;;) exit();
  19. exit:
  20. mov r11, #SYS_exit
  21. swi #T_SYSCALL
  22. bl exit
  23. # char init[] = "/init\0";
  24. init:
  25. .string "/init\0"
  26. # char *argv[] = { init, 0 };
  27. .p2align 2
  28. argv:
  29. .long init
  30. .long 0