master
s 57 lines 822 Bytes
Raw
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3 * Minimal LoongArch system boot code.
4 *
5 * Copyright (c) 2021 Loongson Technology Corporation Limited
6 */
7
8 #include "regdef.h"
9
10 .global _start
11 .align 16
12 _start:
13 la.local t0, stack_end
14 move sp, t0
15 bl main
16
17 .type _start 2
18 .size _start, .-_start
19
20 .global _exit
21 .align 16
22 _exit:
23 2: /* QEMU ACPI poweroff */
24 li.w t0, 0x34
25 li.w t1, 0x100e001c
26 st.b t0, t1, 0
27
28 idle 0
29 bl 2b
30
31 .type _exit 2
32 .size _exit, .-_exit
33
34 .global __sys_outc
35 __sys_outc:
36 li.d t1, 1000000
37 loop:
38 lu12i.w t2, 0x1fe00
39 ori t0, t2, 0x1e5
40 ld.bu t0, t0, 0
41 andi t0, t0, 0x20
42 ext.w.b t0, t0
43 bnez t0, in
44 addi.w t1, t1, -1
45 bnez t1, loop
46 in:
47 ext.w.b a0, a0
48 lu12i.w t0, 0x1fe00
49 ori t0, t0, 0x1e0
50 st.b a0, t0, 0
51 jirl $r0, ra, 0
52
53 .data
54 .align 4
55 stack:
56 .space 65536
57 stack_end: