9274ee656e
* initial riscv64 port * enable Paging Mode feature for all architectures * riscv: add missing protocol docs * riscv: fix tests * docs: clarify `LIMINE_PAGING_MODE_DEFAULT` macro * build: fix whitespace in common/GNUmakefile * riscv: default to Sv48 paging when supported * vmm: make `VMM_MAX_LEVEL` 1-indexed * limine: do not call `reported_addr()` before finaling paging mode smp/riscv: do not overwrite the argument passed to APs * limine/riscv: update default paging mode in limine.h * test/riscv: pad OVMF.fd when downloading it
46 lines
956 B
Plaintext
46 lines
956 B
Plaintext
|
|
.section .text
|
|
|
|
.global riscv_spinup
|
|
riscv_spinup:
|
|
|
|
csrci sstatus, 0x2
|
|
csrw sie, zero
|
|
csrw stvec, zero
|
|
|
|
mv t0, a0
|
|
mv sp, a1
|
|
csrw satp, a2
|
|
|
|
mv a0, zero
|
|
mv a1, zero
|
|
mv a2, zero
|
|
mv a3, zero
|
|
mv a4, zero
|
|
mv a5, zero
|
|
mv a6, zero
|
|
mv a7, zero
|
|
mv s0, zero
|
|
mv s1, zero
|
|
mv s2, zero
|
|
mv s3, zero
|
|
mv s4, zero
|
|
mv s5, zero
|
|
mv s6, zero
|
|
mv s7, zero
|
|
mv s8, zero
|
|
mv s9, zero
|
|
mv s10, zero
|
|
mv s11, zero
|
|
mv t1, zero
|
|
mv t2, zero
|
|
mv t3, zero
|
|
mv t4, zero
|
|
mv t5, zero
|
|
mv t6, zero
|
|
mv tp, zero
|
|
mv gp, zero
|
|
mv ra, zero
|
|
|
|
jr t0
|