blob: 4ad16ae3b68806898df5df4591ab8497b5ada9bd [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Alexey Brodkina67ef282015-02-03 13:58:20 +03002/*
3 * Copyright (C) 1995, 1997, 2007-2013 Free Software Foundation, Inc.
Alexey Brodkina67ef282015-02-03 13:58:20 +03004 */
5
6 /* ANSI concatenation macros. */
7
8 #define CONCAT1(a, b) CONCAT2(a, b)
9 #define CONCAT2(a, b) a ## b
10
11 /* Use the right prefix for global labels. */
12
13 #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
14
15#ifndef WORKING_ASSEMBLER
16#define abs_l abs
17#define asl_l asl
18#define mov_l mov
19#endif
20
21#define FUNC(X) .type SYM(X),@function
22#define HIDDEN_FUNC(X) FUNC(X)` .hidden X
23#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
24#define ENDFUNC(X) ENDFUNC0(X)
25
26 .section .text
27 .align 4
28 .global SYM(__st_r13_to_r15)
29 .global SYM(__st_r13_to_r16)
30 .global SYM(__st_r13_to_r17)
31 .global SYM(__st_r13_to_r18)
32 .global SYM(__st_r13_to_r19)
33 .global SYM(__st_r13_to_r20)
34 .global SYM(__st_r13_to_r21)
35 .global SYM(__st_r13_to_r22)
36 .global SYM(__st_r13_to_r23)
37 .global SYM(__st_r13_to_r24)
38 .global SYM(__st_r13_to_r25)
39 HIDDEN_FUNC(__st_r13_to_r15)
40 HIDDEN_FUNC(__st_r13_to_r16)
41 HIDDEN_FUNC(__st_r13_to_r17)
42 HIDDEN_FUNC(__st_r13_to_r18)
43 HIDDEN_FUNC(__st_r13_to_r19)
44 HIDDEN_FUNC(__st_r13_to_r20)
45 HIDDEN_FUNC(__st_r13_to_r21)
46 HIDDEN_FUNC(__st_r13_to_r22)
47 HIDDEN_FUNC(__st_r13_to_r23)
48 HIDDEN_FUNC(__st_r13_to_r24)
49 HIDDEN_FUNC(__st_r13_to_r25)
50 .align 4
51SYM(__st_r13_to_r25):
52 st r25, [sp,48]
53SYM(__st_r13_to_r24):
54 st r24, [sp,44]
55SYM(__st_r13_to_r23):
56 st r23, [sp,40]
57SYM(__st_r13_to_r22):
58 st r22, [sp,36]
59SYM(__st_r13_to_r21):
60 st r21, [sp,32]
61SYM(__st_r13_to_r20):
62 st r20, [sp,28]
63SYM(__st_r13_to_r19):
64 st r19, [sp,24]
65SYM(__st_r13_to_r18):
66 st r18, [sp,20]
67SYM(__st_r13_to_r17):
68 st r17, [sp,16]
69SYM(__st_r13_to_r16):
70 st r16, [sp,12]
71SYM(__st_r13_to_r15):
72#ifdef __ARC700__
73 st r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
74#else
75 st_s r15, [sp,8]
76#endif
77 st_s r14, [sp,4]
78 j_s.d [%blink]
79 st_s r13, [sp,0]
80 ENDFUNC(__st_r13_to_r15)
81 ENDFUNC(__st_r13_to_r16)
82 ENDFUNC(__st_r13_to_r17)
83 ENDFUNC(__st_r13_to_r18)
84 ENDFUNC(__st_r13_to_r19)
85 ENDFUNC(__st_r13_to_r20)
86 ENDFUNC(__st_r13_to_r21)
87 ENDFUNC(__st_r13_to_r22)
88 ENDFUNC(__st_r13_to_r23)
89 ENDFUNC(__st_r13_to_r24)
90 ENDFUNC(__st_r13_to_r25)
91
92 .section .text
93 .align 4
94; ==================================
95; the loads
96
97 .global SYM(__ld_r13_to_r15)
98 .global SYM(__ld_r13_to_r16)
99 .global SYM(__ld_r13_to_r17)
100 .global SYM(__ld_r13_to_r18)
101 .global SYM(__ld_r13_to_r19)
102 .global SYM(__ld_r13_to_r20)
103 .global SYM(__ld_r13_to_r21)
104 .global SYM(__ld_r13_to_r22)
105 .global SYM(__ld_r13_to_r23)
106 .global SYM(__ld_r13_to_r24)
107 .global SYM(__ld_r13_to_r25)
108 HIDDEN_FUNC(__ld_r13_to_r15)
109 HIDDEN_FUNC(__ld_r13_to_r16)
110 HIDDEN_FUNC(__ld_r13_to_r17)
111 HIDDEN_FUNC(__ld_r13_to_r18)
112 HIDDEN_FUNC(__ld_r13_to_r19)
113 HIDDEN_FUNC(__ld_r13_to_r20)
114 HIDDEN_FUNC(__ld_r13_to_r21)
115 HIDDEN_FUNC(__ld_r13_to_r22)
116 HIDDEN_FUNC(__ld_r13_to_r23)
117 HIDDEN_FUNC(__ld_r13_to_r24)
118 HIDDEN_FUNC(__ld_r13_to_r25)
119SYM(__ld_r13_to_r25):
120 ld r25, [sp,48]
121SYM(__ld_r13_to_r24):
122 ld r24, [sp,44]
123SYM(__ld_r13_to_r23):
124 ld r23, [sp,40]
125SYM(__ld_r13_to_r22):
126 ld r22, [sp,36]
127SYM(__ld_r13_to_r21):
128 ld r21, [sp,32]
129SYM(__ld_r13_to_r20):
130 ld r20, [sp,28]
131SYM(__ld_r13_to_r19):
132 ld r19, [sp,24]
133SYM(__ld_r13_to_r18):
134 ld r18, [sp,20]
135SYM(__ld_r13_to_r17):
136 ld r17, [sp,16]
137SYM(__ld_r13_to_r16):
138 ld r16, [sp,12]
139SYM(__ld_r13_to_r15):
140#ifdef __ARC700__
141 ld r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
142#else
143 ld_s r15, [sp,8]
144#endif
145 ld_s r14, [sp,4]
146 j_s.d [%blink]
147 ld_s r13, [sp,0]
148 ENDFUNC(__ld_r13_to_r15)
149 ENDFUNC(__ld_r13_to_r16)
150 ENDFUNC(__ld_r13_to_r17)
151 ENDFUNC(__ld_r13_to_r18)
152 ENDFUNC(__ld_r13_to_r19)
153 ENDFUNC(__ld_r13_to_r20)
154 ENDFUNC(__ld_r13_to_r21)
155 ENDFUNC(__ld_r13_to_r22)
156 ENDFUNC(__ld_r13_to_r23)
157 ENDFUNC(__ld_r13_to_r24)
158 ENDFUNC(__ld_r13_to_r25)
159
160 .global SYM(__ld_r13_to_r14_ret)
161 .global SYM(__ld_r13_to_r15_ret)
162 .global SYM(__ld_r13_to_r16_ret)
163 .global SYM(__ld_r13_to_r17_ret)
164 .global SYM(__ld_r13_to_r18_ret)
165 .global SYM(__ld_r13_to_r19_ret)
166 .global SYM(__ld_r13_to_r20_ret)
167 .global SYM(__ld_r13_to_r21_ret)
168 .global SYM(__ld_r13_to_r22_ret)
169 .global SYM(__ld_r13_to_r23_ret)
170 .global SYM(__ld_r13_to_r24_ret)
171 .global SYM(__ld_r13_to_r25_ret)
172 HIDDEN_FUNC(__ld_r13_to_r14_ret)
173 HIDDEN_FUNC(__ld_r13_to_r15_ret)
174 HIDDEN_FUNC(__ld_r13_to_r16_ret)
175 HIDDEN_FUNC(__ld_r13_to_r17_ret)
176 HIDDEN_FUNC(__ld_r13_to_r18_ret)
177 HIDDEN_FUNC(__ld_r13_to_r19_ret)
178 HIDDEN_FUNC(__ld_r13_to_r20_ret)
179 HIDDEN_FUNC(__ld_r13_to_r21_ret)
180 HIDDEN_FUNC(__ld_r13_to_r22_ret)
181 HIDDEN_FUNC(__ld_r13_to_r23_ret)
182 HIDDEN_FUNC(__ld_r13_to_r24_ret)
183 HIDDEN_FUNC(__ld_r13_to_r25_ret)
184 .section .text
185 .align 4
186SYM(__ld_r13_to_r25_ret):
187 ld r25, [sp,48]
188SYM(__ld_r13_to_r24_ret):
189 ld r24, [sp,44]
190SYM(__ld_r13_to_r23_ret):
191 ld r23, [sp,40]
192SYM(__ld_r13_to_r22_ret):
193 ld r22, [sp,36]
194SYM(__ld_r13_to_r21_ret):
195 ld r21, [sp,32]
196SYM(__ld_r13_to_r20_ret):
197 ld r20, [sp,28]
198SYM(__ld_r13_to_r19_ret):
199 ld r19, [sp,24]
200SYM(__ld_r13_to_r18_ret):
201 ld r18, [sp,20]
202SYM(__ld_r13_to_r17_ret):
203 ld r17, [sp,16]
204SYM(__ld_r13_to_r16_ret):
205 ld r16, [sp,12]
206SYM(__ld_r13_to_r15_ret):
207 ld r15, [sp,8]
208SYM(__ld_r13_to_r14_ret):
209 ld blink,[sp,r12]
210 ld_s r14, [sp,4]
211 ld.ab r13, [sp,r12]
212 j_s.d [%blink]
213 add_s sp,sp,4
214 ENDFUNC(__ld_r13_to_r14_ret)
215 ENDFUNC(__ld_r13_to_r15_ret)
216 ENDFUNC(__ld_r13_to_r16_ret)
217 ENDFUNC(__ld_r13_to_r17_ret)
218 ENDFUNC(__ld_r13_to_r18_ret)
219 ENDFUNC(__ld_r13_to_r19_ret)
220 ENDFUNC(__ld_r13_to_r20_ret)
221 ENDFUNC(__ld_r13_to_r21_ret)
222 ENDFUNC(__ld_r13_to_r22_ret)
223 ENDFUNC(__ld_r13_to_r23_ret)
224 ENDFUNC(__ld_r13_to_r24_ret)
225 ENDFUNC(__ld_r13_to_r25_ret)