xv6-mipsリンカスクリプトとentry

リンカスクリプト

OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradlittlemips", "elf32-tradlittlemips")
OUTPUT_ARCH(mips)
ENTRY(_start)

この _start はentry.Sに定義されている。

# By convention, the _start symbol specifies the ELF entry point.
.globl _start
_start:
  mfc0   $t0, $COP0_STATUS
  # Disable interrput
  li     $t1, STATUS_IE
  or     $t0, $t1, $t1
  xor    $t0, $t0, $t1
  # Setup IM registers preparing for enabling interrput
  ori    $t0, $t0, STATUS_IM
  # COP0
  lui    $t1, STATUS_CU0 >> 16
  or     $t0, $t0, $t1
  mtc0   $t0, $COP0_STATUS
  
  # Set up the stack pointer.
  la  $sp, stack + KSTACKSIZE

  # Jump to main()
  la     $t0, main
  jr     $t0
  nop

ここの最後で main() へ飛ぶ。memfsの仕組みがよくわかってないが、