25 lines
694 B
ArmAsm
25 lines
694 B
ArmAsm
|
// TODO: CHECK/REPLACE/UPDATE OLD CODE (this file is based on xv6)
|
||
|
// 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.
|
||
|
|
||
|
.option norvc
|
||
|
.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 sp, stack0
|
||
|
li a0, 1024*4
|
||
|
csrr a1, mhartid
|
||
|
addi a1, a1, 1
|
||
|
mul a0, a0, a1
|
||
|
add sp, sp, a0
|
||
|
// jump to start() in start.c
|
||
|
call start
|
||
|
spin:
|
||
|
j spin
|