#include "csr.h" # qemu -kernel loads the kernel at 0x80000000 # and causes each hart (i.e. CPU) to jump there. # kernel.ld causes the following code to # be placed at 0x80000000. .section .text .global _entry _entry: # set up a stack for C. # stack0 is declared in start.c, # with a 4096-byte stack per CPU. # sp = stack0 + (hartid * 4096) la.global $sp, stack0 li.w $a0, 1024*4 csrrd $a1, CPUID addi.w $a1, $a1, 1 mul.w $a0, $a0, $a1 add.w $sp, $sp, $a0 # jump to start() in start.c bl start spin: b spin