diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/syscall.S | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 7 |
3 files changed, 19 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index e5f61a1411..d2bea7f272 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-10-15 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/unix/sysv/linux/i386/sysdep.h (PUSHARGS_6, DOARGS_6, + POPARGS_6, _PUSHARGS_6, _DOARGS_6, _POPARGS_6): Define. + * sysdeps/unix/sysv/linux/i386/syscall.S (syscall): Handle 6 argument + syscalls. + 2004-10-15 Ulrich Drepper <drepper@redhat.com> * nscd/nscd.h (_PATH_NSCD_PASSWD_DB): Move to /var/db. diff --git a/sysdeps/unix/sysv/linux/i386/syscall.S b/sysdeps/unix/sysv/linux/i386/syscall.S index cd7dc65a5f..b569650b24 100644 --- a/sysdeps/unix/sysv/linux/i386/syscall.S +++ b/sysdeps/unix/sysv/linux/i386/syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1998, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1998, 2002, 2004 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 @@ -24,11 +24,11 @@ .text ENTRY (syscall) - PUSHARGS_5 /* Save register contents. */ - _DOARGS_5(36) /* Load arguments. */ - movl 16(%esp), %eax /* Load syscall number into %eax. */ + PUSHARGS_6 /* Save register contents. */ + _DOARGS_6(44) /* Load arguments. */ + movl 20(%esp), %eax /* Load syscall number into %eax. */ ENTER_KERNEL /* Do the system call. */ - POPARGS_5 /* Restore register contents. */ + POPARGS_6 /* Restore register contents. */ cmpl $-4095, %eax /* Check %eax for error. */ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ L(pseudo_end): diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 37e7459a9c..af75d4c51a 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -297,6 +297,13 @@ __i686.get_pc_thunk.reg: \ #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4) #define _POPARGS_5 _POPARGS_4; popl %edi; L(POPDI1): +#define PUSHARGS_6 _PUSHARGS_6 +#define DOARGS_6 _DOARGS_6 (36) +#define POPARGS_6 _POPARGS_6 +#define _PUSHARGS_6 pushl %ebp; L(PUSHBP1): _PUSHARGS_5 +#define _DOARGS_6(n) movl n(%esp), %ebp; _DOARGS_5 (n-4) +#define _POPARGS_6 _POPARGS_5; popl %ebp; L(POPBP1): + #else /* !__ASSEMBLER__ */ /* We need some help from the assembler to generate optimal code. We |