From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KchKr-00080J-9I for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KchKm-0007x1-PV for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:19 -0400 Received: from [199.232.76.173] (port=39230 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KchKm-0007wx-D3 for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:16 -0400 Received: from gv-out-0910.google.com ([216.239.58.191]:33180) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KchKl-0007FW-Sx for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:16 -0400 Received: by gv-out-0910.google.com with SMTP id n8so222137gve.36 for ; Mon, 08 Sep 2008 07:03:15 -0700 (PDT) From: "Kirill A. Shutemov" Date: Mon, 8 Sep 2008 17:03:32 +0300 Message-Id: <1220882616-18735-4-git-send-email-kirill@shutemov.name> In-Reply-To: <1220882616-18735-3-git-send-email-kirill@shutemov.name> References: <1220882616-18735-1-git-send-email-kirill@shutemov.name> <1220882616-18735-2-git-send-email-kirill@shutemov.name> <1220882616-18735-3-git-send-email-kirill@shutemov.name> Subject: [Qemu-devel] [PATCH] Fix pread() and pwrite() syscall on ARM EABI Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: "Kirill A. Shutemov" pread() and pwrite() have differences with arguments on ARM EABI and OABI. Please, see arch/arm/kernel/entry-common.S in Linux kernel source for additional information. Signed-off-by: Kirill A. Shutemov --- linux-user/syscall.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8112a56..88954eb 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5042,12 +5042,24 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, #endif #ifdef TARGET_NR_pread case TARGET_NR_pread: +#ifdef TARGET_ARM + if (((CPUARMState *)cpu_env)->eabi) + { + arg4 = arg5; + } +#endif 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: +#ifdef TARGET_ARM + if (((CPUARMState *)cpu_env)->eabi) + { + arg4 = arg5; + } +#endif if (!(p = lock_user(VERIFY_READ, arg2, arg3, 1))) goto efault; ret = get_errno(pwrite(arg1, p, arg3, arg4)); -- 1.5.6.5.GIT