xref: /linux/arch/riscv/purgatory/entry.S (revision c83b49383b595be50647f0c764a48c78b5f3c4f8)
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * purgatory: Runs between two kernels
4 *
5 * Copyright (C) 2022 Huawei Technologies Co, Ltd.
6 *
7 * Author: Li Zhengyu (lizhengyu3@huawei.com)
8 *
9 */
10
11.macro	size, sym:req
12	.size \sym, . - \sym
13.endm
14
15.text
16
17.globl purgatory_start
18purgatory_start:
19
20	lla	sp, .Lstack
21	mv	s0, a0	/* The hartid of the current hart */
22	mv	s1, a1	/* Phys address of the FDT image */
23
24	jal	purgatory
25
26	/* Start new image. */
27	mv	a0, s0
28	mv	a1, s1
29	ld	a2, riscv_kernel_entry
30	jr	a2
31
32size purgatory_start
33
34.align 4
35	.rept	256
36	.quad	0
37	.endr
38.Lstack:
39
40.data
41
42.globl riscv_kernel_entry
43riscv_kernel_entry:
44	.quad	0
45size riscv_kernel_entry
46
47.end
48