1//------------------------------------------------------------------------------
2//
3// Set/Long jump for RISC-V
4//
5// Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
6//
7// SPDX-License-Identifier: BSD-2-Clause-Patent
8//
9//------------------------------------------------------------------------------
10# define REG_S  sd
11# define REG_L  ld
12# define SZREG  8
13.align 3
14    .globl  SetJump
15
16SetJump:
17    REG_S ra,  0*SZREG(a0)
18    REG_S s0,  1*SZREG(a0)
19    REG_S s1,  2*SZREG(a0)
20    REG_S s2,  3*SZREG(a0)
21    REG_S s3,  4*SZREG(a0)
22    REG_S s4,  5*SZREG(a0)
23    REG_S s5,  6*SZREG(a0)
24    REG_S s6,  7*SZREG(a0)
25    REG_S s7,  8*SZREG(a0)
26    REG_S s8,  9*SZREG(a0)
27    REG_S s9,  10*SZREG(a0)
28    REG_S s10, 11*SZREG(a0)
29    REG_S s11, 12*SZREG(a0)
30    REG_S sp,  13*SZREG(a0)
31    li    a0,  0
32    ret
33
34    .globl  InternalLongJump
35InternalLongJump:
36    REG_L ra,  0*SZREG(a0)
37    REG_L s0,  1*SZREG(a0)
38    REG_L s1,  2*SZREG(a0)
39    REG_L s2,  3*SZREG(a0)
40    REG_L s3,  4*SZREG(a0)
41    REG_L s4,  5*SZREG(a0)
42    REG_L s5,  6*SZREG(a0)
43    REG_L s6,  7*SZREG(a0)
44    REG_L s7,  8*SZREG(a0)
45    REG_L s8,  9*SZREG(a0)
46    REG_L s9,  10*SZREG(a0)
47    REG_L s10, 11*SZREG(a0)
48    REG_L s11, 12*SZREG(a0)
49    REG_L sp,  13*SZREG(a0)
50
51    add   a0, s0, 0
52    add   a1, s1, 0
53    add   a2, s2, 0
54    add   a3, s3, 0
55    ret
56