diff options
Diffstat (limited to 'sysdeps/i386/stpcpy.S')
-rw-r--r-- | sysdeps/i386/stpcpy.S | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/sysdeps/i386/stpcpy.S b/sysdeps/i386/stpcpy.S index 751e22c1c6..f8267c7d1e 100644 --- a/sysdeps/i386/stpcpy.S +++ b/sysdeps/i386/stpcpy.S @@ -1,6 +1,6 @@ /* Copy SRC to DEST returning the address of the terminating '\0' in DEST. For Intel 80x86, x>=3. - Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper (drepper@gnu.ai.mit.edu). @@ -24,18 +24,19 @@ #include <sysdep.h> #include "asm-syntax.h" +#include "bp-asm.h" -/* - INPUT PARAMETERS: - dest (sp + 4) - src (sp + 8) -*/ +#define PARMS LINKAGE /* no space for saved regs */ +#define RTN PARMS +#define DEST RTN+RTN_SIZE +#define SRC DEST+PTR_SIZE .text ENTRY (__stpcpy) - movl 4(%esp), %eax /* load destination pointer */ - movl 8(%esp), %ecx /* load source pointer */ + ENTER + movl DEST(%esp), %eax + movl SRC(%esp), %ecx subl %eax, %ecx /* magic: reduce number of loop variants to one using addressing mode */ @@ -81,7 +82,9 @@ L(1): addl $4, %eax /* increment loop counter */ L(4): incl %eax L(3): incl %eax L(2): - ret + + LEAVE + RET_PTR END (__stpcpy) weak_alias (__stpcpy, stpcpy) |