From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KgL5X-0004CA-FD for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KgL5T-00049B-Sj for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:33 -0400 Received: from [199.232.76.173] (port=56921 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgL5T-00048t-4P for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:31 -0400 Received: from ey-out-1920.google.com ([74.125.78.148]:7979) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KgL5S-0005aE-Cx for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:30 -0400 Received: by ey-out-1920.google.com with SMTP id 4so1516425eyk.4 for ; Thu, 18 Sep 2008 08:06:30 -0700 (PDT) From: "Kirill A. Shutemov" Date: Thu, 18 Sep 2008 18:07:02 +0300 Message-Id: <1221750426-14863-4-git-send-email-kirill@shutemov.name> In-Reply-To: <1221750426-14863-3-git-send-email-kirill@shutemov.name> References: <1221750426-14863-1-git-send-email-kirill@shutemov.name> <1221750426-14863-2-git-send-email-kirill@shutemov.name> <1221750426-14863-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 ba7cde1..88b44b8 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5047,12 +5047,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