xref: /openbmc/linux/arch/riscv/purgatory/entry.S (revision 24f68eb5bf14a74027946970a18bc902e19d986a)
1736e30afSLi Zhengyu/* SPDX-License-Identifier: GPL-2.0-only */
2736e30afSLi Zhengyu/*
3736e30afSLi Zhengyu * purgatory: Runs between two kernels
4736e30afSLi Zhengyu *
5736e30afSLi Zhengyu * Copyright (C) 2022 Huawei Technologies Co, Ltd.
6736e30afSLi Zhengyu *
7736e30afSLi Zhengyu * Author: Li Zhengyu (lizhengyu3@huawei.com)
8736e30afSLi Zhengyu *
9736e30afSLi Zhengyu */
10736e30afSLi Zhengyu
11736e30afSLi Zhengyu.macro	size, sym:req
12736e30afSLi Zhengyu	.size \sym, . - \sym
13736e30afSLi Zhengyu.endm
14*6e62dab3SDaniel Maslowski#include <asm/asm.h>
15*6e62dab3SDaniel Maslowski#include <linux/linkage.h>
16736e30afSLi Zhengyu
17736e30afSLi Zhengyu.text
18736e30afSLi Zhengyu
19736e30afSLi Zhengyu.globl purgatory_start
20736e30afSLi Zhengyupurgatory_start:
21736e30afSLi Zhengyu
22736e30afSLi Zhengyu	lla	sp, .Lstack
23736e30afSLi Zhengyu	mv	s0, a0	/* The hartid of the current hart */
24736e30afSLi Zhengyu	mv	s1, a1	/* Phys address of the FDT image */
25736e30afSLi Zhengyu
26736e30afSLi Zhengyu	jal	purgatory
27736e30afSLi Zhengyu
28736e30afSLi Zhengyu	/* Start new image. */
29736e30afSLi Zhengyu	mv	a0, s0
30736e30afSLi Zhengyu	mv	a1, s1
31736e30afSLi Zhengyu	ld	a2, riscv_kernel_entry
32736e30afSLi Zhengyu	jr	a2
33736e30afSLi Zhengyu
34736e30afSLi Zhengyusize purgatory_start
35736e30afSLi Zhengyu
36736e30afSLi Zhengyu.align 4
37736e30afSLi Zhengyu	.rept	256
38736e30afSLi Zhengyu	.quad	0
39736e30afSLi Zhengyu	.endr
40736e30afSLi Zhengyu.Lstack:
41736e30afSLi Zhengyu
42736e30afSLi Zhengyu.data
43736e30afSLi Zhengyu
44*6e62dab3SDaniel Maslowski.align LGREG
45736e30afSLi Zhengyu.globl riscv_kernel_entry
46736e30afSLi Zhengyuriscv_kernel_entry:
47736e30afSLi Zhengyu	.quad	0
48736e30afSLi Zhengyusize riscv_kernel_entry
49736e30afSLi Zhengyu
50736e30afSLi Zhengyu.end
51