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:
parent
41b1e61f51
commit
597c0212a7
@ -969,10 +969,13 @@ static abi_long do_pipe(void *cpu_env, abi_ulong pipedes, int flags)
|
|||||||
#if defined(TARGET_MIPS)
|
#if defined(TARGET_MIPS)
|
||||||
((CPUMIPSState*)cpu_env)->active_tc.gpr[3] = host_pipe[1];
|
((CPUMIPSState*)cpu_env)->active_tc.gpr[3] = host_pipe[1];
|
||||||
ret = host_pipe[0];
|
ret = host_pipe[0];
|
||||||
#elif defined(TARGET_SH4)
|
|
||||||
((CPUSH4State*)cpu_env)->gregs[1] = host_pipe[1];
|
|
||||||
ret = host_pipe[0];
|
|
||||||
#else
|
#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)
|
if (put_user_s32(host_pipe[0], pipedes)
|
||||||
|| put_user_s32(host_pipe[1], pipedes + sizeof(host_pipe[0])))
|
|| put_user_s32(host_pipe[1], pipedes + sizeof(host_pipe[0])))
|
||||||
return -TARGET_EFAULT;
|
return -TARGET_EFAULT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user