diff options
author | Mike Frysinger <vapier@gentoo.org> | 2013-04-01 05:53:38 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2013-04-01 05:58:03 -0400 |
commit | 564a95241f8468145ff85998ef9173c46aed7636 (patch) | |
tree | d5f70f34fd006802eba3f27536cc93f233018cf2 /libc/sysdeps/linux/sh | |
parent | 81c9eaafecd4b3d53ef09931fe2c65de1cda98ca (diff) |
linux: pread/write: convert to SYSCALL_ALIGN_64BIT
The pread64/write64 syscalls have the 64bit register align issue for
all arches. Use this new define so we can merge the powerc/xtensa
versions back into the common code.
SuperH is funky and also allows us to do this.
We should be able to merge the mips version too, but that'll require
someone to take a closer look as the current stuff doesn't look quite
right.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'libc/sysdeps/linux/sh')
-rw-r--r-- | libc/sysdeps/linux/sh/pread_write.c | 41 |
1 files changed, 3 insertions, 38 deletions
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" |