1 | /* Copyright (C) 2000-2024 Free Software Foundation, Inc. |
2 | This file is part of the GNU C Library. |
3 | |
4 | The GNU C Library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Lesser General Public |
6 | License as published by the Free Software Foundation; either |
7 | version 2.1 of the License, or (at your option) any later version. |
8 | |
9 | The GNU C Library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Lesser General Public License for more details. |
13 | |
14 | You should have received a copy of the GNU Lesser General Public |
15 | License along with the GNU C Library; if not, see |
16 | <https://www.gnu.org/licenses/>. */ |
17 | |
18 | /* |
19 | Floating Point Registers (FPRs) save routine |
20 | */ |
21 | |
22 | #include <sysdep.h> |
23 | |
24 | ENTRY(_savefpr_all) |
25 | .globl C_TEXT(_savef14) |
26 | .globl C_TEXT(_savefpr_14) |
27 | C_TEXT(_savef14): |
28 | C_TEXT(_savefpr_14): stfd fp14,-144(r1) |
29 | cfi_offset(fp14,-144) |
30 | .globl C_TEXT(_savef15) |
31 | .globl C_TEXT(_savefpr_15) |
32 | C_TEXT(_savef15): |
33 | C_TEXT(_savefpr_15): stfd fp15,-136(r1) |
34 | cfi_offset(fp15,-136) |
35 | .globl C_TEXT(_savef16) |
36 | .globl C_TEXT(_savefpr_16) |
37 | C_TEXT(_savef16): |
38 | C_TEXT(_savefpr_16): stfd fp16,-128(r1) |
39 | cfi_offset(fp16,-128) |
40 | .globl C_TEXT(_savef17) |
41 | .globl C_TEXT(_savefpr_17) |
42 | C_TEXT(_savef17): |
43 | C_TEXT(_savefpr_17): stfd fp17,-120(r1) |
44 | cfi_offset(fp17,-120) |
45 | .globl C_TEXT(_savef18) |
46 | .globl C_TEXT(_savefpr_18) |
47 | C_TEXT(_savef18): |
48 | C_TEXT(_savefpr_18): stfd fp18,-112(r1) |
49 | cfi_offset(fp18,-112) |
50 | .globl C_TEXT(_savef19) |
51 | .globl C_TEXT(_savefpr_19) |
52 | C_TEXT(_savef19): |
53 | C_TEXT(_savefpr_19): stfd fp19,-104(r1) |
54 | cfi_offset(fp19,-104) |
55 | .globl C_TEXT(_savef20) |
56 | .globl C_TEXT(_savefpr_20) |
57 | C_TEXT(_savef20): |
58 | C_TEXT(_savefpr_20): stfd fp20,-96(r1) |
59 | cfi_offset(fp20,-96) |
60 | .globl C_TEXT(_savef21) |
61 | .globl C_TEXT(_savefpr_21) |
62 | C_TEXT(_savef21): |
63 | C_TEXT(_savefpr_21): stfd fp21,-88(r1) |
64 | cfi_offset(fp21,-88) |
65 | .globl C_TEXT(_savef22) |
66 | .globl C_TEXT(_savefpr_22) |
67 | C_TEXT(_savef22): |
68 | C_TEXT(_savefpr_22): stfd fp22,-80(r1) |
69 | cfi_offset(fp22,-80) |
70 | .globl C_TEXT(_savef23) |
71 | .globl C_TEXT(_savefpr_23) |
72 | C_TEXT(_savef23): |
73 | C_TEXT(_savefpr_23): stfd fp23,-72(r1) |
74 | cfi_offset(fp23,-72) |
75 | .globl C_TEXT(_savef24) |
76 | .globl C_TEXT(_savefpr_24) |
77 | C_TEXT(_savef24): |
78 | C_TEXT(_savefpr_24): stfd fp24,-64(r1) |
79 | cfi_offset(fp24,-64) |
80 | .globl C_TEXT(_savef25) |
81 | .globl C_TEXT(_savefpr_25) |
82 | C_TEXT(_savef25): |
83 | C_TEXT(_savefpr_25): stfd fp25,-56(r1) |
84 | cfi_offset(fp25,-56) |
85 | .globl C_TEXT(_savef26) |
86 | .globl C_TEXT(_savefpr_26) |
87 | C_TEXT(_savef26): |
88 | C_TEXT(_savefpr_26): stfd fp26,-48(r1) |
89 | cfi_offset(fp26,-48) |
90 | .globl C_TEXT(_savef27) |
91 | .globl C_TEXT(_savefpr_27) |
92 | C_TEXT(_savef27): |
93 | C_TEXT(_savefpr_27): stfd fp27,-40(r1) |
94 | cfi_offset(fp27,-40) |
95 | .globl C_TEXT(_savef28) |
96 | .globl C_TEXT(_savefpr_28) |
97 | C_TEXT(_savef28): |
98 | C_TEXT(_savefpr_28): stfd fp28,-32(r1) |
99 | cfi_offset(fp28,-32) |
100 | .globl C_TEXT(_savef29) |
101 | .globl C_TEXT(_savefpr_29) |
102 | C_TEXT(_savef29): |
103 | C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29 |
104 | stfd fp30,-16(r1) #save f30 |
105 | stfd fp31,-8(r1) #save f31 |
106 | cfi_offset(fp29,-24) |
107 | cfi_offset(fp30,-16) |
108 | cfi_offset(fp31,-8) |
109 | stw r0,8(r1) #save LR in callers frame |
110 | blr #return |
111 | END (_savefpr_all) |
112 | |