Commit 24c35a50 authored by Peter Maydell's avatar Peter Maydell Committed by Blue Swirl
Browse files

linux-user: Merge pread/pwrite into pread64/pwrite64



The Linux syscalls underlying pread() and pwrite() take a 64 bit
offset on all architectures, even if some of them name the syscall
"pread/pwrite" rather than "pread64/pwrite64" for historical reasons.
So move the four QEMU target architectures (arm, i386, sparc,
unicore32) which were defining TARGET_NR_pread/pwrite to define
TARGET_NR_pread64/pwrite64 instead, and drop the TARGET_NR_pread/pwrite
implementation code completely.

(Based on examination of the kernel sources for the four architectures
this patch affects.)

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent f877d09e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -182,8 +182,8 @@
#define TARGET_NR_rt_sigtimedwait		(177)
#define TARGET_NR_rt_sigqueueinfo		(178)
#define TARGET_NR_rt_sigsuspend		(179)
#define TARGET_NR_pread			(180)
#define TARGET_NR_pwrite			(181)
#define TARGET_NR_pread64                       (180)
#define TARGET_NR_pwrite64                      (181)
#define TARGET_NR_chown			(182)
#define TARGET_NR_getcwd			(183)
#define TARGET_NR_capget			(184)
+2 −2
Original line number Diff line number Diff line
@@ -182,8 +182,8 @@
#define TARGET_NR_rt_sigtimedwait	177
#define TARGET_NR_rt_sigqueueinfo	178
#define TARGET_NR_rt_sigsuspend	179
#define TARGET_NR_pread		180
#define TARGET_NR_pwrite		181
#define TARGET_NR_pread64               180
#define TARGET_NR_pwrite64              181
#define TARGET_NR_chown		182
#define TARGET_NR_getcwd		183
#define TARGET_NR_capget		184
+2 −2
Original line number Diff line number Diff line
@@ -62,8 +62,8 @@
#define TARGET_NR_getpagesize         64 /* Common                                      */
#define TARGET_NR_msync               65 /* Common in newer 1.3.x revs...               */
#define TARGET_NR_vfork               66 /* Common                                      */
#define TARGET_NR_pread               67 /* Linux Specific                              */
#define TARGET_NR_pwrite              68 /* Linux Specific                              */
#define TARGET_NR_pread64             67 /* Linux Specific */
#define TARGET_NR_pwrite64            68 /* Linux Specific */
#define TARGET_NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */
#define TARGET_NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */
#define TARGET_NR_mmap                71 /* Common                                      */
+0 −6
Original line number Diff line number Diff line
@@ -972,9 +972,6 @@
#ifdef TARGET_NR_prctl
{ TARGET_NR_prctl, "prctl" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_pread
{ TARGET_NR_pread, "pread" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_pread64
{ TARGET_NR_pread64, "pread64" , NULL, NULL, NULL },
#endif
@@ -993,9 +990,6 @@
#ifdef TARGET_NR_putpmsg
{ TARGET_NR_putpmsg, "putpmsg" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_pwrite
{ TARGET_NR_pwrite, "pwrite" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_pwrite64
{ TARGET_NR_pwrite64, "pwrite64" , NULL, NULL, NULL },
#endif
+0 −18
Original line number Diff line number Diff line
@@ -7449,24 +7449,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
        goto unimplemented;
#endif
#endif
#ifdef TARGET_NR_pread
    case TARGET_NR_pread:
        if (regpairs_aligned(cpu_env))
            arg4 = arg5;
        if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
            goto efault;
        ret = get_errno(pread(arg1, p, arg3, arg4));
        unlock_user(p, arg2, ret);
        break;
    case TARGET_NR_pwrite:
        if (regpairs_aligned(cpu_env))
            arg4 = arg5;
        if (!(p = lock_user(VERIFY_READ, arg2, arg3, 1)))
            goto efault;
        ret = get_errno(pwrite(arg1, p, arg3, arg4));
        unlock_user(p, arg2, 0);
        break;
#endif
#ifdef TARGET_NR_pread64
    case TARGET_NR_pread64:
        if (regpairs_aligned(cpu_env)) {
Loading