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

source code of linux/arch/sparc/lib/Memcpy_utils.S