From 2b1525e1b54ee4ee0fbcc43adb8138b6b80de893 Mon Sep 17 00:00:00 2001 From: Andrew Gallatin Date: Wed, 21 Feb 2001 18:48:06 +0000 Subject: Fix the osfulator in the face of Doug's optimized system call return path. We now need to set [FRAME_FLAGS] to zero to force a full restore of state after a signal. reported by: naddy@mips.inka.de (Christian Weisgerber) --- sys/alpha/osf1/osf1_signal.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/alpha/osf1/osf1_signal.c b/sys/alpha/osf1/osf1_signal.c index 83b958c1920c..7b533817d863 100644 --- a/sys/alpha/osf1/osf1_signal.c +++ b/sys/alpha/osf1/osf1_signal.c @@ -672,6 +672,7 @@ osf1_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) frame->tf_regs[FRAME_A1] = code; frame->tf_regs[FRAME_A2] = (u_int64_t)sip; frame->tf_regs[FRAME_A3] = (u_int64_t)catcher; /* a3 is pv */ + frame->tf_regs[FRAME_FLAGS] = 0; /* full restore */ alpha_pal_wrusp((unsigned long)sip); } @@ -726,6 +727,7 @@ osf1_sigreturn(struct proc *p, p->p_md.md_tf->tf_regs[FRAME_PC] = ksc.sc_pc; p->p_md.md_tf->tf_regs[FRAME_PS] = (ksc.sc_ps | ALPHA_PSL_USERSET) & ~ALPHA_PSL_USERCLR; + p->p_md.md_tf->tf_regs[FRAME_FLAGS] = 0; /* full restore */ alpha_pal_wrusp(ksc.sc_regs[R_SP]); -- cgit v1.3