Patchwork [6/7] alpha-linux-user: Fix sigsuspend parameters.

login
register
mail settings
Submitter Richard Henderson
Date May 3, 2010, 5:07 p.m.
Message ID <1272906475-14480-7-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/51518/
State New
Headers show

Comments

Richard Henderson - May 3, 2010, 5:07 p.m.
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(-)

Patch

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;