diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sgi/hpc/zs.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/sys/arch/sgi/hpc/zs.c b/sys/arch/sgi/hpc/zs.c index 63150d3867b..9919c87bccc 100644 --- a/sys/arch/sgi/hpc/zs.c +++ b/sys/arch/sgi/hpc/zs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: zs.c,v 1.2 2012/03/31 20:20:32 miod Exp $ */ +/* $OpenBSD: zs.c,v 1.3 2012/04/01 16:37:08 miod Exp $ */ /* $NetBSD: zs.c,v 1.37 2011/02/20 07:59:50 matt Exp $ */ /*- @@ -84,7 +84,7 @@ int zs_major = 19; #define ZSHARD_PRI 64 /* SGI shouldn't need ZS_DELAY() as recovery time is done in hardware? */ -#define ZS_DELAY() delay(3) +#define ZS_DELAY() delay(5) /* The layout of this is hardware-dependent (padding, order). */ struct zschan { @@ -326,17 +326,15 @@ int zshard(void *arg) { struct zsc_softc *zsc = arg; - int rr3, rval; + int rval; - rval = 0; - while ((rr3 = zsc_intr_hard(zsc))) { - rval |= rr3; + rval = zsc_intr_hard(zsc); + if (rval != 0) { + if (zsc->zsc_cs[0]->cs_softreq || + zsc->zsc_cs[1]->cs_softreq) + softintr_schedule(zsc->sc_si); } - if (zsc->zsc_cs[0]->cs_softreq || - zsc->zsc_cs[1]->cs_softreq) - softintr_schedule(zsc->sc_si); - return rval; } @@ -351,7 +349,7 @@ zssoft(void *arg) /* Make sure we call the tty layer at spltty. */ s = spltty(); - (void) zsc_intr_soft(zsc); + (void)zsc_intr_soft(zsc); splx(s); } |