Commit | Line | Data |
---|---|---|
de5c073e BM |
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 | ||
1ab32693 | 19 | ENTRY(memcpy_retl_o2) |
de5c073e BM |
20 | ba,pt %xcc, __restore_asi |
21 | mov %o2, %o0 | |
1ab32693 BM |
22 | ENDPROC(memcpy_retl_o2) |
23 | ENTRY(memcpy_retl_o2_plus_1) | |
de5c073e BM |
24 | ba,pt %xcc, __restore_asi |
25 | add %o2, 1, %o0 | |
1ab32693 | 26 | ENDPROC(memcpy_retl_o2_plus_1) |
34060b8f BM |
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) | |
1ab32693 | 31 | ENTRY(memcpy_retl_o2_plus_4) |
de5c073e BM |
32 | ba,pt %xcc, __restore_asi |
33 | add %o2, 4, %o0 | |
1ab32693 | 34 | ENDPROC(memcpy_retl_o2_plus_4) |
34060b8f BM |
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) | |
1ab32693 | 140 | ENTRY(memcpy_retl_o2_plus_o5) |
de5c073e BM |
141 | ba,pt %xcc, __restore_asi |
142 | add %o2, %o5, %o0 | |
1ab32693 | 143 | ENDPROC(memcpy_retl_o2_plus_o5) |
34060b8f BM |
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) | |
1ab32693 | 149 | ENTRY(memcpy_retl_o2_plus_o5_plus_4) |
de5c073e BM |
150 | add %o5, 4, %o5 |
151 | ba,pt %xcc, __restore_asi | |
152 | add %o2, %o5, %o0 | |
1ab32693 BM |
153 | ENDPROC(memcpy_retl_o2_plus_o5_plus_4) |
154 | ENTRY(memcpy_retl_o2_plus_o5_plus_8) | |
de5c073e BM |
155 | add %o5, 8, %o5 |
156 | ba,pt %xcc, __restore_asi | |
157 | add %o2, %o5, %o0 | |
1ab32693 BM |
158 | ENDPROC(memcpy_retl_o2_plus_o5_plus_8) |
159 | ENTRY(memcpy_retl_o2_plus_o5_plus_16) | |
de5c073e BM |
160 | add %o5, 16, %o5 |
161 | ba,pt %xcc, __restore_asi | |
162 | add %o2, %o5, %o0 | |
1ab32693 BM |
163 | ENDPROC(memcpy_retl_o2_plus_o5_plus_16) |
164 | ENTRY(memcpy_retl_o2_plus_o5_plus_24) | |
de5c073e BM |
165 | add %o5, 24, %o5 |
166 | ba,pt %xcc, __restore_asi | |
167 | add %o2, %o5, %o0 | |
1ab32693 BM |
168 | ENDPROC(memcpy_retl_o2_plus_o5_plus_24) |
169 | ENTRY(memcpy_retl_o2_plus_o5_plus_32) | |
de5c073e BM |
170 | add %o5, 32, %o5 |
171 | ba,pt %xcc, __restore_asi | |
172 | add %o2, %o5, %o0 | |
1ab32693 | 173 | ENDPROC(memcpy_retl_o2_plus_o5_plus_32) |
34060b8f BM |
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) | |
1ab32693 | 179 | ENTRY(memcpy_retl_o2_plus_g1) |
de5c073e BM |
180 | ba,pt %xcc, __restore_asi |
181 | add %o2, %g1, %o0 | |
1ab32693 BM |
182 | ENDPROC(memcpy_retl_o2_plus_g1) |
183 | ENTRY(memcpy_retl_o2_plus_g1_plus_1) | |
de5c073e BM |
184 | add %g1, 1, %g1 |
185 | ba,pt %xcc, __restore_asi | |
186 | add %o2, %g1, %o0 | |
1ab32693 BM |
187 | ENDPROC(memcpy_retl_o2_plus_g1_plus_1) |
188 | ENTRY(memcpy_retl_o2_plus_g1_plus_8) | |
de5c073e BM |
189 | add %g1, 8, %g1 |
190 | ba,pt %xcc, __restore_asi | |
191 | add %o2, %g1, %o0 | |
1ab32693 BM |
192 | ENDPROC(memcpy_retl_o2_plus_g1_plus_8) |
193 | ENTRY(memcpy_retl_o2_plus_o4) | |
de5c073e BM |
194 | ba,pt %xcc, __restore_asi |
195 | add %o2, %o4, %o0 | |
1ab32693 BM |
196 | ENDPROC(memcpy_retl_o2_plus_o4) |
197 | ENTRY(memcpy_retl_o2_plus_o4_plus_8) | |
de5c073e BM |
198 | add %o4, 8, %o4 |
199 | ba,pt %xcc, __restore_asi | |
200 | add %o2, %o4, %o0 | |
1ab32693 BM |
201 | ENDPROC(memcpy_retl_o2_plus_o4_plus_8) |
202 | ENTRY(memcpy_retl_o2_plus_o4_plus_16) | |
de5c073e BM |
203 | add %o4, 16, %o4 |
204 | ba,pt %xcc, __restore_asi | |
205 | add %o2, %o4, %o0 | |
1ab32693 BM |
206 | ENDPROC(memcpy_retl_o2_plus_o4_plus_16) |
207 | ENTRY(memcpy_retl_o2_plus_o4_plus_24) | |
de5c073e BM |
208 | add %o4, 24, %o4 |
209 | ba,pt %xcc, __restore_asi | |
210 | add %o2, %o4, %o0 | |
1ab32693 BM |
211 | ENDPROC(memcpy_retl_o2_plus_o4_plus_24) |
212 | ENTRY(memcpy_retl_o2_plus_o4_plus_32) | |
de5c073e BM |
213 | add %o4, 32, %o4 |
214 | ba,pt %xcc, __restore_asi | |
215 | add %o2, %o4, %o0 | |
1ab32693 BM |
216 | ENDPROC(memcpy_retl_o2_plus_o4_plus_32) |
217 | ENTRY(memcpy_retl_o2_plus_o4_plus_40) | |
de5c073e BM |
218 | add %o4, 40, %o4 |
219 | ba,pt %xcc, __restore_asi | |
220 | add %o2, %o4, %o0 | |
1ab32693 BM |
221 | ENDPROC(memcpy_retl_o2_plus_o4_plus_40) |
222 | ENTRY(memcpy_retl_o2_plus_o4_plus_48) | |
de5c073e BM |
223 | add %o4, 48, %o4 |
224 | ba,pt %xcc, __restore_asi | |
225 | add %o2, %o4, %o0 | |
1ab32693 BM |
226 | ENDPROC(memcpy_retl_o2_plus_o4_plus_48) |
227 | ENTRY(memcpy_retl_o2_plus_o4_plus_56) | |
de5c073e BM |
228 | add %o4, 56, %o4 |
229 | ba,pt %xcc, __restore_asi | |
230 | add %o2, %o4, %o0 | |
1ab32693 BM |
231 | ENDPROC(memcpy_retl_o2_plus_o4_plus_56) |
232 | ENTRY(memcpy_retl_o2_plus_o4_plus_64) | |
de5c073e BM |
233 | add %o4, 64, %o4 |
234 | ba,pt %xcc, __restore_asi | |
235 | add %o2, %o4, %o0 | |
1ab32693 | 236 | ENDPROC(memcpy_retl_o2_plus_o4_plus_64) |
34060b8f BM |
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) | |
1ab32693 | 256 | ENTRY(memcpy_retl_o2_plus_o4_fp) |
de5c073e BM |
257 | ba,pt %xcc, __restore_asi_fp |
258 | add %o2, %o4, %o0 | |
1ab32693 BM |
259 | ENDPROC(memcpy_retl_o2_plus_o4_fp) |
260 | ENTRY(memcpy_retl_o2_plus_o4_plus_8_fp) | |
de5c073e BM |
261 | add %o4, 8, %o4 |
262 | ba,pt %xcc, __restore_asi_fp | |
263 | add %o2, %o4, %o0 | |
1ab32693 BM |
264 | ENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp) |
265 | ENTRY(memcpy_retl_o2_plus_o4_plus_16_fp) | |
de5c073e BM |
266 | add %o4, 16, %o4 |
267 | ba,pt %xcc, __restore_asi_fp | |
268 | add %o2, %o4, %o0 | |
1ab32693 BM |
269 | ENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp) |
270 | ENTRY(memcpy_retl_o2_plus_o4_plus_24_fp) | |
de5c073e BM |
271 | add %o4, 24, %o4 |
272 | ba,pt %xcc, __restore_asi_fp | |
273 | add %o2, %o4, %o0 | |
1ab32693 BM |
274 | ENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp) |
275 | ENTRY(memcpy_retl_o2_plus_o4_plus_32_fp) | |
de5c073e BM |
276 | add %o4, 32, %o4 |
277 | ba,pt %xcc, __restore_asi_fp | |
278 | add %o2, %o4, %o0 | |
1ab32693 BM |
279 | ENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp) |
280 | ENTRY(memcpy_retl_o2_plus_o4_plus_40_fp) | |
de5c073e BM |
281 | add %o4, 40, %o4 |
282 | ba,pt %xcc, __restore_asi_fp | |
283 | add %o2, %o4, %o0 | |
1ab32693 BM |
284 | ENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp) |
285 | ENTRY(memcpy_retl_o2_plus_o4_plus_48_fp) | |
de5c073e BM |
286 | add %o4, 48, %o4 |
287 | ba,pt %xcc, __restore_asi_fp | |
288 | add %o2, %o4, %o0 | |
1ab32693 BM |
289 | ENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp) |
290 | ENTRY(memcpy_retl_o2_plus_o4_plus_56_fp) | |
de5c073e BM |
291 | add %o4, 56, %o4 |
292 | ba,pt %xcc, __restore_asi_fp | |
293 | add %o2, %o4, %o0 | |
1ab32693 BM |
294 | ENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp) |
295 | ENTRY(memcpy_retl_o2_plus_o4_plus_64_fp) | |
de5c073e BM |
296 | add %o4, 64, %o4 |
297 | ba,pt %xcc, __restore_asi_fp | |
298 | add %o2, %o4, %o0 | |
1ab32693 | 299 | ENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp) |
34060b8f BM |
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) | |
de5c073e BM |
344 | |
345 | #endif |