xref: /linux/arch/riscv/purgatory/entry.S (revision 948752d2e010e11b56a877975e7e9158d6d31823)
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#include <asm/asm.h>
11#include <linux/linkage.h>
12
13.text
14
15SYM_CODE_START(purgatory_start)
16
17	lla	sp, .Lstack
18	mv	s0, a0	/* The hartid of the current hart */
19	mv	s1, a1	/* Phys address of the FDT image */
20
21	jal	purgatory
22
23	/* Start new image. */
24	mv	a0, s0
25	mv	a1, s1
26	ld	a2, riscv_kernel_entry
27	jr	a2
28SYM_CODE_END(purgatory_start)
29
30.align 4
31	.rept	256
32	.quad	0
33	.endr
34.Lstack:
35
36.data
37
38.align LGREG
39SYM_DATA(riscv_kernel_entry, .quad 0)
40
41.end
42