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