mirror of https://github.com/xqemu/xqemu.git
alpha-linux-user: Fix sigsuspend parameters.
Alpha passes the signal set in a register, not by reference. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
9231733a82
commit
f43ce12b47
|
@ -5088,10 +5088,15 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
case TARGET_NR_sigsuspend:
|
case TARGET_NR_sigsuspend:
|
||||||
{
|
{
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
|
#if defined(TARGET_ALPHA)
|
||||||
|
abi_ulong mask = arg1;
|
||||||
|
target_to_host_old_sigset(&set, &mask);
|
||||||
|
#else
|
||||||
if (!(p = lock_user(VERIFY_READ, arg1, sizeof(target_sigset_t), 1)))
|
if (!(p = lock_user(VERIFY_READ, arg1, sizeof(target_sigset_t), 1)))
|
||||||
goto efault;
|
goto efault;
|
||||||
target_to_host_old_sigset(&set, p);
|
target_to_host_old_sigset(&set, p);
|
||||||
unlock_user(p, arg1, 0);
|
unlock_user(p, arg1, 0);
|
||||||
|
#endif
|
||||||
ret = get_errno(sigsuspend(&set));
|
ret = get_errno(sigsuspend(&set));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue