diff options
Diffstat (limited to 'sysdeps/i386/i586/memcpy.S')
-rw-r--r-- | sysdeps/i386/i586/memcpy.S | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/sysdeps/i386/i586/memcpy.S b/sysdeps/i386/i586/memcpy.S index 82d5e79564..ed35b48ff6 100644 --- a/sysdeps/i386/i586/memcpy.S +++ b/sysdeps/i386/i586/memcpy.S @@ -22,16 +22,14 @@ #include "asm-syntax.h" #include "bp-asm.h" -/* BEWARE: `#ifdef memset' means that memset is redefined as `bzero' */ -#define BCOPY_P (defined memcpy) +/* BEWARE: `#ifdef memcpy' means that memcpy is redefined as `mempcpy', + and the return value is the byte after the last one copied in + the destination. */ +#define MEMPCPY_P (defined memcpy) #define PARMS LINKAGE+8 /* space for 2 saved regs */ -#if BCOPY_P -# define DEST PARMS -#else -# define RTN PARMS -# define DEST RTN+RTN_SIZE -#endif +#define RTN PARMS +#define DEST RTN+RTN_SIZE #define SRC DEST+PTR_SIZE #define LEN SRC+PTR_SIZE @@ -99,13 +97,13 @@ L(3): movl 28(%edi), %edx /* Correct extra loop counter modification. */ L(2): addl $32, %ecx -#if !BCOPY_P +#if !MEMPCPY_P movl DEST(%esp), %eax #endif L(1): rep; movsb -#if BCOPY_P +#if MEMPCPY_P movl %edi, %eax #endif @@ -113,9 +111,5 @@ L(1): rep; movsb popl %edi LEAVE -#if BCOPY_P - ret -#else RET_PTR -#endif END (memcpy) |