blob: 64fbac28b3db18864b0d067acaee0d7898feec7a [file] [log] [blame]
Babu Mogerde5c0732017-08-07 17:52:49 -06001#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
Babu Moger1ab32692017-08-07 17:52:50 -060019ENTRY(memcpy_retl_o2)
Babu Mogerde5c0732017-08-07 17:52:49 -060020 ba,pt %xcc, __restore_asi
21 mov %o2, %o0
Babu Moger1ab32692017-08-07 17:52:50 -060022ENDPROC(memcpy_retl_o2)
23ENTRY(memcpy_retl_o2_plus_1)
Babu Mogerde5c0732017-08-07 17:52:49 -060024 ba,pt %xcc, __restore_asi
25 add %o2, 1, %o0
Babu Moger1ab32692017-08-07 17:52:50 -060026ENDPROC(memcpy_retl_o2_plus_1)
Babu Moger34060b82017-08-07 17:52:52 -060027ENTRY(memcpy_retl_o2_plus_3)
28 ba,pt %xcc, __restore_asi
29 add %o2, 3, %o0
30ENDPROC(memcpy_retl_o2_plus_3)
Babu Moger1ab32692017-08-07 17:52:50 -060031ENTRY(memcpy_retl_o2_plus_4)
Babu Mogerde5c0732017-08-07 17:52:49 -060032 ba,pt %xcc, __restore_asi
33 add %o2, 4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -060034ENDPROC(memcpy_retl_o2_plus_4)
Babu Moger34060b82017-08-07 17:52:52 -060035ENTRY(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)
Babu Moger1ab32692017-08-07 17:52:50 -0600140ENTRY(memcpy_retl_o2_plus_o5)
Babu Mogerde5c0732017-08-07 17:52:49 -0600141 ba,pt %xcc, __restore_asi
142 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600143ENDPROC(memcpy_retl_o2_plus_o5)
Babu Moger34060b82017-08-07 17:52:52 -0600144ENTRY(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)
Babu Moger1ab32692017-08-07 17:52:50 -0600149ENTRY(memcpy_retl_o2_plus_o5_plus_4)
Babu Mogerde5c0732017-08-07 17:52:49 -0600150 add %o5, 4, %o5
151 ba,pt %xcc, __restore_asi
152 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600153ENDPROC(memcpy_retl_o2_plus_o5_plus_4)
154ENTRY(memcpy_retl_o2_plus_o5_plus_8)
Babu Mogerde5c0732017-08-07 17:52:49 -0600155 add %o5, 8, %o5
156 ba,pt %xcc, __restore_asi
157 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600158ENDPROC(memcpy_retl_o2_plus_o5_plus_8)
159ENTRY(memcpy_retl_o2_plus_o5_plus_16)
Babu Mogerde5c0732017-08-07 17:52:49 -0600160 add %o5, 16, %o5
161 ba,pt %xcc, __restore_asi
162 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600163ENDPROC(memcpy_retl_o2_plus_o5_plus_16)
164ENTRY(memcpy_retl_o2_plus_o5_plus_24)
Babu Mogerde5c0732017-08-07 17:52:49 -0600165 add %o5, 24, %o5
166 ba,pt %xcc, __restore_asi
167 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600168ENDPROC(memcpy_retl_o2_plus_o5_plus_24)
169ENTRY(memcpy_retl_o2_plus_o5_plus_32)
Babu Mogerde5c0732017-08-07 17:52:49 -0600170 add %o5, 32, %o5
171 ba,pt %xcc, __restore_asi
172 add %o2, %o5, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600173ENDPROC(memcpy_retl_o2_plus_o5_plus_32)
Babu Moger34060b82017-08-07 17:52:52 -0600174ENTRY(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)
Babu Moger1ab32692017-08-07 17:52:50 -0600179ENTRY(memcpy_retl_o2_plus_g1)
Babu Mogerde5c0732017-08-07 17:52:49 -0600180 ba,pt %xcc, __restore_asi
181 add %o2, %g1, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600182ENDPROC(memcpy_retl_o2_plus_g1)
183ENTRY(memcpy_retl_o2_plus_g1_plus_1)
Babu Mogerde5c0732017-08-07 17:52:49 -0600184 add %g1, 1, %g1
185 ba,pt %xcc, __restore_asi
186 add %o2, %g1, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600187ENDPROC(memcpy_retl_o2_plus_g1_plus_1)
188ENTRY(memcpy_retl_o2_plus_g1_plus_8)
Babu Mogerde5c0732017-08-07 17:52:49 -0600189 add %g1, 8, %g1
190 ba,pt %xcc, __restore_asi
191 add %o2, %g1, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600192ENDPROC(memcpy_retl_o2_plus_g1_plus_8)
193ENTRY(memcpy_retl_o2_plus_o4)
Babu Mogerde5c0732017-08-07 17:52:49 -0600194 ba,pt %xcc, __restore_asi
195 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600196ENDPROC(memcpy_retl_o2_plus_o4)
197ENTRY(memcpy_retl_o2_plus_o4_plus_8)
Babu Mogerde5c0732017-08-07 17:52:49 -0600198 add %o4, 8, %o4
199 ba,pt %xcc, __restore_asi
200 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600201ENDPROC(memcpy_retl_o2_plus_o4_plus_8)
202ENTRY(memcpy_retl_o2_plus_o4_plus_16)
Babu Mogerde5c0732017-08-07 17:52:49 -0600203 add %o4, 16, %o4
204 ba,pt %xcc, __restore_asi
205 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600206ENDPROC(memcpy_retl_o2_plus_o4_plus_16)
207ENTRY(memcpy_retl_o2_plus_o4_plus_24)
Babu Mogerde5c0732017-08-07 17:52:49 -0600208 add %o4, 24, %o4
209 ba,pt %xcc, __restore_asi
210 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600211ENDPROC(memcpy_retl_o2_plus_o4_plus_24)
212ENTRY(memcpy_retl_o2_plus_o4_plus_32)
Babu Mogerde5c0732017-08-07 17:52:49 -0600213 add %o4, 32, %o4
214 ba,pt %xcc, __restore_asi
215 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600216ENDPROC(memcpy_retl_o2_plus_o4_plus_32)
217ENTRY(memcpy_retl_o2_plus_o4_plus_40)
Babu Mogerde5c0732017-08-07 17:52:49 -0600218 add %o4, 40, %o4
219 ba,pt %xcc, __restore_asi
220 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600221ENDPROC(memcpy_retl_o2_plus_o4_plus_40)
222ENTRY(memcpy_retl_o2_plus_o4_plus_48)
Babu Mogerde5c0732017-08-07 17:52:49 -0600223 add %o4, 48, %o4
224 ba,pt %xcc, __restore_asi
225 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600226ENDPROC(memcpy_retl_o2_plus_o4_plus_48)
227ENTRY(memcpy_retl_o2_plus_o4_plus_56)
Babu Mogerde5c0732017-08-07 17:52:49 -0600228 add %o4, 56, %o4
229 ba,pt %xcc, __restore_asi
230 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600231ENDPROC(memcpy_retl_o2_plus_o4_plus_56)
232ENTRY(memcpy_retl_o2_plus_o4_plus_64)
Babu Mogerde5c0732017-08-07 17:52:49 -0600233 add %o4, 64, %o4
234 ba,pt %xcc, __restore_asi
235 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600236ENDPROC(memcpy_retl_o2_plus_o4_plus_64)
Babu Moger34060b82017-08-07 17:52:52 -0600237ENTRY(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)
Babu Moger1ab32692017-08-07 17:52:50 -0600256ENTRY(memcpy_retl_o2_plus_o4_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600257 ba,pt %xcc, __restore_asi_fp
258 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600259ENDPROC(memcpy_retl_o2_plus_o4_fp)
260ENTRY(memcpy_retl_o2_plus_o4_plus_8_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600261 add %o4, 8, %o4
262 ba,pt %xcc, __restore_asi_fp
263 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600264ENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp)
265ENTRY(memcpy_retl_o2_plus_o4_plus_16_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600266 add %o4, 16, %o4
267 ba,pt %xcc, __restore_asi_fp
268 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600269ENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp)
270ENTRY(memcpy_retl_o2_plus_o4_plus_24_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600271 add %o4, 24, %o4
272 ba,pt %xcc, __restore_asi_fp
273 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600274ENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp)
275ENTRY(memcpy_retl_o2_plus_o4_plus_32_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600276 add %o4, 32, %o4
277 ba,pt %xcc, __restore_asi_fp
278 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600279ENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp)
280ENTRY(memcpy_retl_o2_plus_o4_plus_40_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600281 add %o4, 40, %o4
282 ba,pt %xcc, __restore_asi_fp
283 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600284ENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp)
285ENTRY(memcpy_retl_o2_plus_o4_plus_48_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600286 add %o4, 48, %o4
287 ba,pt %xcc, __restore_asi_fp
288 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600289ENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp)
290ENTRY(memcpy_retl_o2_plus_o4_plus_56_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600291 add %o4, 56, %o4
292 ba,pt %xcc, __restore_asi_fp
293 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600294ENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp)
295ENTRY(memcpy_retl_o2_plus_o4_plus_64_fp)
Babu Mogerde5c0732017-08-07 17:52:49 -0600296 add %o4, 64, %o4
297 ba,pt %xcc, __restore_asi_fp
298 add %o2, %o4, %o0
Babu Moger1ab32692017-08-07 17:52:50 -0600299ENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp)
Babu Moger34060b82017-08-07 17:52:52 -0600300ENTRY(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)
Babu Mogerde5c0732017-08-07 17:52:49 -0600344
345#endif