summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/sendfile64.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/sendfile64.c')
-rw-r--r--libc/sysdeps/linux/common/sendfile64.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/common/sendfile64.c b/libc/sysdeps/linux/common/sendfile64.c
index 17ba803ea..3c83c81ad 100644
--- a/libc/sysdeps/linux/common/sendfile64.c
+++ b/libc/sysdeps/linux/common/sendfile64.c
@@ -20,27 +20,29 @@
#include <sys/sendfile.h>
#include <sys/syscall.h>
+#if defined __NR_sendfile64
-#if __WORDSIZE == 64
+#if __WORDSIZE == 64 || (defined(__powerpc__) && defined (__UCLIBC_HAS_LFS__))
/* For a 64 bit machine, life is simple... */
_syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count)
#elif __WORDSIZE == 32
#if defined __UCLIBC_HAS_LFS__
-#if defined __NR_sendfile64
_syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count)
+#endif /* __UCLIBC_HAS_LFS__ */
+
+#else /* __WORDSIZE */
+#error Your machine is not 64 bit or 32 bit, I am dazed and confused.
+#endif /* __WORDSIZE */
+
+
+#else /* ! defined __NR_sendfile64 */
-#else
ssize_t sendfile64 (int out_fd, int in_fd, __off64_t *offset, size_t count)
{
__set_errno (ENOSYS);
return -1;
}
-#endif
-
-#endif /* __UCLIBC_HAS_LFS__ */
-#else /* __WORDSIZE */
-#error Your machine is not 64 bit or 32 bit, I am dazed and confused.
#endif