blob: 67eb1c04ceab92d208e3dcc4a2693dccb7c97491 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Minimal LoongArch system boot code.
*
* Copyright (c) 2021 Loongson Technology Corporation Limited
*/
#include "regdef.h"
.global _start
.align 16
_start:
la.local t0, stack_end
move sp, t0
bl main
.type _start 2
.size _start, .-_start
.global _exit
.align 16
_exit:
2: /* QEMU ACPI poweroff */
li.w t0, 0xff
li.w t1, 0x10080010
st.w t0, t1, 0
idle 0
bl 2b
.type _exit 2
.size _exit, .-_exit
.global __sys_outc
__sys_outc:
li.d t1, 1000000
loop:
lu12i.w t2, 0x1fe00
ori t0, t2, 0x1e5
ld.bu t0, t0, 0
andi t0, t0, 0x20
ext.w.b t0, t0
bnez t0, in
addi.w t1, t1, -1
bnez t1, loop
in:
ext.w.b a0, a0
lu12i.w t0, 0x1fe00
ori t0, t0, 0x1e0
st.b a0, t0, 0
jirl $r0, ra, 0
.data
.align 4
stack:
.space 65536
stack_end: