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