wires

summary refs log tree commit diff
path: root/src/startup.s
blob: e0c638538c7f21ad52ae622568ca6674fe433a47 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.section ".init"
.global _start

_start:
    mrs     x1, MPIDR_EL1
    and     x1, x1, 0b11

    cbz     x1, init
halt:
    wfe
    b       halt

init:
    adr     x1, __stack_base
    mov     sp, x1

    adr     x1, __bss_start
    adr     x2, __bss_size
    cbz     x2, exec_kernel

clear_bss:
    str     xzr, [x1], 8
    sub     x2, x2, 1
    cbnz    w2, clear_bss

exec_kernel:
    bl      main
    b       halt