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