xref: /kvm-unit-tests/lib/riscv/setjmp.S (revision 0cc3a351b925928827baa4b69cf0e46ff5837083)
1*53cded04SAndrew Jones/* SPDX-License-Identifier: GPL-2.0 */
2*53cded04SAndrew Jones#include <asm/asm.h>
3*53cded04SAndrew Jones
4*53cded04SAndrew Jones.section .text
5*53cded04SAndrew Jones
6*53cded04SAndrew Jones.balign 4
7*53cded04SAndrew Jones.global setjmp
8*53cded04SAndrew Jonessetjmp:
9*53cded04SAndrew Jones	REG_S	ra, (0 * SZREG)(a0)
10*53cded04SAndrew Jones	REG_S	s0, (1 * SZREG)(a0)
11*53cded04SAndrew Jones	REG_S	s1, (2 * SZREG)(a0)
12*53cded04SAndrew Jones	REG_S	s2, (3 * SZREG)(a0)
13*53cded04SAndrew Jones	REG_S	s3, (4 * SZREG)(a0)
14*53cded04SAndrew Jones	REG_S	s4, (5 * SZREG)(a0)
15*53cded04SAndrew Jones	REG_S	s5, (6 * SZREG)(a0)
16*53cded04SAndrew Jones	REG_S	s6, (7 * SZREG)(a0)
17*53cded04SAndrew Jones	REG_S	s7, (8 * SZREG)(a0)
18*53cded04SAndrew Jones	REG_S	s8, (9 * SZREG)(a0)
19*53cded04SAndrew Jones	REG_S	s9, (10 * SZREG)(a0)
20*53cded04SAndrew Jones	REG_S	s10, (11 * SZREG)(a0)
21*53cded04SAndrew Jones	REG_S	s11, (12 * SZREG)(a0)
22*53cded04SAndrew Jones	REG_S	sp, (13 * SZREG)(a0)
23*53cded04SAndrew Jones	REG_S	gp, (14 * SZREG)(a0)
24*53cded04SAndrew Jones	REG_S	tp, (15 * SZREG)(a0)
25*53cded04SAndrew Jones	li	a0, 0
26*53cded04SAndrew Jones	ret
27*53cded04SAndrew Jones
28*53cded04SAndrew Jones.balign 4
29*53cded04SAndrew Jones.global longjmp
30*53cded04SAndrew Joneslongjmp:
31*53cded04SAndrew Jones	REG_L	ra, (0 * SZREG)(a0)
32*53cded04SAndrew Jones	REG_L	s0, (1 * SZREG)(a0)
33*53cded04SAndrew Jones	REG_L	s1, (2 * SZREG)(a0)
34*53cded04SAndrew Jones	REG_L	s2, (3 * SZREG)(a0)
35*53cded04SAndrew Jones	REG_L	s3, (4 * SZREG)(a0)
36*53cded04SAndrew Jones	REG_L	s4, (5 * SZREG)(a0)
37*53cded04SAndrew Jones	REG_L	s5, (6 * SZREG)(a0)
38*53cded04SAndrew Jones	REG_L	s6, (7 * SZREG)(a0)
39*53cded04SAndrew Jones	REG_L	s7, (8 * SZREG)(a0)
40*53cded04SAndrew Jones	REG_L	s8, (9 * SZREG)(a0)
41*53cded04SAndrew Jones	REG_L	s9, (10 * SZREG)(a0)
42*53cded04SAndrew Jones	REG_L	s10, (11 * SZREG)(a0)
43*53cded04SAndrew Jones	REG_L	s11, (12 * SZREG)(a0)
44*53cded04SAndrew Jones	REG_L	sp, (13 * SZREG)(a0)
45*53cded04SAndrew Jones	REG_L	gp, (14 * SZREG)(a0)
46*53cded04SAndrew Jones	REG_L	tp, (15 * SZREG)(a0)
47*53cded04SAndrew Jones	seqz	a0, a1
48*53cded04SAndrew Jones	add	a0, a0, a1
49*53cded04SAndrew Jones	ret
50