summaryrefslogtreecommitdiff
path: root/sys/arch/sun2/dev
diff options
context:
space:
mode:
authorad <ad@NetBSD.org>2007-02-16 13:55:42 +0000
committerad <ad@NetBSD.org>2007-02-16 13:55:42 +0000
commit36bb413e0d5fee51fd7100e26170ce90ddf1240c (patch)
treea7802f9e6ddae6588802d9afd27b3b38d68a353c /sys/arch/sun2/dev
parentc9962e639eceb016b9ad384e4fe548ccd5e9add8 (diff)
More spllowersoftclock() fallout.
Diffstat (limited to 'sys/arch/sun2/dev')
-rw-r--r--sys/arch/sun2/dev/kd.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sys/arch/sun2/dev/kd.c b/sys/arch/sun2/dev/kd.c
index 9acc5f4289e..fa66747d1b9 100644
--- a/sys/arch/sun2/dev/kd.c
+++ b/sys/arch/sun2/dev/kd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: kd.c,v 1.14 2006/10/01 18:56:22 elad Exp $ */
+/* $NetBSD: kd.c,v 1.15 2007/02/16 13:55:42 ad Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kd.c,v 1.14 2006/10/01 18:56:22 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kd.c,v 1.15 2007/02/16 13:55:42 ad Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -359,9 +359,10 @@ static void
kdstart(struct tty *tp)
{
struct clist *cl;
- int s;
+ int s1, s2;
- s = spltty();
+ s1 = splsoftclock();
+ s2 = spltty();
if (tp->t_state & (TS_BUSY|TS_TTSTOP|TS_TIMEOUT))
goto out;
@@ -369,11 +370,11 @@ kdstart(struct tty *tp)
if (cl->c_cc) {
if (kd_is_console) {
tp->t_state |= TS_BUSY;
- if (is_spl0(s)) {
+ if (is_spl0(s1)) {
/* called at level zero - update screen now. */
- (void) spllowersoftclock();
+ splx(s2);
kd_putfb(tp);
- (void) spltty();
+ s2 = spltty();
tp->t_state &= ~TS_BUSY;
} else {
/* called at interrupt level - do it later */
@@ -398,7 +399,8 @@ kdstart(struct tty *tp)
selwakeup(&tp->t_wsel);
}
out:
- splx(s);
+ splx(s2);
+ splx(s1);
}
/*