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 |
346 | |