Files
osc2025/bootloader/Start.S
2025-04-08 06:59:49 +08:00

57 lines
726 B
ArmAsm

.section ".text.boot"
.global _start
_start:
mrs x1, mpidr_el1
and x1, x1, #3
cbz x1, run
wait:
wfe
b wait
run:
mov x20, x0
adr x0, _start
mov sp, x0
adr x0, __text_start
ldr x1, =__new_text_start
cmp x0, x1
b.gt relocate
adr x0, __bss_start
adr x1, __bss_end
bl memzero
mov x0, x20
bl main
b wait
relocate:
// move text section
ldr x0, =__new_text_start
adr x1, __text_start
adr x2, __text_end
sub x2, x2, x1
bl memcpy
mov x19, x0
// move rodata section
ldr x0, =__new_ro_start
adr x1, __rodata_start
adr x2, __rodata_end
sub x2, x2, x1
bl memcpy
// move data section
ldr x0, =__new_data_start
adr x1, __data_start
adr x2, __data_end
sub x2, x2, x1
bl memcpy
br x19
b wait