GNU Linux-libre 4.19.286-gnu1
[releases.git] / arch / sparc / lib / Memcpy_utils.S
1 #ifndef __ASM_MEMCPY_UTILS
2 #define __ASM_MEMCPY_UTILS
3
4 #include <linux/linkage.h>
5 #include <asm/asi.h>
6 #include <asm/visasm.h>
7
8 ENTRY(__restore_asi_fp)
9         VISExitHalf
10         retl
11          wr     %g0, ASI_AIUS, %asi
12 ENDPROC(__restore_asi_fp)
13
14 ENTRY(__restore_asi)
15         retl
16          wr     %g0, ASI_AIUS, %asi
17 ENDPROC(__restore_asi)
18
19 ENTRY(memcpy_retl_o2)
20         ba,pt   %xcc, __restore_asi
21          mov    %o2, %o0
22 ENDPROC(memcpy_retl_o2)
23 ENTRY(memcpy_retl_o2_plus_1)
24         ba,pt   %xcc, __restore_asi
25          add    %o2, 1, %o0
26 ENDPROC(memcpy_retl_o2_plus_1)
27 ENTRY(memcpy_retl_o2_plus_3)
28         ba,pt   %xcc, __restore_asi
29          add    %o2, 3, %o0
30 ENDPROC(memcpy_retl_o2_plus_3)
31 ENTRY(memcpy_retl_o2_plus_4)
32         ba,pt   %xcc, __restore_asi
33          add    %o2, 4, %o0
34 ENDPROC(memcpy_retl_o2_plus_4)
35 ENTRY(memcpy_retl_o2_plus_5)
36         ba,pt   %xcc, __restore_asi
37          add    %o2, 5, %o0
38 ENDPROC(memcpy_retl_o2_plus_5)
39 ENTRY(memcpy_retl_o2_plus_6)
40         ba,pt   %xcc, __restore_asi
41          add    %o2, 6, %o0
42 ENDPROC(memcpy_retl_o2_plus_6)
43 ENTRY(memcpy_retl_o2_plus_7)
44         ba,pt   %xcc, __restore_asi
45          add    %o2, 7, %o0
46 ENDPROC(memcpy_retl_o2_plus_7)
47 ENTRY(memcpy_retl_o2_plus_8)
48         ba,pt   %xcc, __restore_asi
49          add    %o2, 8, %o0
50 ENDPROC(memcpy_retl_o2_plus_8)
51 ENTRY(memcpy_retl_o2_plus_15)
52         ba,pt   %xcc, __restore_asi
53          add    %o2, 15, %o0
54 ENDPROC(memcpy_retl_o2_plus_15)
55 ENTRY(memcpy_retl_o2_plus_15_8)
56          add    %o2, 15, %o2
57         ba,pt   %xcc, __restore_asi
58          add    %o2, 8, %o0
59 ENDPROC(memcpy_retl_o2_plus_15_8)
60 ENTRY(memcpy_retl_o2_plus_16)
61         ba,pt   %xcc, __restore_asi
62          add    %o2, 16, %o0
63 ENDPROC(memcpy_retl_o2_plus_16)
64 ENTRY(memcpy_retl_o2_plus_24)
65         ba,pt   %xcc, __restore_asi
66          add    %o2, 24, %o0
67 ENDPROC(memcpy_retl_o2_plus_24)
68 ENTRY(memcpy_retl_o2_plus_31)
69         ba,pt   %xcc, __restore_asi
70          add    %o2, 31, %o0
71 ENDPROC(memcpy_retl_o2_plus_31)
72 ENTRY(memcpy_retl_o2_plus_32)
73         ba,pt   %xcc, __restore_asi
74          add    %o2, 32, %o0
75 ENDPROC(memcpy_retl_o2_plus_32)
76 ENTRY(memcpy_retl_o2_plus_31_32)
77         add     %o2, 31, %o2
78         ba,pt   %xcc, __restore_asi
79          add    %o2, 32, %o0
80 ENDPROC(memcpy_retl_o2_plus_31_32)
81 ENTRY(memcpy_retl_o2_plus_31_24)
82         add     %o2, 31, %o2
83         ba,pt   %xcc, __restore_asi
84          add    %o2, 24, %o0
85 ENDPROC(memcpy_retl_o2_plus_31_24)
86 ENTRY(memcpy_retl_o2_plus_31_16)
87         add     %o2, 31, %o2
88         ba,pt   %xcc, __restore_asi
89          add    %o2, 16, %o0
90 ENDPROC(memcpy_retl_o2_plus_31_16)
91 ENTRY(memcpy_retl_o2_plus_31_8)
92         add     %o2, 31, %o2
93         ba,pt   %xcc, __restore_asi
94          add    %o2, 8, %o0
95 ENDPROC(memcpy_retl_o2_plus_31_8)
96 ENTRY(memcpy_retl_o2_plus_63)
97         ba,pt   %xcc, __restore_asi
98          add    %o2, 63, %o0
99 ENDPROC(memcpy_retl_o2_plus_63)
100 ENTRY(memcpy_retl_o2_plus_63_64)
101          add    %o2, 63, %o2
102         ba,pt   %xcc, __restore_asi
103          add    %o2, 64, %o0
104 ENDPROC(memcpy_retl_o2_plus_63_64)
105 ENTRY(memcpy_retl_o2_plus_63_56)
106          add    %o2, 63, %o2
107         ba,pt   %xcc, __restore_asi
108          add    %o2, 56, %o0
109 ENDPROC(memcpy_retl_o2_plus_63_56)
110 ENTRY(memcpy_retl_o2_plus_63_48)
111          add    %o2, 63, %o2
112         ba,pt   %xcc, __restore_asi
113          add    %o2, 48, %o0
114 ENDPROC(memcpy_retl_o2_plus_63_48)
115 ENTRY(memcpy_retl_o2_plus_63_40)
116          add    %o2, 63, %o2
117         ba,pt   %xcc, __restore_asi
118          add    %o2, 40, %o0
119 ENDPROC(memcpy_retl_o2_plus_63_40)
120 ENTRY(memcpy_retl_o2_plus_63_32)
121          add    %o2, 63, %o2
122         ba,pt   %xcc, __restore_asi
123          add    %o2, 32, %o0
124 ENDPROC(memcpy_retl_o2_plus_63_32)
125 ENTRY(memcpy_retl_o2_plus_63_24)
126          add    %o2, 63, %o2
127         ba,pt   %xcc, __restore_asi
128          add    %o2, 24, %o0
129 ENDPROC(memcpy_retl_o2_plus_63_24)
130 ENTRY(memcpy_retl_o2_plus_63_16)
131          add    %o2, 63, %o2
132         ba,pt   %xcc, __restore_asi
133          add    %o2, 16, %o0
134 ENDPROC(memcpy_retl_o2_plus_63_16)
135 ENTRY(memcpy_retl_o2_plus_63_8)
136          add    %o2, 63, %o2
137         ba,pt   %xcc, __restore_asi
138          add    %o2, 8, %o0
139 ENDPROC(memcpy_retl_o2_plus_63_8)
140 ENTRY(memcpy_retl_o2_plus_o5)
141         ba,pt   %xcc, __restore_asi
142          add    %o2, %o5, %o0
143 ENDPROC(memcpy_retl_o2_plus_o5)
144 ENTRY(memcpy_retl_o2_plus_o5_plus_1)
145         add     %o5, 1, %o5
146         ba,pt   %xcc, __restore_asi
147          add    %o2, %o5, %o0
148 ENDPROC(memcpy_retl_o2_plus_o5_plus_1)
149 ENTRY(memcpy_retl_o2_plus_o5_plus_4)
150         add     %o5, 4, %o5
151         ba,pt   %xcc, __restore_asi
152          add    %o2, %o5, %o0
153 ENDPROC(memcpy_retl_o2_plus_o5_plus_4)
154 ENTRY(memcpy_retl_o2_plus_o5_plus_8)
155         add     %o5, 8, %o5
156         ba,pt   %xcc, __restore_asi
157          add    %o2, %o5, %o0
158 ENDPROC(memcpy_retl_o2_plus_o5_plus_8)
159 ENTRY(memcpy_retl_o2_plus_o5_plus_16)
160         add     %o5, 16, %o5
161         ba,pt   %xcc, __restore_asi
162          add    %o2, %o5, %o0
163 ENDPROC(memcpy_retl_o2_plus_o5_plus_16)
164 ENTRY(memcpy_retl_o2_plus_o5_plus_24)
165         add     %o5, 24, %o5
166         ba,pt   %xcc, __restore_asi
167          add    %o2, %o5, %o0
168 ENDPROC(memcpy_retl_o2_plus_o5_plus_24)
169 ENTRY(memcpy_retl_o2_plus_o5_plus_32)
170         add     %o5, 32, %o5
171         ba,pt   %xcc, __restore_asi
172          add    %o2, %o5, %o0
173 ENDPROC(memcpy_retl_o2_plus_o5_plus_32)
174 ENTRY(memcpy_retl_o2_plus_o5_64)
175         add     %o5, 32, %o5
176         ba,pt   %xcc, __restore_asi
177          add    %o2, %o5, %o0
178 ENDPROC(memcpy_retl_o2_plus_o5_64)
179 ENTRY(memcpy_retl_o2_plus_g1)
180         ba,pt   %xcc, __restore_asi
181          add    %o2, %g1, %o0
182 ENDPROC(memcpy_retl_o2_plus_g1)
183 ENTRY(memcpy_retl_o2_plus_g1_plus_1)
184         add     %g1, 1, %g1
185         ba,pt   %xcc, __restore_asi
186          add    %o2, %g1, %o0
187 ENDPROC(memcpy_retl_o2_plus_g1_plus_1)
188 ENTRY(memcpy_retl_o2_plus_g1_plus_8)
189         add     %g1, 8, %g1
190         ba,pt   %xcc, __restore_asi
191          add    %o2, %g1, %o0
192 ENDPROC(memcpy_retl_o2_plus_g1_plus_8)
193 ENTRY(memcpy_retl_o2_plus_o4)
194         ba,pt   %xcc, __restore_asi
195          add    %o2, %o4, %o0
196 ENDPROC(memcpy_retl_o2_plus_o4)
197 ENTRY(memcpy_retl_o2_plus_o4_plus_8)
198         add     %o4, 8, %o4
199         ba,pt   %xcc, __restore_asi
200          add    %o2, %o4, %o0
201 ENDPROC(memcpy_retl_o2_plus_o4_plus_8)
202 ENTRY(memcpy_retl_o2_plus_o4_plus_16)
203         add     %o4, 16, %o4
204         ba,pt   %xcc, __restore_asi
205          add    %o2, %o4, %o0
206 ENDPROC(memcpy_retl_o2_plus_o4_plus_16)
207 ENTRY(memcpy_retl_o2_plus_o4_plus_24)
208         add     %o4, 24, %o4
209         ba,pt   %xcc, __restore_asi
210          add    %o2, %o4, %o0
211 ENDPROC(memcpy_retl_o2_plus_o4_plus_24)
212 ENTRY(memcpy_retl_o2_plus_o4_plus_32)
213         add     %o4, 32, %o4
214         ba,pt   %xcc, __restore_asi
215          add    %o2, %o4, %o0
216 ENDPROC(memcpy_retl_o2_plus_o4_plus_32)
217 ENTRY(memcpy_retl_o2_plus_o4_plus_40)
218         add     %o4, 40, %o4
219         ba,pt   %xcc, __restore_asi
220          add    %o2, %o4, %o0
221 ENDPROC(memcpy_retl_o2_plus_o4_plus_40)
222 ENTRY(memcpy_retl_o2_plus_o4_plus_48)
223         add     %o4, 48, %o4
224         ba,pt   %xcc, __restore_asi
225          add    %o2, %o4, %o0
226 ENDPROC(memcpy_retl_o2_plus_o4_plus_48)
227 ENTRY(memcpy_retl_o2_plus_o4_plus_56)
228         add     %o4, 56, %o4
229         ba,pt   %xcc, __restore_asi
230          add    %o2, %o4, %o0
231 ENDPROC(memcpy_retl_o2_plus_o4_plus_56)
232 ENTRY(memcpy_retl_o2_plus_o4_plus_64)
233         add     %o4, 64, %o4
234         ba,pt   %xcc, __restore_asi
235          add    %o2, %o4, %o0
236 ENDPROC(memcpy_retl_o2_plus_o4_plus_64)
237 ENTRY(memcpy_retl_o2_plus_o5_plus_64)
238         add     %o5, 64, %o5
239         ba,pt   %xcc, __restore_asi
240          add    %o2, %o5, %o0
241 ENDPROC(memcpy_retl_o2_plus_o5_plus_64)
242 ENTRY(memcpy_retl_o2_plus_o3_fp)
243         ba,pt   %xcc, __restore_asi_fp
244          add    %o2, %o3, %o0
245 ENDPROC(memcpy_retl_o2_plus_o3_fp)
246 ENTRY(memcpy_retl_o2_plus_o3_plus_1_fp)
247         add     %o3, 1, %o3
248         ba,pt   %xcc, __restore_asi_fp
249          add    %o2, %o3, %o0
250 ENDPROC(memcpy_retl_o2_plus_o3_plus_1_fp)
251 ENTRY(memcpy_retl_o2_plus_o3_plus_4_fp)
252         add     %o3, 4, %o3
253         ba,pt   %xcc, __restore_asi_fp
254          add    %o2, %o3, %o0
255 ENDPROC(memcpy_retl_o2_plus_o3_plus_4_fp)
256 ENTRY(memcpy_retl_o2_plus_o4_fp)
257         ba,pt   %xcc, __restore_asi_fp
258          add    %o2, %o4, %o0
259 ENDPROC(memcpy_retl_o2_plus_o4_fp)
260 ENTRY(memcpy_retl_o2_plus_o4_plus_8_fp)
261         add     %o4, 8, %o4
262         ba,pt   %xcc, __restore_asi_fp
263          add    %o2, %o4, %o0
264 ENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp)
265 ENTRY(memcpy_retl_o2_plus_o4_plus_16_fp)
266         add     %o4, 16, %o4
267         ba,pt   %xcc, __restore_asi_fp
268          add    %o2, %o4, %o0
269 ENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp)
270 ENTRY(memcpy_retl_o2_plus_o4_plus_24_fp)
271         add     %o4, 24, %o4
272         ba,pt   %xcc, __restore_asi_fp
273          add    %o2, %o4, %o0
274 ENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp)
275 ENTRY(memcpy_retl_o2_plus_o4_plus_32_fp)
276         add     %o4, 32, %o4
277         ba,pt   %xcc, __restore_asi_fp
278          add    %o2, %o4, %o0
279 ENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp)
280 ENTRY(memcpy_retl_o2_plus_o4_plus_40_fp)
281         add     %o4, 40, %o4
282         ba,pt   %xcc, __restore_asi_fp
283          add    %o2, %o4, %o0
284 ENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp)
285 ENTRY(memcpy_retl_o2_plus_o4_plus_48_fp)
286         add     %o4, 48, %o4
287         ba,pt   %xcc, __restore_asi_fp
288          add    %o2, %o4, %o0
289 ENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp)
290 ENTRY(memcpy_retl_o2_plus_o4_plus_56_fp)
291         add     %o4, 56, %o4
292         ba,pt   %xcc, __restore_asi_fp
293          add    %o2, %o4, %o0
294 ENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp)
295 ENTRY(memcpy_retl_o2_plus_o4_plus_64_fp)
296         add     %o4, 64, %o4
297         ba,pt   %xcc, __restore_asi_fp
298          add    %o2, %o4, %o0
299 ENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp)
300 ENTRY(memcpy_retl_o2_plus_o5_fp)
301         ba,pt   %xcc, __restore_asi_fp
302          add    %o2, %o5, %o0
303 ENDPROC(memcpy_retl_o2_plus_o5_fp)
304 ENTRY(memcpy_retl_o2_plus_o5_plus_64_fp)
305         add     %o5, 64, %o5
306         ba,pt   %xcc, __restore_asi_fp
307          add    %o2, %o5, %o0
308 ENDPROC(memcpy_retl_o2_plus_o5_plus_64_fp)
309 ENTRY(memcpy_retl_o2_plus_o5_plus_56_fp)
310         add     %o5, 56, %o5
311         ba,pt   %xcc, __restore_asi_fp
312          add    %o2, %o5, %o0
313 ENDPROC(memcpy_retl_o2_plus_o5_plus_56_fp)
314 ENTRY(memcpy_retl_o2_plus_o5_plus_48_fp)
315         add     %o5, 48, %o5
316         ba,pt   %xcc, __restore_asi_fp
317          add    %o2, %o5, %o0
318 ENDPROC(memcpy_retl_o2_plus_o5_plus_48_fp)
319 ENTRY(memcpy_retl_o2_plus_o5_plus_40_fp)
320         add     %o5, 40, %o5
321         ba,pt   %xcc, __restore_asi_fp
322          add    %o2, %o5, %o0
323 ENDPROC(memcpy_retl_o2_plus_o5_plus_40_fp)
324 ENTRY(memcpy_retl_o2_plus_o5_plus_32_fp)
325         add     %o5, 32, %o5
326         ba,pt   %xcc, __restore_asi_fp
327          add    %o2, %o5, %o0
328 ENDPROC(memcpy_retl_o2_plus_o5_plus_32_fp)
329 ENTRY(memcpy_retl_o2_plus_o5_plus_24_fp)
330         add     %o5, 24, %o5
331         ba,pt   %xcc, __restore_asi_fp
332          add    %o2, %o5, %o0
333 ENDPROC(memcpy_retl_o2_plus_o5_plus_24_fp)
334 ENTRY(memcpy_retl_o2_plus_o5_plus_16_fp)
335         add     %o5, 16, %o5
336         ba,pt   %xcc, __restore_asi_fp
337          add    %o2, %o5, %o0
338 ENDPROC(memcpy_retl_o2_plus_o5_plus_16_fp)
339 ENTRY(memcpy_retl_o2_plus_o5_plus_8_fp)
340         add     %o5, 8, %o5
341         ba,pt   %xcc, __restore_asi_fp
342          add    %o2, %o5, %o0
343 ENDPROC(memcpy_retl_o2_plus_o5_plus_8_fp)
344
345 #endif