diff options
author | Richard Henderson <rth@twiddle.net> | 2010-05-03 10:07:54 -0700 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2010-05-21 16:22:21 +0000 |
commit | f43ce12b47323f0555ae9dfdf2f9d443346a4952 (patch) | |
tree | b300c6b1059fda5d0f0e209c377caad91fc64a09 | |
parent | 9231733a82cfced41edc4d859c1327f7a7ae8a59 (diff) |
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>
-rw-r--r-- | linux-user/syscall.c | 5 |
1 files changed, 5 insertions, 0 deletions
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; |