summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sgi/hpc/zs.c20
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);
}