X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fia64%2Fkernel%2Fsignal.c;h=135cb55b1b9f261bf5ae9155f4b4581c1e067cc4;hb=3ec04f3d2903fdf6d9849a8633af59b8628164a5;hp=62fcc7bd43ea0aa5553e0e0c84c8e3d680d2e0d6;hpb=8d40237c730b8be87c1b80a5d96b9c603fefa829;p=linux-2.6.git diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index 62fcc7bd4..135cb55b1 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c @@ -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;