diff options
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/common/pread_write.c | 22 | ||||
-rw-r--r-- | libc/sysdeps/linux/powerpc/Makefile.arch | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/powerpc/pread_write.c | 47 | ||||
-rw-r--r-- | libc/sysdeps/linux/sh/pread_write.c | 41 | ||||
-rw-r--r-- | libc/sysdeps/linux/xtensa/Makefile.arch | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/xtensa/pread_write.c | 46 |
6 files changed, 23 insertions, 137 deletions
diff --git a/libc/sysdeps/linux/common/pread_write.c b/libc/sysdeps/linux/common/pread_write.c index 25899d321..fa22f82b1 100644 --- a/libc/sysdeps/linux/common/pread_write.c +++ b/libc/sysdeps/linux/common/pread_write.c @@ -31,20 +31,34 @@ #ifndef MY_PREAD # ifdef __NR_pread # define __NR___syscall_pread __NR_pread +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) +static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf, + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset)) +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset)) +# else static _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf, size_t, count, off_t, offset_hi, off_t, offset_lo) -# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF_HI_LO(offset)) -# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF64_HI_LO(offset)) +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF_HI_LO(offset)) +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF64_HI_LO(offset)) +# endif # endif #endif #ifndef MY_PWRITE # ifdef __NR_pwrite # define __NR___syscall_pwrite __NR_pwrite +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) +static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf, + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset)) +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset)) +# else static _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf, size_t, count, off_t, offset_hi, off_t, offset_lo) -# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF_HI_LO(offset)) -# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF64_HI_LO(offset)) +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF_HI_LO(offset)) +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF64_HI_LO(offset)) +# endif # endif #endif diff --git a/libc/sysdeps/linux/powerpc/Makefile.arch b/libc/sysdeps/linux/powerpc/Makefile.arch index 7830ce3a9..4fbcb1126 100644 --- a/libc/sysdeps/linux/powerpc/Makefile.arch +++ b/libc/sysdeps/linux/powerpc/Makefile.arch @@ -5,7 +5,7 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC-y := __syscall_error.c pread_write.c ioctl.c +CSRC-y := __syscall_error.c ioctl.c SSRC-y := \ __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ diff --git a/libc/sysdeps/linux/powerpc/pread_write.c b/libc/sysdeps/linux/powerpc/pread_write.c deleted file mode 100644 index 5cb338622..000000000 --- a/libc/sysdeps/linux/powerpc/pread_write.c +++ /dev/null @@ -1,47 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include <sys/syscall.h> -#include <unistd.h> -#include <endian.h> - -#ifdef __NR_pread64 -# ifdef __NR_pread -# error "__NR_pread and __NR_pread64 both defined???" -# endif -# define __NR_pread __NR_pread64 -#endif - -#ifdef __NR_pread -# define __NR___syscall_pread __NR_pread -static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PREAD(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PREAD64(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - -#ifdef __NR_pwrite64 -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - -#ifdef __NR_pwrite -# define __NR___syscall_pwrite __NR_pwrite - -static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PWRITE(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PWRITE64(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - -#include "../common/pread_write.c" diff --git a/libc/sysdeps/linux/sh/pread_write.c b/libc/sysdeps/linux/sh/pread_write.c index f4453a604..5877f686f 100644 --- a/libc/sysdeps/linux/sh/pread_write.c +++ b/libc/sysdeps/linux/sh/pread_write.c @@ -5,42 +5,7 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#include <sys/syscall.h> -#include <unistd.h> -#include <endian.h> - -#ifdef __NR_pread64 -# ifdef __NR_pread -# error "__NR_pread and __NR_pread64 both defined???" -# endif -# define __NR_pread __NR_pread64 -#endif - -#ifdef __NR_pread -# define __NR___syscall_pread __NR_pread -static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PREAD(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PREAD64(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - -#ifdef __NR_pwrite64 -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - -#ifdef __NR_pwrite -# define __NR___syscall_pwrite __NR_pwrite -static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PWRITE(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PWRITE64(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - +/* SuperH doesn't have this alignment issue. It just decided to copy + * the syscall interface from another arch for no good reason. */ +#define __UCLIBC_SYSCALL_ALIGN_64BIT__ #include "../common/pread_write.c" diff --git a/libc/sysdeps/linux/xtensa/Makefile.arch b/libc/sysdeps/linux/xtensa/Makefile.arch index eab82ec93..277a1e325 100644 --- a/libc/sysdeps/linux/xtensa/Makefile.arch +++ b/libc/sysdeps/linux/xtensa/Makefile.arch @@ -5,7 +5,7 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC-y := brk.c fork.c pread_write.c sigaction.c __syscall_error.c +CSRC-y := brk.c fork.c sigaction.c __syscall_error.c SSRC-y := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S \ sigrestorer.S syscall.S mmap.S windowspill.S __longjmp.S vfork.S diff --git a/libc/sysdeps/linux/xtensa/pread_write.c b/libc/sysdeps/linux/xtensa/pread_write.c deleted file mode 100644 index f4453a604..000000000 --- a/libc/sysdeps/linux/xtensa/pread_write.c +++ /dev/null @@ -1,46 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include <sys/syscall.h> -#include <unistd.h> -#include <endian.h> - -#ifdef __NR_pread64 -# ifdef __NR_pread -# error "__NR_pread and __NR_pread64 both defined???" -# endif -# define __NR_pread __NR_pread64 -#endif - -#ifdef __NR_pread -# define __NR___syscall_pread __NR_pread -static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PREAD(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PREAD64(fd, buf, count, offset) \ - __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - -#ifdef __NR_pwrite64 -# ifdef __NR_pwrite -# error "__NR_pwrite and __NR_pwrite64 both defined???" -# endif -# define __NR_pwrite __NR_pwrite64 -#endif - -#ifdef __NR_pwrite -# define __NR___syscall_pwrite __NR_pwrite -static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf, - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo) -# define MY_PWRITE(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset)) -# define MY_PWRITE64(fd, buf, count, offset) \ - __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset)) -#endif - -#include "../common/pread_write.c" |