diff options
Diffstat (limited to 'sysdeps/sparc/sparc32/memcpy.S')
-rw-r--r-- | sysdeps/sparc/sparc32/memcpy.S | 138 |
1 files changed, 69 insertions, 69 deletions
diff --git a/sysdeps/sparc/sparc32/memcpy.S b/sysdeps/sparc/sparc32/memcpy.S index f4252d0bf4..43e19b88b5 100644 --- a/sysdeps/sparc/sparc32/memcpy.S +++ b/sysdeps/sparc/sparc32/memcpy.S @@ -1,6 +1,6 @@ /* Copy SIZE bytes from SRC to DEST. For SPARC v7. - Copyright (C) 1996, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David S. Miller <davem@caip.rutgers.edu>, Eddie C. Dost <ecd@skynet.be> and @@ -196,7 +196,7 @@ ENTRY(memmove) st %o4, [%o0 - 4] sub %o1, 4, %o1 sub %o0, 4, %o0 -2: andcc %g1, 0xffffff80, %g7 +2: andcc %g1, 0xffffff80, %g6 be 3f andcc %o0, 4, %g0 @@ -205,23 +205,23 @@ ENTRY(memmove) RMOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) RMOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) RMOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) - subcc %g7, 128, %g7 + subcc %g6, 128, %g6 sub %o1, 128, %o1 bne 5b sub %o0, 128, %o0 -3: andcc %g1, 0x70, %g7 +3: andcc %g1, 0x70, %g6 be 72f andcc %g1, 8, %g0 - srl %g7, 1, %o4 + srl %g6, 1, %o4 mov %o7, %g2 - add %g7, %o4, %o4 + add %g6, %o4, %o4 101: call 100f - sub %o1, %g7, %o1 + sub %o1, %g6, %o1 mov %g2, %o7 jmpl %o5 + (72f - 101b), %g0 - sub %o0, %g7, %o0 + sub %o0, %g6, %o0 71: RMOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g4, g5) RMOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g4, g5) @@ -264,23 +264,23 @@ ENTRY(memmove) RMOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) RMOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) RMOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) - subcc %g7, 128, %g7 + subcc %g6, 128, %g6 sub %o1, 128, %o1 bne 74b sub %o0, 128, %o0 - andcc %g1, 0x70, %g7 + andcc %g1, 0x70, %g6 be 72b andcc %g1, 8, %g0 - srl %g7, 1, %o4 + srl %g6, 1, %o4 mov %o7, %g2 - add %g7, %o4, %o4 + add %g6, %o4, %o4 102: call 100f - sub %o1, %g7, %o1 + sub %o1, %g6, %o1 mov %g2, %o7 jmpl %o5 + (72b - 102b), %g0 - sub %o0, %g7, %o0 + sub %o0, %g6, %o0 75: and %o2, 0xe, %o3 mov %o7, %g2 @@ -351,7 +351,7 @@ ENTRY(memmove) sll %g2, 3, %g4 mov 32, %g2 be 4f - sub %g2, %g4, %g7 + sub %g2, %g4, %g6 blu 3f cmp %g3, 8 @@ -386,22 +386,22 @@ ENTRY(memmove) ld [%o1 + 12], %o3 5: sll %o5, %g4, %g2 - srl %g1, %g7, %g5 + srl %g1, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0 + 12] 6: ld [%o1 + 8], %o4 sll %o3, %g4, %g2 - srl %o5, %g7, %g5 + srl %o5, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0 + 8] 7: ld [%o1 + 4], %g1 sll %o4, %g4, %g2 - srl %o3, %g7, %g5 + srl %o3, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0 + 4] 8: ld [%o1], %o5 sll %g1, %g4, %g2 - srl %o4, %g7, %g5 + srl %o4, %g6, %g5 addcc %g3, -4, %g3 or %g2, %g5, %g2 add %o1, -16, %o1 @@ -410,7 +410,7 @@ ENTRY(memmove) bne,a 5b ld [%o1 + 12], %o3 sll %o5, %g4, %g2 - srl %g1, %g7, %g5 + srl %g1, %g6, %g5 srl %g4, 3, %g3 or %g2, %g5, %g2 add %o1, %g3, %o1 @@ -471,7 +471,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ st %o4, [%o0] add %o1, 4, %o1 add %o0, 4, %o0 -2: andcc %g1, 0xffffff80, %g7 +2: andcc %g1, 0xffffff80, %g6 be 3f andcc %o0, 4, %g0 @@ -480,20 +480,20 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ MOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) - subcc %g7, 128, %g7 + subcc %g6, 128, %g6 add %o1, 128, %o1 bne 5b add %o0, 128, %o0 -3: andcc %g1, 0x70, %g7 +3: andcc %g1, 0x70, %g6 be 80f andcc %g1, 8, %g0 - srl %g7, 1, %o4 + srl %g6, 1, %o4 mov %o7, %g2 - add %g7, %o4, %o4 - add %o1, %g7, %o1 + add %g6, %o4, %o4 + add %o1, %g6, %o1 104: call 100f - add %o0, %g7, %o0 + add %o0, %g6, %o0 jmpl %o5 + (80f - 104b), %g0 mov %g2, %o7 @@ -541,21 +541,21 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ MOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5) MOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5) - subcc %g7, 128, %g7 + subcc %g6, 128, %g6 add %o1, 128, %o1 bne 82b add %o0, 128, %o0 - andcc %g1, 0x70, %g7 + andcc %g1, 0x70, %g6 be 84f andcc %g1, 8, %g0 mov %o7, %g2 111: call 110f - add %o1, %g7, %o1 + add %o1, %g6, %o1 mov %g2, %o7 jmpl %o5 + (84f - 111b), %g0 - add %o0, %g7, %o0 + add %o0, %g6, %o0 83: MOVE_LASTALIGNCHUNK(o1, o0, 0x60, g2, g3, g4, g5) MOVE_LASTALIGNCHUNK(o1, o0, 0x50, g2, g3, g4, g5) @@ -626,7 +626,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ sll %g2, 3, %g4 mov 32, %g2 be 4f - sub %g2, %g4, %g7 + sub %g2, %g4, %g6 blu 3f cmp %g3, 0x8 @@ -661,22 +661,22 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ ld [%o1], %o3 add %g3, -1, %g3 5: sll %o5, %g4, %g2 - srl %g1, %g7, %g5 + srl %g1, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0] 7: ld [%o1 + 4], %o4 sll %g1, %g4, %g2 - srl %o3, %g7, %g5 + srl %o3, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0 + 4] 8: ld [%o1 + 8], %o5 sll %o3, %g4, %g2 - srl %o4, %g7, %g5 + srl %o4, %g6, %g5 or %g2, %g5, %g2 st %g2, [%o0 + 8] 9: ld [%o1 + 12], %g1 sll %o4, %g4, %g2 - srl %o5, %g7, %g5 + srl %o5, %g6, %g5 addcc %g3, -4, %g3 or %g2, %g5, %g2 add %o1, 16, %o1 @@ -685,8 +685,8 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ bne,a 5b ld [%o1], %o3 10: sll %o5, %g4, %g2 - srl %g1, %g7, %g5 - srl %g7, 3, %g3 + srl %g1, %g6, %g5 + srl %g6, 3, %g3 or %g2, %g5, %g2 sub %o1, %g3, %o1 andcc %o2, 2, %g0 @@ -758,10 +758,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ be 41f and %o2, 0xffffffc0, %o3 ld [%o0 - 7], %o4 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 4b @@ -770,7 +770,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 16, %g2 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -793,10 +793,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ be 42f and %o2, 0xffffffc0, %o3 ld [%o0 - 6], %o4 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 4b @@ -805,7 +805,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 16, %g2 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -830,10 +830,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ ld [%o0 - 1], %o4 add %o0, 4, %o0 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) - SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) - SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) - SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1) + SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1) + SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1) + SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 4b @@ -842,7 +842,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 24, %g2 -4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1) +4: SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -852,10 +852,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ 1: st %o4, [%o0 - 5] b 88f stb %g2, [%o0 - 1] -41: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) +41: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) + SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 41b @@ -864,7 +864,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 16, %g2 -4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3) +4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -875,10 +875,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ srl %g1, 8, %g4 b 88f stb %g4, [%o0 - 1] -43: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) +43: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3) + SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3) + SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3) + SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 43b @@ -887,7 +887,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 24, %g2 -4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3) +4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -897,10 +897,10 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ 1: stb %g2, [%o0 + 3] b 88f add %o0, 4, %o0 -42: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) - SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) +42: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) + SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) subcc %o3, 64, %o3 add %o1, 64, %o1 bne 42b @@ -909,7 +909,7 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ andcc %o2, 0x30, %o3 be,a 1f srl %g1, 16, %g2 -4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2) +4: SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2) subcc %o3, 16, %o3 add %o1, 16, %o1 bne 4b @@ -964,5 +964,5 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ 100: retl sub %o7, %o4, %o5 110: retl - sub %o7, %g7, %o5 + sub %o7, %g6, %o5 END(memcpy) |