#define PDP_ENDIAN __PDP_ENDIAN
#define BYTE_ORDER __BYTE_ORDER
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) LO, HI
+#elif __BYTE_ORDER == __BIG_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) HI, LO
+#endif
+
#endif /* _ENDIAN_H */
siglongjmp.o \
sigaction.o sigpending.o sigprocmask.o sigsuspend.o \
pselect.o ppoll.o \
+ pread.o pwrite.o \
brk.o sbrk.o malloc.o realloc.o zalloc.o calloc.o \
mmap.o shm_open.o shm_unlink.o \
memcpy.o memcmp.o memset.o memccpy.o memmem.o memswap.o \
int readv(int, const struct iovec *, int);
int writev(int, const struct iovec *, int);
int ftruncate64,ftruncate::ftruncate(int, off_t);
-ssize_t pread64,pread::pread(int, void *, size_t, off_t);
-ssize_t pwrite64,pwrite::pwrite(int, void *, size_t, off_t);
+<parisc> ssize_t pread64,pread::__pread(int, void *, size_t, off_t);
+<parisc> ssize_t pwrite64,pwrite::__pwrite(int, void *, size_t, off_t);
+<!parisc> ssize_t pread64,pread::pread(int, void *, size_t, off_t);
+<!parisc> ssize_t pwrite64,pwrite::pwrite(int, void *, size_t, off_t);
int sync_file_range,fdatasync,fsync::sync_file_range(int, off_t, off_t, unsigned int);
<?> int splice(int, off_t *, int, off_t *, size_t, unsigned int);
<?> int tee(int, int, size_t, unsigned int);
--- /dev/null
+/*
+ * pread.c
+ *
+ * Some architectures need to wrap the system call
+ */
+
+#include <endian.h>
+#include <sys/syscall.h>
+
+#if defined(__hppa__)
+
+#if _BITSIZE == 32
+extern size_t __pread(int, void *, size_t, unsigned int, unsigned int);
+#else
+extern size_t __pread(int, void *, size_t, off_t);
+#endif
+
+size_t pread(int fd, void *buf, size_t count, off_t offset)
+{
+#if _BITSIZE == 32
+ unsigned int hi = offset >> 32;
+ unsigned int lo = (unsigned int) offset;
+ return __pread(fd, buf, count, __LONG_LONG_PAIR(hi, lo));
+#else
+ return __pread(fd, buf, count, offset);
+#endif
+}
+
+#endif
--- /dev/null
+/*
+ * pwrite.c
+ *
+ * Some architectures need to wrap the system call
+ */
+
+#include <endian.h>
+#include <sys/syscall.h>
+
+#if defined(__hppa__)
+
+#if _BITSIZE == 32
+extern ssize_t __pwrite(int, const void *, size_t, unsigned int, unsigned int);
+#else
+extern ssize_t __pwrite(int, const void *, size_t, off_t);
+#endif
+
+size_t pwrite(int fd, void *buf, size_t count, off_t offset)
+{
+#if _BITSIZE == 32
+ unsigned int hi = offset >> 32;
+ unsigned int lo = (unsigned int) offset;
+ return __pwrite(fd, buf, count, __LONG_LONG_PAIR(hi, lo));
+#else
+ return __pwrite(fd, buf, count, offset);
+#endif
+}
+
+#endif