28 lines
336 B
ArmAsm
28 lines
336 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, stop
|
|
wait:
|
|
wfe
|
|
b wait
|
|
|
|
run: // cpu id == 0
|
|
mov x20, x0
|
|
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
|