Commit 83f89ca755c9f783b8229d968c4e9d2c660ca427
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc64: Fix masking and shifting in VIS fpcmp emulation. sparc32: Correct the return value of memcpy. sparc32: Remove uses of %g7 in memcpy implementation. sparc32: Remove non-kernel code from memcpy implementation.
Showing 2 changed files Side-by-side Diff
arch/sparc/kernel/visemul.c
... | ... | @@ -713,17 +713,17 @@ |
713 | 713 | s16 b = (rs2 >> (i * 16)) & 0xffff; |
714 | 714 | |
715 | 715 | if (a > b) |
716 | - rd_val |= 1 << i; | |
716 | + rd_val |= 8 >> i; | |
717 | 717 | } |
718 | 718 | break; |
719 | 719 | |
720 | 720 | case FCMPGT32_OPF: |
721 | 721 | for (i = 0; i < 2; i++) { |
722 | - s32 a = (rs1 >> (i * 32)) & 0xffff; | |
723 | - s32 b = (rs2 >> (i * 32)) & 0xffff; | |
722 | + s32 a = (rs1 >> (i * 32)) & 0xffffffff; | |
723 | + s32 b = (rs2 >> (i * 32)) & 0xffffffff; | |
724 | 724 | |
725 | 725 | if (a > b) |
726 | - rd_val |= 1 << i; | |
726 | + rd_val |= 2 >> i; | |
727 | 727 | } |
728 | 728 | break; |
729 | 729 | |
730 | 730 | |
731 | 731 | |
... | ... | @@ -733,17 +733,17 @@ |
733 | 733 | s16 b = (rs2 >> (i * 16)) & 0xffff; |
734 | 734 | |
735 | 735 | if (a <= b) |
736 | - rd_val |= 1 << i; | |
736 | + rd_val |= 8 >> i; | |
737 | 737 | } |
738 | 738 | break; |
739 | 739 | |
740 | 740 | case FCMPLE32_OPF: |
741 | 741 | for (i = 0; i < 2; i++) { |
742 | - s32 a = (rs1 >> (i * 32)) & 0xffff; | |
743 | - s32 b = (rs2 >> (i * 32)) & 0xffff; | |
742 | + s32 a = (rs1 >> (i * 32)) & 0xffffffff; | |
743 | + s32 b = (rs2 >> (i * 32)) & 0xffffffff; | |
744 | 744 | |
745 | 745 | if (a <= b) |
746 | - rd_val |= 1 << i; | |
746 | + rd_val |= 2 >> i; | |
747 | 747 | } |
748 | 748 | break; |
749 | 749 | |
750 | 750 | |
751 | 751 | |
... | ... | @@ -753,17 +753,17 @@ |
753 | 753 | s16 b = (rs2 >> (i * 16)) & 0xffff; |
754 | 754 | |
755 | 755 | if (a != b) |
756 | - rd_val |= 1 << i; | |
756 | + rd_val |= 8 >> i; | |
757 | 757 | } |
758 | 758 | break; |
759 | 759 | |
760 | 760 | case FCMPNE32_OPF: |
761 | 761 | for (i = 0; i < 2; i++) { |
762 | - s32 a = (rs1 >> (i * 32)) & 0xffff; | |
763 | - s32 b = (rs2 >> (i * 32)) & 0xffff; | |
762 | + s32 a = (rs1 >> (i * 32)) & 0xffffffff; | |
763 | + s32 b = (rs2 >> (i * 32)) & 0xffffffff; | |
764 | 764 | |
765 | 765 | if (a != b) |
766 | - rd_val |= 1 << i; | |
766 | + rd_val |= 2 >> i; | |
767 | 767 | } |
768 | 768 | break; |
769 | 769 | |
770 | 770 | |
771 | 771 | |
... | ... | @@ -773,17 +773,17 @@ |
773 | 773 | s16 b = (rs2 >> (i * 16)) & 0xffff; |
774 | 774 | |
775 | 775 | if (a == b) |
776 | - rd_val |= 1 << i; | |
776 | + rd_val |= 8 >> i; | |
777 | 777 | } |
778 | 778 | break; |
779 | 779 | |
780 | 780 | case FCMPEQ32_OPF: |
781 | 781 | for (i = 0; i < 2; i++) { |
782 | - s32 a = (rs1 >> (i * 32)) & 0xffff; | |
783 | - s32 b = (rs2 >> (i * 32)) & 0xffff; | |
782 | + s32 a = (rs1 >> (i * 32)) & 0xffffffff; | |
783 | + s32 b = (rs2 >> (i * 32)) & 0xffffffff; | |
784 | 784 | |
785 | 785 | if (a == b) |
786 | - rd_val |= 1 << i; | |
786 | + rd_val |= 2 >> i; | |
787 | 787 | } |
788 | 788 | break; |
789 | 789 | } |
arch/sparc/lib/memcpy.S
Changes suppressed. Click to show
... | ... | @@ -7,40 +7,12 @@ |
7 | 7 | * Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
8 | 8 | */ |
9 | 9 | |
10 | -#ifdef __KERNEL__ | |
11 | - | |
12 | -#define FUNC(x) \ | |
10 | +#define FUNC(x) \ | |
13 | 11 | .globl x; \ |
14 | 12 | .type x,@function; \ |
15 | - .align 4; \ | |
13 | + .align 4; \ | |
16 | 14 | x: |
17 | 15 | |
18 | -#undef FASTER_REVERSE | |
19 | -#undef FASTER_NONALIGNED | |
20 | -#define FASTER_ALIGNED | |
21 | - | |
22 | -/* In kernel these functions don't return a value. | |
23 | - * One should use macros in asm/string.h for that purpose. | |
24 | - * We return 0, so that bugs are more apparent. | |
25 | - */ | |
26 | -#define SETUP_RETL | |
27 | -#define RETL_INSN clr %o0 | |
28 | - | |
29 | -#else | |
30 | - | |
31 | -/* libc */ | |
32 | - | |
33 | -#include "DEFS.h" | |
34 | - | |
35 | -#define FASTER_REVERSE | |
36 | -#define FASTER_NONALIGNED | |
37 | -#define FASTER_ALIGNED | |
38 | - | |
39 | -#define SETUP_RETL mov %o0, %g6 | |
40 | -#define RETL_INSN mov %g6, %o0 | |
41 | - | |
42 | -#endif | |
43 | - | |
44 | 16 | /* Both these macros have to start with exactly the same insn */ |
45 | 17 | #define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \ |
46 | 18 | ldd [%src + (offset) + 0x00], %t0; \ |
... | ... | @@ -164,30 +136,6 @@ |
164 | 136 | .text |
165 | 137 | .align 4 |
166 | 138 | |
167 | -#ifdef FASTER_REVERSE | |
168 | - | |
169 | -70: /* rdword_align */ | |
170 | - | |
171 | - andcc %o1, 1, %g0 | |
172 | - be 4f | |
173 | - andcc %o1, 2, %g0 | |
174 | - | |
175 | - ldub [%o1 - 1], %g2 | |
176 | - sub %o1, 1, %o1 | |
177 | - stb %g2, [%o0 - 1] | |
178 | - sub %o2, 1, %o2 | |
179 | - be 3f | |
180 | - sub %o0, 1, %o0 | |
181 | -4: | |
182 | - lduh [%o1 - 2], %g2 | |
183 | - sub %o1, 2, %o1 | |
184 | - sth %g2, [%o0 - 2] | |
185 | - sub %o2, 2, %o2 | |
186 | - b 3f | |
187 | - sub %o0, 2, %o0 | |
188 | - | |
189 | -#endif /* FASTER_REVERSE */ | |
190 | - | |
191 | 139 | 0: |
192 | 140 | retl |
193 | 141 | nop ! Only bcopy returns here and it retuns void... |
... | ... | @@ -198,7 +146,7 @@ |
198 | 146 | #endif |
199 | 147 | FUNC(memmove) |
200 | 148 | cmp %o0, %o1 |
201 | - SETUP_RETL | |
149 | + mov %o0, %g7 | |
202 | 150 | bleu 9f |
203 | 151 | sub %o0, %o1, %o4 |
204 | 152 | |
... | ... | @@ -207,8 +155,6 @@ |
207 | 155 | bleu 0f |
208 | 156 | andcc %o4, 3, %o5 |
209 | 157 | |
210 | -#ifndef FASTER_REVERSE | |
211 | - | |
212 | 158 | add %o1, %o2, %o1 |
213 | 159 | add %o0, %o2, %o0 |
214 | 160 | sub %o1, 1, %o1 |
215 | 161 | |
... | ... | @@ -224,296 +170,8 @@ |
224 | 170 | sub %o0, 1, %o0 |
225 | 171 | |
226 | 172 | retl |
227 | - RETL_INSN | |
173 | + mov %g7, %o0 | |
228 | 174 | |
229 | -#else /* FASTER_REVERSE */ | |
230 | - | |
231 | - add %o1, %o2, %o1 | |
232 | - add %o0, %o2, %o0 | |
233 | - bne 77f | |
234 | - cmp %o2, 15 | |
235 | - bleu 91f | |
236 | - andcc %o1, 3, %g0 | |
237 | - bne 70b | |
238 | -3: | |
239 | - andcc %o1, 4, %g0 | |
240 | - | |
241 | - be 2f | |
242 | - mov %o2, %g1 | |
243 | - | |
244 | - ld [%o1 - 4], %o4 | |
245 | - sub %g1, 4, %g1 | |
246 | - st %o4, [%o0 - 4] | |
247 | - sub %o1, 4, %o1 | |
248 | - sub %o0, 4, %o0 | |
249 | -2: | |
250 | - andcc %g1, 0xffffff80, %g7 | |
251 | - be 3f | |
252 | - andcc %o0, 4, %g0 | |
253 | - | |
254 | - be 74f + 4 | |
255 | -5: | |
256 | - RMOVE_BIGCHUNK(o1, o0, 0x00, o2, o3, o4, o5, g2, g3, g4, g5) | |
257 | - RMOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) | |
258 | - RMOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) | |
259 | - RMOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) | |
260 | - subcc %g7, 128, %g7 | |
261 | - sub %o1, 128, %o1 | |
262 | - bne 5b | |
263 | - sub %o0, 128, %o0 | |
264 | -3: | |
265 | - andcc %g1, 0x70, %g7 | |
266 | - be 72f | |
267 | - andcc %g1, 8, %g0 | |
268 | - | |
269 | - sethi %hi(72f), %o5 | |
270 | - srl %g7, 1, %o4 | |
271 | - add %g7, %o4, %o4 | |
272 | - sub %o1, %g7, %o1 | |
273 | - sub %o5, %o4, %o5 | |
274 | - jmpl %o5 + %lo(72f), %g0 | |
275 | - sub %o0, %g7, %o0 | |
276 | - | |
277 | -71: /* rmemcpy_table */ | |
278 | - RMOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g4, g5) | |
279 | - RMOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g4, g5) | |
280 | - RMOVE_LASTCHUNK(o1, o0, 0x40, g2, g3, g4, g5) | |
281 | - RMOVE_LASTCHUNK(o1, o0, 0x30, g2, g3, g4, g5) | |
282 | - RMOVE_LASTCHUNK(o1, o0, 0x20, g2, g3, g4, g5) | |
283 | - RMOVE_LASTCHUNK(o1, o0, 0x10, g2, g3, g4, g5) | |
284 | - RMOVE_LASTCHUNK(o1, o0, 0x00, g2, g3, g4, g5) | |
285 | - | |
286 | -72: /* rmemcpy_table_end */ | |
287 | - | |
288 | - be 73f | |
289 | - andcc %g1, 4, %g0 | |
290 | - | |
291 | - ldd [%o1 - 0x08], %g2 | |
292 | - sub %o0, 8, %o0 | |
293 | - sub %o1, 8, %o1 | |
294 | - st %g2, [%o0] | |
295 | - st %g3, [%o0 + 0x04] | |
296 | - | |
297 | -73: /* rmemcpy_last7 */ | |
298 | - | |
299 | - be 1f | |
300 | - andcc %g1, 2, %g0 | |
301 | - | |
302 | - ld [%o1 - 4], %g2 | |
303 | - sub %o1, 4, %o1 | |
304 | - st %g2, [%o0 - 4] | |
305 | - sub %o0, 4, %o0 | |
306 | -1: | |
307 | - be 1f | |
308 | - andcc %g1, 1, %g0 | |
309 | - | |
310 | - lduh [%o1 - 2], %g2 | |
311 | - sub %o1, 2, %o1 | |
312 | - sth %g2, [%o0 - 2] | |
313 | - sub %o0, 2, %o0 | |
314 | -1: | |
315 | - be 1f | |
316 | - nop | |
317 | - | |
318 | - ldub [%o1 - 1], %g2 | |
319 | - stb %g2, [%o0 - 1] | |
320 | -1: | |
321 | - retl | |
322 | - RETL_INSN | |
323 | - | |
324 | -74: /* rldd_std */ | |
325 | - RMOVE_BIGALIGNCHUNK(o1, o0, 0x00, o2, o3, o4, o5, g2, g3, g4, g5) | |
326 | - RMOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) | |
327 | - RMOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) | |
328 | - RMOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) | |
329 | - subcc %g7, 128, %g7 | |
330 | - sub %o1, 128, %o1 | |
331 | - bne 74b | |
332 | - sub %o0, 128, %o0 | |
333 | - | |
334 | - andcc %g1, 0x70, %g7 | |
335 | - be 72b | |
336 | - andcc %g1, 8, %g0 | |
337 | - | |
338 | - sethi %hi(72b), %o5 | |
339 | - srl %g7, 1, %o4 | |
340 | - add %g7, %o4, %o4 | |
341 | - sub %o1, %g7, %o1 | |
342 | - sub %o5, %o4, %o5 | |
343 | - jmpl %o5 + %lo(72b), %g0 | |
344 | - sub %o0, %g7, %o0 | |
345 | - | |
346 | -75: /* rshort_end */ | |
347 | - | |
348 | - and %o2, 0xe, %o3 | |
349 | -2: | |
350 | - sethi %hi(76f), %o5 | |
351 | - sll %o3, 3, %o4 | |
352 | - sub %o0, %o3, %o0 | |
353 | - sub %o5, %o4, %o5 | |
354 | - sub %o1, %o3, %o1 | |
355 | - jmpl %o5 + %lo(76f), %g0 | |
356 | - andcc %o2, 1, %g0 | |
357 | - | |
358 | - RMOVE_SHORTCHUNK(o1, o0, 0x0c, g2, g3) | |
359 | - RMOVE_SHORTCHUNK(o1, o0, 0x0a, g2, g3) | |
360 | - RMOVE_SHORTCHUNK(o1, o0, 0x08, g2, g3) | |
361 | - RMOVE_SHORTCHUNK(o1, o0, 0x06, g2, g3) | |
362 | - RMOVE_SHORTCHUNK(o1, o0, 0x04, g2, g3) | |
363 | - RMOVE_SHORTCHUNK(o1, o0, 0x02, g2, g3) | |
364 | - RMOVE_SHORTCHUNK(o1, o0, 0x00, g2, g3) | |
365 | - | |
366 | -76: /* rshort_table_end */ | |
367 | - | |
368 | - be 1f | |
369 | - nop | |
370 | - ldub [%o1 - 1], %g2 | |
371 | - stb %g2, [%o0 - 1] | |
372 | -1: | |
373 | - retl | |
374 | - RETL_INSN | |
375 | - | |
376 | -91: /* rshort_aligned_end */ | |
377 | - | |
378 | - bne 75b | |
379 | - andcc %o2, 8, %g0 | |
380 | - | |
381 | - be 1f | |
382 | - andcc %o2, 4, %g0 | |
383 | - | |
384 | - ld [%o1 - 0x08], %g2 | |
385 | - ld [%o1 - 0x04], %g3 | |
386 | - sub %o1, 8, %o1 | |
387 | - st %g2, [%o0 - 0x08] | |
388 | - st %g3, [%o0 - 0x04] | |
389 | - sub %o0, 8, %o0 | |
390 | -1: | |
391 | - b 73b | |
392 | - mov %o2, %g1 | |
393 | - | |
394 | -77: /* rnon_aligned */ | |
395 | - cmp %o2, 15 | |
396 | - bleu 75b | |
397 | - andcc %o0, 3, %g0 | |
398 | - be 64f | |
399 | - andcc %o0, 1, %g0 | |
400 | - be 63f | |
401 | - andcc %o0, 2, %g0 | |
402 | - ldub [%o1 - 1], %g5 | |
403 | - sub %o1, 1, %o1 | |
404 | - stb %g5, [%o0 - 1] | |
405 | - sub %o0, 1, %o0 | |
406 | - be 64f | |
407 | - sub %o2, 1, %o2 | |
408 | -63: | |
409 | - ldub [%o1 - 1], %g5 | |
410 | - sub %o1, 2, %o1 | |
411 | - stb %g5, [%o0 - 1] | |
412 | - sub %o0, 2, %o0 | |
413 | - ldub [%o1], %g5 | |
414 | - sub %o2, 2, %o2 | |
415 | - stb %g5, [%o0] | |
416 | -64: | |
417 | - and %o1, 3, %g2 | |
418 | - and %o1, -4, %o1 | |
419 | - and %o2, 0xc, %g3 | |
420 | - add %o1, 4, %o1 | |
421 | - cmp %g3, 4 | |
422 | - sll %g2, 3, %g4 | |
423 | - mov 32, %g2 | |
424 | - be 4f | |
425 | - sub %g2, %g4, %g7 | |
426 | - | |
427 | - blu 3f | |
428 | - cmp %g3, 8 | |
429 | - | |
430 | - be 2f | |
431 | - srl %o2, 2, %g3 | |
432 | - | |
433 | - ld [%o1 - 4], %o3 | |
434 | - add %o0, -8, %o0 | |
435 | - ld [%o1 - 8], %o4 | |
436 | - add %o1, -16, %o1 | |
437 | - b 7f | |
438 | - add %g3, 1, %g3 | |
439 | -2: | |
440 | - ld [%o1 - 4], %o4 | |
441 | - add %o0, -4, %o0 | |
442 | - ld [%o1 - 8], %g1 | |
443 | - add %o1, -12, %o1 | |
444 | - b 8f | |
445 | - add %g3, 2, %g3 | |
446 | -3: | |
447 | - ld [%o1 - 4], %o5 | |
448 | - add %o0, -12, %o0 | |
449 | - ld [%o1 - 8], %o3 | |
450 | - add %o1, -20, %o1 | |
451 | - b 6f | |
452 | - srl %o2, 2, %g3 | |
453 | -4: | |
454 | - ld [%o1 - 4], %g1 | |
455 | - srl %o2, 2, %g3 | |
456 | - ld [%o1 - 8], %o5 | |
457 | - add %o1, -24, %o1 | |
458 | - add %o0, -16, %o0 | |
459 | - add %g3, -1, %g3 | |
460 | - | |
461 | - ld [%o1 + 12], %o3 | |
462 | -5: | |
463 | - sll %o5, %g4, %g2 | |
464 | - srl %g1, %g7, %g5 | |
465 | - or %g2, %g5, %g2 | |
466 | - st %g2, [%o0 + 12] | |
467 | -6: | |
468 | - ld [%o1 + 8], %o4 | |
469 | - sll %o3, %g4, %g2 | |
470 | - srl %o5, %g7, %g5 | |
471 | - or %g2, %g5, %g2 | |
472 | - st %g2, [%o0 + 8] | |
473 | -7: | |
474 | - ld [%o1 + 4], %g1 | |
475 | - sll %o4, %g4, %g2 | |
476 | - srl %o3, %g7, %g5 | |
477 | - or %g2, %g5, %g2 | |
478 | - st %g2, [%o0 + 4] | |
479 | -8: | |
480 | - ld [%o1], %o5 | |
481 | - sll %g1, %g4, %g2 | |
482 | - srl %o4, %g7, %g5 | |
483 | - addcc %g3, -4, %g3 | |
484 | - or %g2, %g5, %g2 | |
485 | - add %o1, -16, %o1 | |
486 | - st %g2, [%o0] | |
487 | - add %o0, -16, %o0 | |
488 | - bne,a 5b | |
489 | - ld [%o1 + 12], %o3 | |
490 | - sll %o5, %g4, %g2 | |
491 | - srl %g1, %g7, %g5 | |
492 | - srl %g4, 3, %g3 | |
493 | - or %g2, %g5, %g2 | |
494 | - add %o1, %g3, %o1 | |
495 | - andcc %o2, 2, %g0 | |
496 | - st %g2, [%o0 + 12] | |
497 | - be 1f | |
498 | - andcc %o2, 1, %g0 | |
499 | - | |
500 | - ldub [%o1 + 15], %g5 | |
501 | - add %o1, -2, %o1 | |
502 | - stb %g5, [%o0 + 11] | |
503 | - add %o0, -2, %o0 | |
504 | - ldub [%o1 + 16], %g5 | |
505 | - stb %g5, [%o0 + 12] | |
506 | -1: | |
507 | - be 1f | |
508 | - nop | |
509 | - ldub [%o1 + 15], %g5 | |
510 | - stb %g5, [%o0 + 11] | |
511 | -1: | |
512 | - retl | |
513 | - RETL_INSN | |
514 | - | |
515 | -#endif /* FASTER_REVERSE */ | |
516 | - | |
517 | 175 | /* NOTE: This code is executed just for the cases, |
518 | 176 | where %src (=%o1) & 3 is != 0. |
519 | 177 | We need to align it to 4. So, for (%src & 3) |
... | ... | @@ -546,7 +204,7 @@ |
546 | 204 | FUNC(memcpy) /* %o0=dst %o1=src %o2=len */ |
547 | 205 | |
548 | 206 | sub %o0, %o1, %o4 |
549 | - SETUP_RETL | |
207 | + mov %o0, %g7 | |
550 | 208 | 9: |
551 | 209 | andcc %o4, 3, %o5 |
552 | 210 | 0: |
... | ... | @@ -569,7 +227,7 @@ |
569 | 227 | add %o1, 4, %o1 |
570 | 228 | add %o0, 4, %o0 |
571 | 229 | 2: |
572 | - andcc %g1, 0xffffff80, %g7 | |
230 | + andcc %g1, 0xffffff80, %g0 | |
573 | 231 | be 3f |
574 | 232 | andcc %o0, 4, %g0 |
575 | 233 | |
576 | 234 | |
577 | 235 | |
578 | 236 | |
579 | 237 | |
... | ... | @@ -579,22 +237,23 @@ |
579 | 237 | MOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) |
580 | 238 | MOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) |
581 | 239 | MOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) |
582 | - subcc %g7, 128, %g7 | |
240 | + sub %g1, 128, %g1 | |
583 | 241 | add %o1, 128, %o1 |
584 | - bne 5b | |
242 | + cmp %g1, 128 | |
243 | + bge 5b | |
585 | 244 | add %o0, 128, %o0 |
586 | 245 | 3: |
587 | - andcc %g1, 0x70, %g7 | |
246 | + andcc %g1, 0x70, %g4 | |
588 | 247 | be 80f |
589 | 248 | andcc %g1, 8, %g0 |
590 | 249 | |
591 | 250 | sethi %hi(80f), %o5 |
592 | - srl %g7, 1, %o4 | |
593 | - add %g7, %o4, %o4 | |
594 | - add %o1, %g7, %o1 | |
251 | + srl %g4, 1, %o4 | |
252 | + add %g4, %o4, %o4 | |
253 | + add %o1, %g4, %o1 | |
595 | 254 | sub %o5, %o4, %o5 |
596 | 255 | jmpl %o5 + %lo(80f), %g0 |
597 | - add %o0, %g7, %o0 | |
256 | + add %o0, %g4, %o0 | |
598 | 257 | |
599 | 258 | 79: /* memcpy_table */ |
600 | 259 | |
601 | 260 | |
602 | 261 | |
603 | 262 | |
604 | 263 | |
605 | 264 | |
... | ... | @@ -641,43 +300,28 @@ |
641 | 300 | stb %g2, [%o0] |
642 | 301 | 1: |
643 | 302 | retl |
644 | - RETL_INSN | |
303 | + mov %g7, %o0 | |
645 | 304 | |
646 | 305 | 82: /* ldd_std */ |
647 | 306 | MOVE_BIGALIGNCHUNK(o1, o0, 0x00, o2, o3, o4, o5, g2, g3, g4, g5) |
648 | 307 | MOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) |
649 | 308 | MOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) |
650 | 309 | MOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) |
651 | - subcc %g7, 128, %g7 | |
310 | + subcc %g1, 128, %g1 | |
652 | 311 | add %o1, 128, %o1 |
653 | - bne 82b | |
312 | + cmp %g1, 128 | |
313 | + bge 82b | |
654 | 314 | add %o0, 128, %o0 |
655 | 315 | |
656 | -#ifndef FASTER_ALIGNED | |
657 | - | |
658 | - andcc %g1, 0x70, %g7 | |
659 | - be 80b | |
660 | - andcc %g1, 8, %g0 | |
661 | - | |
662 | - sethi %hi(80b), %o5 | |
663 | - srl %g7, 1, %o4 | |
664 | - add %g7, %o4, %o4 | |
665 | - add %o1, %g7, %o1 | |
666 | - sub %o5, %o4, %o5 | |
667 | - jmpl %o5 + %lo(80b), %g0 | |
668 | - add %o0, %g7, %o0 | |
669 | - | |
670 | -#else /* FASTER_ALIGNED */ | |
671 | - | |
672 | - andcc %g1, 0x70, %g7 | |
316 | + andcc %g1, 0x70, %g4 | |
673 | 317 | be 84f |
674 | 318 | andcc %g1, 8, %g0 |
675 | 319 | |
676 | 320 | sethi %hi(84f), %o5 |
677 | - add %o1, %g7, %o1 | |
678 | - sub %o5, %g7, %o5 | |
321 | + add %o1, %g4, %o1 | |
322 | + sub %o5, %g4, %o5 | |
679 | 323 | jmpl %o5 + %lo(84f), %g0 |
680 | - add %o0, %g7, %o0 | |
324 | + add %o0, %g4, %o0 | |
681 | 325 | |
682 | 326 | 83: /* amemcpy_table */ |
683 | 327 | |
684 | 328 | |
685 | 329 | |
686 | 330 | |
687 | 331 | |
688 | 332 | |
689 | 333 | |
690 | 334 | |
691 | 335 | |
692 | 336 | |
693 | 337 | |
694 | 338 | |
695 | 339 | |
696 | 340 | |
697 | 341 | |
698 | 342 | |
699 | 343 | |
700 | 344 | |
701 | 345 | |
702 | 346 | |
703 | 347 | |
704 | 348 | |
705 | 349 | |
706 | 350 | |
707 | 351 | |
708 | 352 | |
709 | 353 | |
710 | 354 | |
711 | 355 | |
712 | 356 | |
713 | 357 | |
714 | 358 | |
715 | 359 | |
716 | 360 | |
717 | 361 | |
718 | 362 | |
719 | 363 | |
... | ... | @@ -721,383 +365,133 @@ |
721 | 365 | stb %g2, [%o0] |
722 | 366 | 1: |
723 | 367 | retl |
724 | - RETL_INSN | |
368 | + mov %g7, %o0 | |
725 | 369 | |
726 | -#endif /* FASTER_ALIGNED */ | |
727 | - | |
728 | 370 | 86: /* non_aligned */ |
729 | 371 | cmp %o2, 6 |
730 | 372 | bleu 88f |
373 | + nop | |
731 | 374 | |
732 | -#ifdef FASTER_NONALIGNED | |
733 | - | |
734 | - cmp %o2, 256 | |
735 | - bcc 87f | |
736 | - | |
737 | -#endif /* FASTER_NONALIGNED */ | |
738 | - | |
739 | - andcc %o0, 3, %g0 | |
375 | + save %sp, -96, %sp | |
376 | + andcc %i0, 3, %g0 | |
740 | 377 | be 61f |
741 | - andcc %o0, 1, %g0 | |
378 | + andcc %i0, 1, %g0 | |
742 | 379 | be 60f |
743 | - andcc %o0, 2, %g0 | |
380 | + andcc %i0, 2, %g0 | |
744 | 381 | |
745 | - ldub [%o1], %g5 | |
746 | - add %o1, 1, %o1 | |
747 | - stb %g5, [%o0] | |
748 | - sub %o2, 1, %o2 | |
382 | + ldub [%i1], %g5 | |
383 | + add %i1, 1, %i1 | |
384 | + stb %g5, [%i0] | |
385 | + sub %i2, 1, %i2 | |
749 | 386 | bne 61f |
750 | - add %o0, 1, %o0 | |
387 | + add %i0, 1, %i0 | |
751 | 388 | 60: |
752 | - ldub [%o1], %g3 | |
753 | - add %o1, 2, %o1 | |
754 | - stb %g3, [%o0] | |
755 | - sub %o2, 2, %o2 | |
756 | - ldub [%o1 - 1], %g3 | |
757 | - add %o0, 2, %o0 | |
758 | - stb %g3, [%o0 - 1] | |
389 | + ldub [%i1], %g3 | |
390 | + add %i1, 2, %i1 | |
391 | + stb %g3, [%i0] | |
392 | + sub %i2, 2, %i2 | |
393 | + ldub [%i1 - 1], %g3 | |
394 | + add %i0, 2, %i0 | |
395 | + stb %g3, [%i0 - 1] | |
759 | 396 | 61: |
760 | - and %o1, 3, %g2 | |
761 | - and %o2, 0xc, %g3 | |
762 | - and %o1, -4, %o1 | |
397 | + and %i1, 3, %g2 | |
398 | + and %i2, 0xc, %g3 | |
399 | + and %i1, -4, %i1 | |
763 | 400 | cmp %g3, 4 |
764 | 401 | sll %g2, 3, %g4 |
765 | 402 | mov 32, %g2 |
766 | 403 | be 4f |
767 | - sub %g2, %g4, %g7 | |
404 | + sub %g2, %g4, %l0 | |
768 | 405 | |
769 | 406 | blu 3f |
770 | 407 | cmp %g3, 0x8 |
771 | 408 | |
772 | 409 | be 2f |
773 | - srl %o2, 2, %g3 | |
410 | + srl %i2, 2, %g3 | |
774 | 411 | |
775 | - ld [%o1], %o3 | |
776 | - add %o0, -8, %o0 | |
777 | - ld [%o1 + 4], %o4 | |
412 | + ld [%i1], %i3 | |
413 | + add %i0, -8, %i0 | |
414 | + ld [%i1 + 4], %i4 | |
778 | 415 | b 8f |
779 | 416 | add %g3, 1, %g3 |
780 | 417 | 2: |
781 | - ld [%o1], %o4 | |
782 | - add %o0, -12, %o0 | |
783 | - ld [%o1 + 4], %o5 | |
418 | + ld [%i1], %i4 | |
419 | + add %i0, -12, %i0 | |
420 | + ld [%i1 + 4], %i5 | |
784 | 421 | add %g3, 2, %g3 |
785 | 422 | b 9f |
786 | - add %o1, -4, %o1 | |
423 | + add %i1, -4, %i1 | |
787 | 424 | 3: |
788 | - ld [%o1], %g1 | |
789 | - add %o0, -4, %o0 | |
790 | - ld [%o1 + 4], %o3 | |
791 | - srl %o2, 2, %g3 | |
425 | + ld [%i1], %g1 | |
426 | + add %i0, -4, %i0 | |
427 | + ld [%i1 + 4], %i3 | |
428 | + srl %i2, 2, %g3 | |
792 | 429 | b 7f |
793 | - add %o1, 4, %o1 | |
430 | + add %i1, 4, %i1 | |
794 | 431 | 4: |
795 | - ld [%o1], %o5 | |
796 | - cmp %o2, 7 | |
797 | - ld [%o1 + 4], %g1 | |
798 | - srl %o2, 2, %g3 | |
432 | + ld [%i1], %i5 | |
433 | + cmp %i2, 7 | |
434 | + ld [%i1 + 4], %g1 | |
435 | + srl %i2, 2, %g3 | |
799 | 436 | bleu 10f |
800 | - add %o1, 8, %o1 | |
437 | + add %i1, 8, %i1 | |
801 | 438 | |
802 | - ld [%o1], %o3 | |
439 | + ld [%i1], %i3 | |
803 | 440 | add %g3, -1, %g3 |
804 | 441 | 5: |
805 | - sll %o5, %g4, %g2 | |
806 | - srl %g1, %g7, %g5 | |
442 | + sll %i5, %g4, %g2 | |
443 | + srl %g1, %l0, %g5 | |
807 | 444 | or %g2, %g5, %g2 |
808 | - st %g2, [%o0] | |
445 | + st %g2, [%i0] | |
809 | 446 | 7: |
810 | - ld [%o1 + 4], %o4 | |
447 | + ld [%i1 + 4], %i4 | |
811 | 448 | sll %g1, %g4, %g2 |
812 | - srl %o3, %g7, %g5 | |
449 | + srl %i3, %l0, %g5 | |
813 | 450 | or %g2, %g5, %g2 |
814 | - st %g2, [%o0 + 4] | |
451 | + st %g2, [%i0 + 4] | |
815 | 452 | 8: |
816 | - ld [%o1 + 8], %o5 | |
817 | - sll %o3, %g4, %g2 | |
818 | - srl %o4, %g7, %g5 | |
453 | + ld [%i1 + 8], %i5 | |
454 | + sll %i3, %g4, %g2 | |
455 | + srl %i4, %l0, %g5 | |
819 | 456 | or %g2, %g5, %g2 |
820 | - st %g2, [%o0 + 8] | |
457 | + st %g2, [%i0 + 8] | |
821 | 458 | 9: |
822 | - ld [%o1 + 12], %g1 | |
823 | - sll %o4, %g4, %g2 | |
824 | - srl %o5, %g7, %g5 | |
459 | + ld [%i1 + 12], %g1 | |
460 | + sll %i4, %g4, %g2 | |
461 | + srl %i5, %l0, %g5 | |
825 | 462 | addcc %g3, -4, %g3 |
826 | 463 | or %g2, %g5, %g2 |
827 | - add %o1, 16, %o1 | |
828 | - st %g2, [%o0 + 12] | |
829 | - add %o0, 16, %o0 | |
464 | + add %i1, 16, %i1 | |
465 | + st %g2, [%i0 + 12] | |
466 | + add %i0, 16, %i0 | |
830 | 467 | bne,a 5b |
831 | - ld [%o1], %o3 | |
468 | + ld [%i1], %i3 | |
832 | 469 | 10: |
833 | - sll %o5, %g4, %g2 | |
834 | - srl %g1, %g7, %g5 | |
835 | - srl %g7, 3, %g3 | |
470 | + sll %i5, %g4, %g2 | |
471 | + srl %g1, %l0, %g5 | |
472 | + srl %l0, 3, %g3 | |
836 | 473 | or %g2, %g5, %g2 |
837 | - sub %o1, %g3, %o1 | |
838 | - andcc %o2, 2, %g0 | |
839 | - st %g2, [%o0] | |
474 | + sub %i1, %g3, %i1 | |
475 | + andcc %i2, 2, %g0 | |
476 | + st %g2, [%i0] | |
840 | 477 | be 1f |
841 | - andcc %o2, 1, %g0 | |
478 | + andcc %i2, 1, %g0 | |
842 | 479 | |
843 | - ldub [%o1], %g2 | |
844 | - add %o1, 2, %o1 | |
845 | - stb %g2, [%o0 + 4] | |
846 | - add %o0, 2, %o0 | |
847 | - ldub [%o1 - 1], %g2 | |
848 | - stb %g2, [%o0 + 3] | |
480 | + ldub [%i1], %g2 | |
481 | + add %i1, 2, %i1 | |
482 | + stb %g2, [%i0 + 4] | |
483 | + add %i0, 2, %i0 | |
484 | + ldub [%i1 - 1], %g2 | |
485 | + stb %g2, [%i0 + 3] | |
849 | 486 | 1: |
850 | 487 | be 1f |
851 | 488 | nop |
852 | - ldub [%o1], %g2 | |
853 | - stb %g2, [%o0 + 4] | |
489 | + ldub [%i1], %g2 | |
490 | + stb %g2, [%i0 + 4] | |
854 | 491 | 1: |
855 | - retl | |
856 | - RETL_INSN | |
492 | + ret | |
493 | + restore %g7, %g0, %o0 | |
857 | 494 | |
858 | -#ifdef FASTER_NONALIGNED | |
859 | - | |
860 | -87: /* faster_nonaligned */ | |
861 | - | |
862 | - andcc %o1, 3, %g0 | |
863 | - be 3f | |
864 | - andcc %o1, 1, %g0 | |
865 | - | |
866 | - be 4f | |
867 | - andcc %o1, 2, %g0 | |
868 | - | |
869 | - ldub [%o1], %g2 | |
870 | - add %o1, 1, %o1 | |
871 | - stb %g2, [%o0] | |
872 | - sub %o2, 1, %o2 | |
873 | - bne 3f | |
874 | - add %o0, 1, %o0 | |
875 | -4: | |
876 | - lduh [%o1], %g2 | |
877 | - add %o1, 2, %o1 | |
878 | - srl %g2, 8, %g3 | |
879 | - sub %o2, 2, %o2 | |
880 | - stb %g3, [%o0] | |
881 | - add %o0, 2, %o0 | |
882 | - stb %g2, [%o0 - 1] | |
883 | -3: | |
884 | - andcc %o1, 4, %g0 | |
885 | - | |
886 | - bne 2f | |
887 | - cmp %o5, 1 | |
888 | - | |
889 | - ld [%o1], %o4 | |
890 | - srl %o4, 24, %g2 | |
891 | - stb %g2, [%o0] | |
892 | - srl %o4, 16, %g3 | |
893 | - stb %g3, [%o0 + 1] | |
894 | - srl %o4, 8, %g2 | |
895 | - stb %g2, [%o0 + 2] | |
896 | - sub %o2, 4, %o2 | |
897 | - stb %o4, [%o0 + 3] | |
898 | - add %o1, 4, %o1 | |
899 | - add %o0, 4, %o0 | |
900 | -2: | |
901 | - be 33f | |
902 | - cmp %o5, 2 | |
903 | - be 32f | |
904 | - sub %o2, 4, %o2 | |
905 | -31: | |
906 | - ld [%o1], %g2 | |
907 | - add %o1, 4, %o1 | |
908 | - srl %g2, 24, %g3 | |
909 | - and %o0, 7, %g5 | |
910 | - stb %g3, [%o0] | |
911 | - cmp %g5, 7 | |
912 | - sll %g2, 8, %g1 | |
913 | - add %o0, 4, %o0 | |
914 | - be 41f | |
915 | - and %o2, 0xffffffc0, %o3 | |
916 | - ld [%o0 - 7], %o4 | |
917 | -4: | |
918 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
919 | - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
920 | - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
921 | - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
922 | - subcc %o3, 64, %o3 | |
923 | - add %o1, 64, %o1 | |
924 | - bne 4b | |
925 | - add %o0, 64, %o0 | |
926 | - | |
927 | - andcc %o2, 0x30, %o3 | |
928 | - be,a 1f | |
929 | - srl %g1, 16, %g2 | |
930 | -4: | |
931 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
932 | - subcc %o3, 16, %o3 | |
933 | - add %o1, 16, %o1 | |
934 | - bne 4b | |
935 | - add %o0, 16, %o0 | |
936 | - | |
937 | - srl %g1, 16, %g2 | |
938 | -1: | |
939 | - st %o4, [%o0 - 7] | |
940 | - sth %g2, [%o0 - 3] | |
941 | - srl %g1, 8, %g4 | |
942 | - b 88f | |
943 | - stb %g4, [%o0 - 1] | |
944 | -32: | |
945 | - ld [%o1], %g2 | |
946 | - add %o1, 4, %o1 | |
947 | - srl %g2, 16, %g3 | |
948 | - and %o0, 7, %g5 | |
949 | - sth %g3, [%o0] | |
950 | - cmp %g5, 6 | |
951 | - sll %g2, 16, %g1 | |
952 | - add %o0, 4, %o0 | |
953 | - be 42f | |
954 | - and %o2, 0xffffffc0, %o3 | |
955 | - ld [%o0 - 6], %o4 | |
956 | -4: | |
957 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
958 | - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
959 | - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
960 | - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
961 | - subcc %o3, 64, %o3 | |
962 | - add %o1, 64, %o1 | |
963 | - bne 4b | |
964 | - add %o0, 64, %o0 | |
965 | - | |
966 | - andcc %o2, 0x30, %o3 | |
967 | - be,a 1f | |
968 | - srl %g1, 16, %g2 | |
969 | -4: | |
970 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
971 | - subcc %o3, 16, %o3 | |
972 | - add %o1, 16, %o1 | |
973 | - bne 4b | |
974 | - add %o0, 16, %o0 | |
975 | - | |
976 | - srl %g1, 16, %g2 | |
977 | -1: | |
978 | - st %o4, [%o0 - 6] | |
979 | - b 88f | |
980 | - sth %g2, [%o0 - 2] | |
981 | -33: | |
982 | - ld [%o1], %g2 | |
983 | - sub %o2, 4, %o2 | |
984 | - srl %g2, 24, %g3 | |
985 | - and %o0, 7, %g5 | |
986 | - stb %g3, [%o0] | |
987 | - cmp %g5, 5 | |
988 | - srl %g2, 8, %g4 | |
989 | - sll %g2, 24, %g1 | |
990 | - sth %g4, [%o0 + 1] | |
991 | - add %o1, 4, %o1 | |
992 | - be 43f | |
993 | - and %o2, 0xffffffc0, %o3 | |
994 | - | |
995 | - ld [%o0 - 1], %o4 | |
996 | - add %o0, 4, %o0 | |
997 | -4: | |
998 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) | |
999 | - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) | |
1000 | - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) | |
1001 | - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) | |
1002 | - subcc %o3, 64, %o3 | |
1003 | - add %o1, 64, %o1 | |
1004 | - bne 4b | |
1005 | - add %o0, 64, %o0 | |
1006 | - | |
1007 | - andcc %o2, 0x30, %o3 | |
1008 | - be,a 1f | |
1009 | - srl %g1, 24, %g2 | |
1010 | -4: | |
1011 | - SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) | |
1012 | - subcc %o3, 16, %o3 | |
1013 | - add %o1, 16, %o1 | |
1014 | - bne 4b | |
1015 | - add %o0, 16, %o0 | |
1016 | - | |
1017 | - srl %g1, 24, %g2 | |
1018 | -1: | |
1019 | - st %o4, [%o0 - 5] | |
1020 | - b 88f | |
1021 | - stb %g2, [%o0 - 1] | |
1022 | -41: | |
1023 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
1024 | - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
1025 | - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
1026 | - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
1027 | - subcc %o3, 64, %o3 | |
1028 | - add %o1, 64, %o1 | |
1029 | - bne 41b | |
1030 | - add %o0, 64, %o0 | |
1031 | - | |
1032 | - andcc %o2, 0x30, %o3 | |
1033 | - be,a 1f | |
1034 | - srl %g1, 16, %g2 | |
1035 | -4: | |
1036 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) | |
1037 | - subcc %o3, 16, %o3 | |
1038 | - add %o1, 16, %o1 | |
1039 | - bne 4b | |
1040 | - add %o0, 16, %o0 | |
1041 | - | |
1042 | - srl %g1, 16, %g2 | |
1043 | -1: | |
1044 | - sth %g2, [%o0 - 3] | |
1045 | - srl %g1, 8, %g4 | |
1046 | - b 88f | |
1047 | - stb %g4, [%o0 - 1] | |
1048 | -43: | |
1049 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) | |
1050 | - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) | |
1051 | - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) | |
1052 | - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) | |
1053 | - subcc %o3, 64, %o3 | |
1054 | - add %o1, 64, %o1 | |
1055 | - bne 43b | |
1056 | - add %o0, 64, %o0 | |
1057 | - | |
1058 | - andcc %o2, 0x30, %o3 | |
1059 | - be,a 1f | |
1060 | - srl %g1, 24, %g2 | |
1061 | -4: | |
1062 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) | |
1063 | - subcc %o3, 16, %o3 | |
1064 | - add %o1, 16, %o1 | |
1065 | - bne 4b | |
1066 | - add %o0, 16, %o0 | |
1067 | - | |
1068 | - srl %g1, 24, %g2 | |
1069 | -1: | |
1070 | - stb %g2, [%o0 + 3] | |
1071 | - b 88f | |
1072 | - add %o0, 4, %o0 | |
1073 | -42: | |
1074 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
1075 | - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
1076 | - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
1077 | - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
1078 | - subcc %o3, 64, %o3 | |
1079 | - add %o1, 64, %o1 | |
1080 | - bne 42b | |
1081 | - add %o0, 64, %o0 | |
1082 | - | |
1083 | - andcc %o2, 0x30, %o3 | |
1084 | - be,a 1f | |
1085 | - srl %g1, 16, %g2 | |
1086 | -4: | |
1087 | - SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) | |
1088 | - subcc %o3, 16, %o3 | |
1089 | - add %o1, 16, %o1 | |
1090 | - bne 4b | |
1091 | - add %o0, 16, %o0 | |
1092 | - | |
1093 | - srl %g1, 16, %g2 | |
1094 | -1: | |
1095 | - sth %g2, [%o0 - 2] | |
1096 | - | |
1097 | - /* Fall through */ | |
1098 | - | |
1099 | -#endif /* FASTER_NONALIGNED */ | |
1100 | - | |
1101 | 495 | 88: /* short_end */ |
1102 | 496 | |
1103 | 497 | and %o2, 0xe, %o3 |
... | ... | @@ -1127,7 +521,7 @@ |
1127 | 521 | stb %g2, [%o0] |
1128 | 522 | 1: |
1129 | 523 | retl |
1130 | - RETL_INSN | |
524 | + mov %g7, %o0 | |
1131 | 525 | |
1132 | 526 | 90: /* short_aligned_end */ |
1133 | 527 | bne 88b |