OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [newlib/] [newlib/] [libc/] [machine/] [riscv/] [setjmp.S] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
#ifdef __riscv64
2
# define REG_S    sd
3
# define REG_L     ld
4
# define SZREG 8
5
#else
6
# define REG_S    sw
7
# define REG_L     lw
8
# define SZREG 4
9
#endif
10
 
11
/* int setjmp (jmp_buf);  */
12
  .globl  setjmp
13
setjmp:
14
        REG_S ra,  0*SZREG(a0)
15
        REG_S s0,  1*SZREG(a0)
16
        REG_S s1,  2*SZREG(a0)
17
        REG_S s2,  3*SZREG(a0)
18
        REG_S s3,  4*SZREG(a0)
19
        REG_S s4,  5*SZREG(a0)
20
        REG_S s5,  6*SZREG(a0)
21
        REG_S s6,  7*SZREG(a0)
22
        REG_S s7,  8*SZREG(a0)
23
        REG_S s8,  9*SZREG(a0)
24
        REG_S s9, 10*SZREG(a0)
25
        REG_S s10,11*SZREG(a0)
26
        REG_S s11,12*SZREG(a0)
27
        REG_S sp, 13*SZREG(a0)
28
 
29
#ifdef __riscv_hard_float
30
        frsr a3
31
 
32
        fsd   fs0, 16*SZREG+ 0*8(a0)
33
        fsd   fs1, 16*SZREG+ 1*8(a0)
34
        fsd   fs2, 16*SZREG+ 2*8(a0)
35
        fsd   fs3, 16*SZREG+ 3*8(a0)
36
        fsd   fs4, 16*SZREG+ 4*8(a0)
37
        fsd   fs5, 16*SZREG+ 5*8(a0)
38
        fsd   fs6, 16*SZREG+ 6*8(a0)
39
        fsd   fs7, 16*SZREG+ 7*8(a0)
40
        fsd   fs8, 16*SZREG+ 8*8(a0)
41
        fsd   fs9, 16*SZREG+ 9*8(a0)
42
        fsd   fs10,16*SZREG+10*8(a0)
43
        fsd   fs11,16*SZREG+11*8(a0)
44
 
45
        REG_S a3, 15*SZREG(a0)
46
#endif
47
 
48
        li    a0, 0
49
        ret
50
 
51
/* volatile void longjmp (jmp_buf, int);  */
52
  .globl  longjmp
53
longjmp:
54
        REG_L ra,  0*SZREG(a0)
55
        REG_L s0,  1*SZREG(a0)
56
        REG_L s1,  2*SZREG(a0)
57
        REG_L s2,  3*SZREG(a0)
58
        REG_L s3,  4*SZREG(a0)
59
        REG_L s4,  5*SZREG(a0)
60
        REG_L s5,  6*SZREG(a0)
61
        REG_L s6,  7*SZREG(a0)
62
        REG_L s7,  8*SZREG(a0)
63
        REG_L s8,  9*SZREG(a0)
64
        REG_L s9, 10*SZREG(a0)
65
        REG_L s10,11*SZREG(a0)
66
        REG_L s11,12*SZREG(a0)
67
        REG_L sp, 13*SZREG(a0)
68
 
69
#ifdef __riscv_hard_float
70
        REG_L a3, 15*SZREG(a0)
71
 
72
        fld  fs0, 16*SZREG+ 0*8(a0)
73
        fld  fs1, 16*SZREG+ 1*8(a0)
74
        fld  fs2, 16*SZREG+ 2*8(a0)
75
        fld  fs3, 16*SZREG+ 3*8(a0)
76
        fld  fs4, 16*SZREG+ 4*8(a0)
77
        fld  fs5, 16*SZREG+ 5*8(a0)
78
        fld  fs6, 16*SZREG+ 6*8(a0)
79
        fld  fs7, 16*SZREG+ 7*8(a0)
80
        fld  fs8, 16*SZREG+ 8*8(a0)
81
        fld  fs9, 16*SZREG+ 9*8(a0)
82
        fld  fs10,16*SZREG+10*8(a0)
83
 
84
        fssr a3
85
#endif
86
 
87
        seqz a0, a1
88
        add  a0, a0, a1   # a0 = (a1 == 0) ? 1 : a1
89
        ret

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.