This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / ia64 / kernel / signal.c
index 62fcc7b..135cb55 100644 (file)
@@ -290,10 +290,12 @@ setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratc
 
        if (on_sig_stack((unsigned long) sc))
                flags |= IA64_SC_FLAG_ONSTACK;
-       if ((ifs & (1UL << 63)) == 0)
-               /* if cr_ifs doesn't have the valid bit set, we got here through a syscall */
+       if ((ifs & (1UL << 63)) == 0) {
+               /* if cr_ifs isn't valid, we got here through a syscall */
                flags |= IA64_SC_FLAG_IN_SYSCALL;
-       cfm = ifs & ((1UL << 38) - 1);
+               cfm = scr->ar_pfs & ((1UL << 38) - 1);
+       } else
+               cfm = ifs & ((1UL << 38) - 1);
        ia64_flush_fph(current);
        if ((current->thread.flags & IA64_THREAD_FPH_VALID)) {
                flags |= IA64_SC_FLAG_FPH_VALID;