# C runtime, modified from # https://twilco.github.io/riscv-from-scratch/2019/04/27/riscv-from-scratch-2.html#stop--hammertime-runtime # in the init section which is "allocatable" and "executable" .section .init, "ax" # entry point for the kernel .global _start _start: .cfi_startproc .cfi_undefined ra # initialize the global pointer register .option push .option norelax la gp, __global_pointer$ .option pop # initialize the stack pointer and frame pointer registers # FIXME: when putting the stack at the end of RAM with system memory >2G # it fails to link with the error: relocation truncated to fit: # R_RISCV_HI20 against '__stack_top' la sp, __stack_top add s0, sp, zero # jump to main jal zero, main .cfi_endproc .end