diff options
Diffstat (limited to 'sysdeps/powerpc/strcpy.S')
-rw-r--r-- | sysdeps/powerpc/strcpy.S | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/sysdeps/powerpc/strcpy.S b/sysdeps/powerpc/strcpy.S index 0a1d89c8fc..0767921d65 100644 --- a/sysdeps/powerpc/strcpy.S +++ b/sysdeps/powerpc/strcpy.S @@ -1,5 +1,5 @@ /* Optimized strcpy implementation for PowerPC. - Copyright (C) 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -45,24 +45,24 @@ EALIGN(strcpy,4,0) lwz r6,0(r4) addi r7,r7,-0x101 addi r8,r8,0x7f7f - b 2f + b L(g2) -0: lwzu r10,4(r4) +L(g0): lwzu r10,4(r4) stwu r6,4(r5) add r0,r7,r10 nor r9,r8,r10 and. r0,r0,r9 - bne- 1f + bne- L(g1) lwzu r6,4(r4) stwu r10,4(r5) -2: add r0,r7,r6 +L(g2): add r0,r7,r6 nor r9,r8,r6 and. r0,r0,r9 - beq+ 0b + beq+ L(g0) mr r10,r6 /* We've hit the end of the string. Do the rest byte-by-byte. */ -1: rlwinm. r0,r10,8,24,31 +L(g1): rlwinm. r0,r10,8,24,31 stb r0,4(r5) beqlr- rlwinm. r0,r10,16,24,31 @@ -81,20 +81,20 @@ L(unaligned): lbz r6,0(r4) addi r5,r3,-1 cmpwi r6,0 - beq- 2f + beq- L(u2) -0: lbzu r10,1(r4) +L(u0): lbzu r10,1(r4) stbu r6,1(r5) cmpwi r10,0 - beq- 1f + beq- L(u1) nop /* Let 601 load start of loop. */ lbzu r6,1(r4) stbu r10,1(r5) cmpwi r6,0 - bne+ 0b -2: stb r6,1(r5) + bne+ L(u0) +L(u2): stb r6,1(r5) blr -1: stb r10,1(r5) +L(u1): stb r10,1(r5) blr END(strcpy) |