qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] sh4 linux-user: Fix syscall pipe2() retval


From: takasi-y
Subject: [Qemu-devel] [PATCH] sh4 linux-user: Fix syscall pipe2() retval
Date: Thu, 18 Feb 2010 00:35:03 +0900 (JST)

On linux/sh4
 pipe() return values by r0:r1 as SH C calling convention.
 pipe2() return values on memory as traditional unix way.

Signed-off-by: Takashi YOSHII <address@hidden>
---
 linux-user/syscall.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9fb493f..034a2b0 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -969,10 +969,13 @@ static abi_long do_pipe(void *cpu_env, abi_ulong pipedes, 
int flags)
 #if defined(TARGET_MIPS)
     ((CPUMIPSState*)cpu_env)->active_tc.gpr[3] = host_pipe[1];
     ret = host_pipe[0];
-#elif defined(TARGET_SH4)
-    ((CPUSH4State*)cpu_env)->gregs[1] = host_pipe[1];
-    ret = host_pipe[0];
 #else
+#if defined(TARGET_SH4)
+    if (!flags) {
+        ((CPUSH4State*)cpu_env)->gregs[1] = host_pipe[1];
+        ret = host_pipe[0];
+    } else
+#endif
     if (put_user_s32(host_pipe[0], pipedes)
         || put_user_s32(host_pipe[1], pipedes + sizeof(host_pipe[0])))
         return -TARGET_EFAULT;
-- 
1.6.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]