linux-user: Fix syscall pipe2() retval on sh4

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 <takasi-y@ops.dti.ne.jp>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
takasi-y@ops.dti.ne.jp 2010-02-18 00:35:03 +09:00 committed by Aurelien Jarno
parent 41b1e61f51
commit 597c0212a7
1 changed files with 6 additions and 3 deletions

View File

@ -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;