summaryrefslogtreecommitdiff
path: root/src/boot/entry.S
blob: 6d75bcf1817ca5e40076057ce07c511215748fae (plain)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.section .text.entry
.global _start

_start:
    mv tp, a0

    la t0, stack_base
    li t1, 4096
    addi t2, a0, 1
    mul t1, t1, t2
    add sp, t0, t1

    bnez a0, .L_jump_main

    la t0, sbss
    la t1, ebss
.L_clear_bss:
    bge t0, t1, .L_save_dtb
    sd zero, 0(t0)
    addi t0, t0, 8
    j .L_clear_bss

.L_save_dtb:
    la t0, g_dtb_addr
    sd a1, 0(t0)

.L_jump_main:
    call kernel_main

.L_park:
    wfi
    j .L_park

.section .bss
.align 4
.global stack_top
stack_base:
    .space 4096 * 8
stack_top:

.align 8
.global g_dtb_addr
g_dtb_addr:
    .space 8