diff options
Diffstat (limited to 'sysdeps/powerpc/powerpc64/strcpy.S')
-rw-r--r-- | sysdeps/powerpc/powerpc64/strcpy.S | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/sysdeps/powerpc/powerpc64/strcpy.S b/sysdeps/powerpc/powerpc64/strcpy.S index 56845cf8fd..4c6fd3f9d7 100644 --- a/sysdeps/powerpc/powerpc64/strcpy.S +++ b/sysdeps/powerpc/powerpc64/strcpy.S @@ -17,50 +17,28 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <bp-sym.h> -#include <bp-asm.h> /* See strlen.s for comments on how the end-of-string testing works. */ /* char * [r3] strcpy (char *dest [r3], const char *src [r4]) */ -EALIGN (BP_SYM (strcpy), 4, 0) +EALIGN (strcpy, 4, 0) CALL_MCOUNT 2 #define rTMP r0 #define rRTN r3 /* incoming DEST arg preserved as result */ -/* Note. The Bounded pointer support in this code is broken. This code - was inherited from PPC32 and that support was never completed. - Current PPC gcc does not support -fbounds-check or -fbounded-pointers. - These artifacts are left in the code as a reminder in case we need - bounded pointer support in the future. */ -#if __BOUNDED_POINTERS__ -# define rDEST r4 /* pointer to previous word in dest */ -# define rSRC r5 /* pointer to previous word in src */ -# define rLOW r11 -# define rHIGH r12 -#else -# define rSRC r4 /* pointer to previous word in src */ -# define rDEST r5 /* pointer to previous word in dest */ -#endif +#define rSRC r4 /* pointer to previous word in src */ +#define rDEST r5 /* pointer to previous word in dest */ #define rWORD r6 /* current word from src */ #define rFEFE r7 /* constant 0xfefefefefefefeff (-0x0101010101010101) */ #define r7F7F r8 /* constant 0x7f7f7f7f7f7f7f7f */ #define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */ #define rALT r10 /* alternate word from src */ - CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH) - CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH) - STORE_RETURN_BOUNDS (rLOW, rHIGH) - dcbt 0,rSRC or rTMP, rSRC, rRTN clrldi. rTMP, rTMP, 61 -#if __BOUNDED_POINTERS__ - addi rDEST, rDEST, -8 -#else addi rDEST, rRTN, -8 -#endif dcbtst 0,rRTN bne L(unaligned) @@ -112,7 +90,6 @@ L(g1): stb rTMP, 14(rDEST) beqlr- stb rALT, 15(rDEST) - /* GKM FIXME: check high bound. */ blr /* Oh well. In this case, we just do a byte-by-byte copy. */ @@ -134,11 +111,9 @@ L(u0): lbzu rALT, 1(rSRC) cmpwi rWORD, 0 bne+ L(u0) L(u2): stb rWORD, 1(rDEST) - /* GKM FIXME: check high bound. */ blr L(u1): stb rALT, 1(rDEST) - /* GKM FIXME: check high bound. */ blr -END (BP_SYM (strcpy)) +END (strcpy) libc_hidden_builtin_def (strcpy) |