Message ID | 1272906475-14480-7-git-send-email-rth@twiddle.net |
---|---|
State | New |
Headers | show |
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8a6cbaf..899b76f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5072,10 +5072,15 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, case TARGET_NR_sigsuspend: { 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))) goto efault; target_to_host_old_sigset(&set, p); unlock_user(p, arg1, 0); +#endif ret = get_errno(sigsuspend(&set)); } break;
Alpha passes the signal set in a register, not by reference. Signed-off-by: Richard Henderson <rth@twiddle.net> --- linux-user/syscall.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)