diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2015-05-20 16:37:52 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2015-05-20 16:37:52 -0300 |
commit | 96dffc26dcc3e7e2bfb489845249ea274510e777 (patch) | |
tree | d6bf9d45b1876141409c40cdb5e57a2a2a5350eb /sysdeps | |
parent | 5be91118f623db41c74c5fdaebf12200a779e6e6 (diff) | |
download | glibc-96dffc26dcc3e7e2bfb489845249ea274510e777.zip glibc-96dffc26dcc3e7e2bfb489845249ea274510e777.tar.gz glibc-96dffc26dcc3e7e2bfb489845249ea274510e777.tar.bz2 |
i386: Remove six-argument specialized implementations
This patch removes the specialized i386 assembly implementations for
fallocate{64}, pselect, and sync_file_range now that i386 have
support for 6 argument syscalls.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/call_pselect6.S | 64 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/call_sync_file_range.S | 70 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/pselect.c | 18 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sync_file_range.c | 43 |
5 files changed, 2 insertions, 197 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index e0fb1ed..80da593 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -2,7 +2,7 @@ default-abi := 32 ifeq ($(subdir),misc) -sysdep_routines += ioperm iopl vm86 call_pselect6 +sysdep_routines += ioperm iopl vm86 endif ifeq ($(subdir),elf) @@ -12,7 +12,7 @@ endif # fallocate, posix_fallocate use six-argument inline syscalls. ifeq ($(subdir),io) -sysdep_routines += call_sync_file_range libc-do-syscall +sysdep_routines += libc-do-syscall endif # libpthread uses six-argument inline syscalls. diff --git a/sysdeps/unix/sysv/linux/i386/call_pselect6.S b/sysdeps/unix/sysv/linux/i386/call_pselect6.S deleted file mode 100644 index 610c263..0000000 --- a/sysdeps/unix/sysv/linux/i386/call_pselect6.S +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 2006-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#ifdef __NR_pselect6 - .text -ENTRY(__call_pselect6) - .hidden __call_pselect6 - pushl %ebx - cfi_adjust_cfa_offset (4) - pushl %esi - cfi_adjust_cfa_offset (4) - pushl %edi - cfi_adjust_cfa_offset (4) - pushl %ebp - cfi_adjust_cfa_offset (4) - cfi_rel_offset (ebp, 0) - cfi_rel_offset (edi, 4) - cfi_rel_offset (esi, 8) - cfi_rel_offset (ebx, 12) - - movl $__NR_pselect6, %eax - movl 20(%esp), %ebx - movl 24(%esp), %ecx - movl 28(%esp), %edx - movl 32(%esp), %esi - movl 36(%esp), %edi - movl 40(%esp), %ebp - - /* The syscall handling cannot handle 6 parameters. Yet. */ - int $0x80 - - popl %ebp - cfi_adjust_cfa_offset (-4) - cfi_restore (ebp) - popl %edi - cfi_adjust_cfa_offset (-4) - cfi_restore (edi) - popl %esi - cfi_adjust_cfa_offset (-4) - cfi_restore (esi) - popl %ebx - cfi_adjust_cfa_offset (-4) - cfi_restore (ebx) - - ret -END(__call_pselect6) -#endif diff --git a/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S b/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S deleted file mode 100644 index 02c2048..0000000 --- a/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S +++ /dev/null @@ -1,70 +0,0 @@ -/* Selective file content synch'ing. - Copyright (C) 2006-2015 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 - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> - - - .text -ENTRY (__call_sync_file_range) -#ifdef __NR_sync_file_range - pushl %ebx - cfi_adjust_cfa_offset (4) - pushl %esi - cfi_adjust_cfa_offset (4) - pushl %edi - cfi_adjust_cfa_offset (4) - pushl %ebp - cfi_adjust_cfa_offset (4) - - movl 20(%esp), %ebx - cfi_rel_offset (ebx, 12) - movl 24(%esp), %ecx - movl 28(%esp), %edx - movl 32(%esp), %esi - cfi_rel_offset (esi, 8) - movl 36(%esp), %edi - cfi_rel_offset (edi, 4) - movl 40(%esp), %ebp - cfi_rel_offset (ebp, 0) - - movl $SYS_ify(sync_file_range), %eax - ENTER_KERNEL - - popl %ebp - cfi_adjust_cfa_offset (-4) - cfi_restore (ebp) - popl %edi - cfi_adjust_cfa_offset (-4) - cfi_restore (edi) - popl %esi - cfi_adjust_cfa_offset (-4) - cfi_restore (esi) - popl %ebx - cfi_adjust_cfa_offset (-4) - cfi_restore (ebx) - - cmpl $-4095, %eax - jae SYSCALL_ERROR_LABEL -#else - movl $-ENOSYS, %eax - jmp SYSCALL_ERROR_LABEL -#endif - ret -PSEUDO_END (__call_sync_file_range) diff --git a/sysdeps/unix/sysv/linux/i386/pselect.c b/sysdeps/unix/sysv/linux/i386/pselect.c deleted file mode 100644 index 2646608..0000000 --- a/sysdeps/unix/sysv/linux/i386/pselect.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <sys/select.h> - -extern int __call_pselect6 (int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, const struct timespec *timeout, - void *data) attribute_hidden; - - -#define CALL_PSELECT6(nfds, readfds, writefds, exceptfds, timeout, data) \ - ({ int r = __call_pselect6 (nfds, readfds, writefds, exceptfds, timeout, \ - data); \ - if (r < 0 && r > -4096) \ - { \ - __set_errno (-r); \ - r = -1; \ - } \ - r; }) - -#include "../pselect.c" diff --git a/sysdeps/unix/sysv/linux/i386/sync_file_range.c b/sysdeps/unix/sysv/linux/i386/sync_file_range.c deleted file mode 100644 index 8ce0287..0000000 --- a/sysdeps/unix/sysv/linux/i386/sync_file_range.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Selective file content synch'ing. - Copyright (C) 2006-2015 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 - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <fcntl.h> -#include <sysdep-cancel.h> - - -extern int __call_sync_file_range (int fd, off64_t offset, off64_t nbytes, - unsigned int flags) - attribute_hidden; - - -int -sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) -{ - if (SINGLE_THREAD_P) - return __call_sync_file_range (fd, from, to, flags); - - int result; - int oldtype = LIBC_CANCEL_ASYNC (); - - result = __call_sync_file_range (fd, from, to, flags); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} |