Files
osc2025/kernel/Start.S
2025-04-08 07:01:24 +08:00

39 lines
470 B
ArmAsm

.section ".text.boot"
.global _start
_start:
// read cpu id, stop slave cores
mrs x1, mpidr_el1
and x1, x1, #3
cbz x1, run
// cpu id > 0, fallback to wait
wait:
wfe
b wait
run: // cpu id == 0
mov x20, x0
bl el2_to_el1
adrp x0, __stack_end
mov sp, x0
// clear bss
adr x0, __bss_start
adr x1, __bss_end
bl memzero
mov x0, x20
bl main
b wait
el2_to_el1:
mov x0, (1 << 31)
msr hcr_el2, x0
mov x0, 0x3c5
msr spsr_el2, x0
msr elr_el2, lr
eret