From 5772c041d2865e15fcd28754dda4a6bbc78d9c1f Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sun, 7 Sep 2003 02:08:25 +0000 Subject: Fix some more problems found by the ltp --- libc/sysdeps/linux/mips/pread_write.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'libc/sysdeps/linux/mips/pread_write.c') diff --git a/libc/sysdeps/linux/mips/pread_write.c b/libc/sysdeps/linux/mips/pread_write.c index a182ebefe..92735aec2 100644 --- a/libc/sysdeps/linux/mips/pread_write.c +++ b/libc/sysdeps/linux/mips/pread_write.c @@ -38,6 +38,7 @@ #include #include #include +#include #ifdef __NR_pread @@ -50,15 +51,16 @@ static inline _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf, ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) { - return(__syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR((off_t)0,offset))); + return(__syscall_pread(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset))); } weak_alias (__libc_pread, pread) #if defined __UCLIBC_HAS_LFS__ ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) { - return(__syscall_pread(fd, buf, count, 0, - __LONG_LONG_PAIR((off_t)(offset>>32),(off_t)(offset&0xffffffff)))); + uint32_t low = offset & 0xffffffff; + uint32_t high = offset >> 32; + return(__syscall_pread(fd, buf, count, __LONG_LONG_PAIR (high, low))); } weak_alias (__libc_pread64, pread64) #endif /* __UCLIBC_HAS_LFS__ */ @@ -78,15 +80,16 @@ static inline _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf, ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) { - return(__syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR((off_t)0,offset))); + return(__syscall_pwrite(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset))); } weak_alias (__libc_pwrite, pwrite) #if defined __UCLIBC_HAS_LFS__ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) { - return(__syscall_pwrite(fd, buf, count, 0, - __LONG_LONG_PAIR((off_t)(offset>>32),(off_t)(offset&0xffffffff)))); + uint32_t low = offset & 0xffffffff; + uint32_t high = offset >> 32; + return(__syscall_pwrite(fd, buf, count, __LONG_LONG_PAIR (high, low))); } weak_alias (__libc_pwrite64, pwrite64) #endif /* __UCLIBC_HAS_LFS__ */ -- cgit v1.2.3