From f43ce12b47323f0555ae9dfdf2f9d443346a4952 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 3 May 2010 10:07:54 -0700 Subject: [PATCH] alpha-linux-user: Fix sigsuspend parameters. Alpha passes the signal set in a register, not by reference. Signed-off-by: Richard Henderson Signed-off-by: Aurelien Jarno --- linux-user/syscall.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e9e61c82cd..fb18b24d2b 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5088,10 +5088,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; -- 2.30.2