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の仕組みがよくわかってないが、