From 99fa88a2ea75afd8033401c50450f6b64ef823d1 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Sun, 25 May 1980 02:43:47 -0800 Subject: [PATCH] new sig stuff SCCS-vsn: sys/vax/vax/machdep.c 3.7 SCCS-vsn: sys/kern/kern_proc.c 3.6 --- usr/src/sys/kern/kern_proc.c | 17 ++++++++--------- usr/src/sys/vax/vax/machdep.c | 7 +++---- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/usr/src/sys/kern/kern_proc.c b/usr/src/sys/kern/kern_proc.c index e08ed2f63e..4b14300854 100644 --- a/usr/src/sys/kern/kern_proc.c +++ b/usr/src/sys/kern/kern_proc.c @@ -1,4 +1,4 @@ -/* kern_proc.c 3.5 %H% */ +/* kern_proc.c 3.6 %H% */ #include "../h/param.h" #include "../h/systm.h" @@ -356,14 +356,10 @@ setregs() default: /* - * Normal or deferring catch. - * If deferred, now hold it, else - * revert to default. + * Normal or deferring catch; revert to default. */ - if (SIGISDEFER(*rp)) - *rp = SIG_HOLD; - else - *rp = SIG_DFL; + (void) spl6(); + *rp = SIG_DFL; if ((int)*rp & 1) u.u_procp->p_siga0 |= sigmask; else @@ -372,6 +368,7 @@ setregs() u.u_procp->p_siga1 |= sigmask; else u.u_procp->p_siga1 &= ~sigmask; + (void) spl0(); continue; } } @@ -437,7 +434,7 @@ exit(rv) if ((int)SIG_IGN & 2) p->p_siga1 = ~0; else - p->p_siga0 = 0; + p->p_siga1 = 0; (void) spl0(); rate.v_pgin -= p->p_aveflt; p->p_aveflt = 0; @@ -581,10 +578,12 @@ loop: u.u_r.r_val1 = 0; return; } +/* if (setjmp(u.u_qsav)) { u.u_eosys = RESTARTSYS; return; } +*/ sleep((caddr_t)u.u_procp, PWAIT); goto loop; } diff --git a/usr/src/sys/vax/vax/machdep.c b/usr/src/sys/vax/vax/machdep.c index abd1f4eecf..d1ecaefa27 100644 --- a/usr/src/sys/vax/vax/machdep.c +++ b/usr/src/sys/vax/vax/machdep.c @@ -1,4 +1,4 @@ -/* machdep.c 3.6 %H% */ +/* machdep.c 3.7 %H% */ #include "../h/param.h" #include "../h/systm.h" @@ -13,7 +13,7 @@ #include "../h/proc.h" #include "../h/psl.h" -char version[] = "VM/UNIX (Berkeley Version 3.6) %H% \n"; +char version[] = "VM/UNIX (Berkeley Version 3.7) %H% \n"; int icode[] = { 0x9f19af9f, /* pushab [&"init.vm",0]; pushab */ @@ -177,7 +177,6 @@ dorti() register int sp; register int reg, mask; extern int ipcreg[]; - int n; (void) copyin((caddr_t)u.u_ar0[FP], (caddr_t)&frame, sizeof (frame)); sp = u.u_ar0[FP] + sizeof (frame); @@ -195,7 +194,7 @@ dorti() sp += frame.spa; u.u_ar0[PS] = (u.u_ar0[PS] & 0xffff0000) | frame.psw; if (frame.s) - sp += 4 + (fuword(sp) & 0xff) << 2; + sp += 4 + 4 * (fuword(sp) & 0xff); /* phew, now the rei */ u.u_ar0[PC] = fuword(sp); sp += 4; -- 2.20.1