summaryrefslogtreecommitdiff
path: root/sys/arch/sparc/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/sparc/dev')
-rw-r--r--sys/arch/sparc/dev/amd7930.c38
-rw-r--r--sys/arch/sparc/dev/amd7930var.h2
-rw-r--r--sys/arch/sparc/dev/cgsix.c19
-rw-r--r--sys/arch/sparc/dev/dma.c4
-rw-r--r--sys/arch/sparc/dev/esp.c4
-rw-r--r--sys/arch/sparc/dev/if_le.c19
-rw-r--r--sys/arch/sparc/dev/isp_sbus.c31
-rw-r--r--sys/arch/sparc/dev/kbd.c27
-rw-r--r--sys/arch/sparc/dev/sbusreg.h15
-rw-r--r--sys/arch/sparc/dev/si.c4
-rw-r--r--sys/arch/sparc/dev/zs.c18
11 files changed, 124 insertions, 57 deletions
diff --git a/sys/arch/sparc/dev/amd7930.c b/sys/arch/sparc/dev/amd7930.c
index 998e89f5d1f..f884efed46d 100644
--- a/sys/arch/sparc/dev/amd7930.c
+++ b/sys/arch/sparc/dev/amd7930.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: amd7930.c,v 1.9 1997/08/08 08:24:37 downsj Exp $ */
-/* $NetBSD: amd7930.c,v 1.10 1996/03/31 22:38:29 pk Exp $ */
+/* $OpenBSD: amd7930.c,v 1.10 1997/09/17 06:47:06 downsj Exp $ */
+/* $NetBSD: amd7930.c,v 1.30 1997/08/27 22:42:23 augustss Exp $ */
/*
* Copyright (c) 1995 Rolf Grossmann
@@ -50,6 +50,8 @@
#include <dev/ic/am7930reg.h>
#include <sparc/dev/amd7930var.h>
+#define AUDIO_ROM_NAME "audio"
+
#ifdef AUDIO_DEBUG
extern void Dprintf __P((const char *, ...));
@@ -84,16 +86,25 @@ struct amd7930_softc {
/* sc_au is special in that the hardware interrupt handler uses it */
struct auio sc_au; /* recv and xmit buffers, etc */
-#define sc_intrcnt sc_au.au_intrcnt
+#define sc_intrcnt sc_au.au_intrcnt /* statistics */
};
/* interrupt interfaces */
#ifdef AUDIO_C_HANDLER
int amd7930hwintr __P((void *));
+#if defined(SUN4M)
+#define AUDIO_SET_SWINTR do { \
+ if (CPU_ISSUN4M) \
+ raise(0, 4); \
+ else \
+ ienab_bis(IE_L4); \
+} while(0);
+#else
#define AUDIO_SET_SWINTR ienab_bis(IE_L4)
+#endif /* defined(SUN4M) */
#else
struct auio *auiop;
-#endif
+#endif /* AUDIO_C_HANDLER */
int amd7930swintr __P((void *));
/* forward declarations */
@@ -104,18 +115,18 @@ static void init_amd __P((volatile struct amd7930 *));
void amd7930attach __P((struct device *, struct device *, void *));
int amd7930match __P((struct device *, void *, void *));
-struct cfattach audio_ca = {
+struct cfattach audioamd_ca = {
sizeof(struct amd7930_softc), amd7930match, amd7930attach
};
-struct cfdriver audio_cd = {
- NULL, "audio", DV_DULL
+struct cfdriver audioamd_cd = {
+ NULL, "audioamd", DV_DULL
};
struct audio_device amd7930_device = {
"amd7930",
"x",
- "audio"
+ "audioamd"
};
/* Write 16 bits of data from variable v to the data port of the audio chip */
@@ -130,7 +141,7 @@ struct audio_device amd7930_device = {
* -18 to 0dB in .16dB steps then 0 to 12dB in .08dB steps.
*/
static const u_short gx_coeff[256] = {
- 0x9008, 0x8b7c, 0x8b51, 0x8b45, 0x8b42, 0x8b3b, 0x8b36, 0x8b33,
+ 0x9008, 0x8e7c, 0x8e51, 0x8e45, 0x8d42, 0x8d3b, 0x8c36, 0x8c33,
0x8b32, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b25, 0x8b23, 0x8b22, 0x8b22,
0x9122, 0x8b1a, 0x8aa3, 0x8aa3, 0x8b1c, 0x8aa6, 0x912d, 0x912b,
0x8aab, 0x8b12, 0x8aaa, 0x8ab2, 0x9132, 0x8ab4, 0x913c, 0x8abb,
@@ -274,13 +285,12 @@ amd7930match(parent, vcf, aux)
struct device *parent;
void *vcf, *aux;
{
- struct cfdata *cf = vcf;
register struct confargs *ca = aux;
register struct romaux *ra = &ca->ca_ra;
if (CPU_ISSUN4)
return (0);
- return (strcmp(cf->cf_driver->cd_name, ra->ra_name) == 0);
+ return (strcmp(AUDIO_ROM_NAME, ra->ra_name) == 0);
}
/*
@@ -366,9 +376,9 @@ amd7930_open(dev, flags)
DPRINTF(("sa_open: unit %d\n",unit));
- if (unit >= audio_cd.cd_ndevs)
+ if (unit >= audioamd_cd.cd_ndevs)
return (ENODEV);
- if ((sc = audio_cd.cd_devs[unit]) == NULL)
+ if ((sc = audioamd_cd.cd_devs[unit]) == NULL)
return (ENXIO);
if (sc->sc_open)
return (EBUSY);
@@ -904,7 +914,7 @@ amd7930hwintr(au0)
}
}
- (*au->au_intrcnt)++;
+ *(au->au_intrcnt)++;
return (1);
}
#endif /* AUDIO_C_HANDLER */
diff --git a/sys/arch/sparc/dev/amd7930var.h b/sys/arch/sparc/dev/amd7930var.h
index 8e6cf85e529..d397b51433a 100644
--- a/sys/arch/sparc/dev/amd7930var.h
+++ b/sys/arch/sparc/dev/amd7930var.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: amd7930var.h,v 1.3 1997/08/08 08:24:38 downsj Exp $ */
+/* $OpenBSD: amd7930var.h,v 1.4 1997/09/17 06:47:07 downsj Exp $ */
/* $NetBSD: amd7930var.h,v 1.3 1996/02/01 22:32:25 mycroft Exp $ */
/*
diff --git a/sys/arch/sparc/dev/cgsix.c b/sys/arch/sparc/dev/cgsix.c
index f7cf868f8bb..38d5d8a0eef 100644
--- a/sys/arch/sparc/dev/cgsix.c
+++ b/sys/arch/sparc/dev/cgsix.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: cgsix.c,v 1.8 1997/08/08 08:24:51 downsj Exp $ */
-/* $NetBSD: cgsix.c,v 1.32 1997/07/29 09:58:04 fair Exp $ */
+/* $OpenBSD: cgsix.c,v 1.9 1997/09/17 06:47:07 downsj Exp $ */
+/* $NetBSD: cgsix.c,v 1.33 1997/08/07 19:12:30 pk Exp $ */
/*
* Copyright (c) 1993
@@ -142,8 +142,12 @@ static struct fbdriver cg6_fbdriver = {
/*
* Unlike the bw2 and cg3 drivers, we do not need to provide an rconsole
- * interface, as the cg6 is fast enough.
+ * interface, as the cg6 is fast enough.. but provide a knob to turn it
+ * on anyway.
*/
+#ifdef RASTERCONSOLE
+int cgsix_use_rasterconsole = 0;
+#endif
extern int fbnode;
@@ -324,9 +328,12 @@ cgsixattach(parent, self, args)
if (isconsole) {
printf(" (console)\n");
#ifdef RASTERCONSOLE
- sc->sc_fb.fb_pixels = (caddr_t)
- mapiodev(ca->ca_ra.ra_reg, O(cg6_ram[0]), ramsize);
- fbrcons_init(&sc->sc_fb);
+ if (cgsix_use_rasterconsole) {
+ sc->sc_fb.fb_pixels = (caddr_t)
+ mapiodev(ca->ca_ra.ra_reg,
+ O(cg6_ram[0]), ramsize);
+ fbrcons_init(&sc->sc_fb);
+ }
#endif
} else
printf("\n");
diff --git a/sys/arch/sparc/dev/dma.c b/sys/arch/sparc/dev/dma.c
index c01200a20c1..ecd8b077f5e 100644
--- a/sys/arch/sparc/dev/dma.c
+++ b/sys/arch/sparc/dev/dma.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: dma.c,v 1.8 1997/08/08 08:24:57 downsj Exp $ */
-/* $NetBSD: dma.c,v 1.45 1997/07/29 09:58:06 fair Exp $ */
+/* $OpenBSD: dma.c,v 1.9 1997/09/17 06:47:08 downsj Exp $ */
+/* $NetBSD: dma.c,v 1.46 1997/08/27 11:24:16 bouyer Exp $ */
/*
* Copyright (c) 1994 Paul Kranenburg. All rights reserved.
diff --git a/sys/arch/sparc/dev/esp.c b/sys/arch/sparc/dev/esp.c
index 48c211f8ea2..34e91117133 100644
--- a/sys/arch/sparc/dev/esp.c
+++ b/sys/arch/sparc/dev/esp.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: esp.c,v 1.10 1997/08/08 08:25:00 downsj Exp $ */
-/* $NetBSD: esp.c,v 1.68 1997/07/19 21:57:01 pk Exp $ */
+/* $OpenBSD: esp.c,v 1.11 1997/09/17 06:47:08 downsj Exp $ */
+/* $NetBSD: esp.c,v 1.69 1997/08/27 11:24:18 bouyer Exp $ */
/*
* Copyright (c) 1997 Jason R. Thorpe.
diff --git a/sys/arch/sparc/dev/if_le.c b/sys/arch/sparc/dev/if_le.c
index b0bf63e56e6..e2842f36bad 100644
--- a/sys/arch/sparc/dev/if_le.c
+++ b/sys/arch/sparc/dev/if_le.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: if_le.c,v 1.7 1997/08/08 08:25:12 downsj Exp $ */
-/* $NetBSD: if_le.c,v 1.49 1997/07/07 16:28:44 pk Exp $ */
+/* $OpenBSD: if_le.c,v 1.8 1997/09/17 06:47:09 downsj Exp $ */
+/* $NetBSD: if_le.c,v 1.50 1997/09/09 20:54:48 pk Exp $ */
/*-
* Copyright (c) 1997 Jason R. Thorpe. All rights reserved.
@@ -102,9 +102,19 @@ myleintr(arg)
void *arg;
{
register struct le_softc *lesc = arg;
+static int dodrain=0;
- if (lesc->sc_dma->sc_regs->csr & D_ERR_PEND)
+ if (lesc->sc_dma->sc_regs->csr & D_ERR_PEND) {
+ dodrain = 1;
return ledmaintr(lesc->sc_dma);
+ }
+
+ if (dodrain) { /* XXX - is this necessary with D_DSBL_WRINVAL on? */
+#define E_DRAIN 0x400 /* XXX: fix dmareg.h */
+ int i = 10;
+ while (i-- > 0 && (lesc->sc_dma->sc_regs->csr & D_DRAINING))
+ delay(1);
+ }
return (am7990_intr(arg));
}
@@ -277,6 +287,9 @@ lehwreset(sc)
DMA_RESET(lesc->sc_dma);
lesc->sc_dma->sc_regs->en_bar = lesc->sc_laddr & 0xff000000;
DMA_ENINTR(lesc->sc_dma);
+#define D_DSBL_WRINVAL D_DSBL_SCSI_DRN /* XXX: fix dmareg.h */
+ /* Disable E-cache invalidates on chip writes */
+ lesc->sc_dma->sc_regs->csr |= D_DSBL_WRINVAL;
}
#endif
}
diff --git a/sys/arch/sparc/dev/isp_sbus.c b/sys/arch/sparc/dev/isp_sbus.c
index 24fcb5caec2..a2d846f7b94 100644
--- a/sys/arch/sparc/dev/isp_sbus.c
+++ b/sys/arch/sparc/dev/isp_sbus.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: isp_sbus.c,v 1.1 1997/08/08 08:25:15 downsj Exp $ */
-/* $NetBSD: isp_sbus.c,v 1.6 1997/06/08 06:35:45 thorpej Exp $ */
+/* $OpenBSD: isp_sbus.c,v 1.2 1997/09/17 06:47:10 downsj Exp $ */
+/* $NetBSD: isp_sbus.c,v 1.8 1997/08/27 11:24:19 bouyer Exp $ */
/*
* SBus specific probe and attach routines for Qlogic ISP SCSI adapters.
@@ -57,9 +57,9 @@
static u_int16_t isp_sbus_rd_reg __P((struct ispsoftc *, int));
static void isp_sbus_wr_reg __P((struct ispsoftc *, int, u_int16_t));
static int isp_sbus_mbxdma __P((struct ispsoftc *));
-static int isp_sbus_dmasetup __P((struct ispsoftc *, struct scsi_xfer *,
+static int isp_sbus_dmasetup __P((struct ispsoftc *, struct scsipi_xfer *,
ispreq_t *, u_int8_t *, u_int8_t));
-static void isp_sbus_dmateardown __P((struct ispsoftc *, struct scsi_xfer *,
+static void isp_sbus_dmateardown __P((struct ispsoftc *, struct scsipi_xfer *,
u_int32_t));
static struct ispmdvec mdvec = {
@@ -70,19 +70,23 @@ static struct ispmdvec mdvec = {
isp_sbus_dmateardown,
NULL,
NULL,
+ NULL,
ISP_RISC_CODE,
ISP_CODE_LENGTH,
ISP_CODE_ORG,
+ ISP_CODE_VERSION,
+ 0,
0
};
struct isp_sbussoftc {
struct ispsoftc sbus_isp;
+ sdparam sbus_dev;
struct intrhand sbus_ih;
volatile u_char *sbus_reg;
int sbus_node;
int sbus_pri;
- vm_offset_t sbus_kdma_allocs[RQUEST_QUEUE_LEN];
+ vm_offset_t sbus_kdma_allocs[MAXISPREQUEST];
};
@@ -137,6 +141,9 @@ isp_sbus_attach(parent, self, aux)
sbc->sbus_node = ca->ca_ra.ra_node;
sbc->sbus_isp.isp_mdvec = &mdvec;
+ sbc->sbus_isp.isp_type = ISP_HA_SCSI_UNKNOWN;
+ sbc->sbus_isp.isp_param = &sbc->sbus_dev;
+ bzero(sbc->sbus_isp.isp_param, sizeof (sdparam));
isp_reset(&sbc->sbus_isp);
if (sbc->sbus_isp.isp_state != ISP_RESETSTATE) {
return;
@@ -224,7 +231,7 @@ isp_sbus_mbxdma(isp)
/*
* Allocate and map the request queue.
*/
- len = ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN);
+ len = ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp));
isp->isp_rquest = (volatile caddr_t)malloc(len, M_DEVBUF, M_NOWAIT);
if (isp->isp_rquest == 0)
return (1);
@@ -236,7 +243,7 @@ isp_sbus_mbxdma(isp)
/*
* Allocate and map the result queue.
*/
- len = ISP_QUEUE_SIZE(RESULT_QUEUE_LEN);
+ len = ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp));
isp->isp_result = (volatile caddr_t)malloc(len, M_DEVBUF, M_NOWAIT);
if (isp->isp_result == 0)
return (1);
@@ -266,11 +273,11 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
if (xs->datalen == 0) {
rq->req_seg_count = 1;
- rq->req_flags |= REQFLAG_DATA_IN;
return (0);
}
- if (rq->req_handle >= RQUEST_QUEUE_LEN) {
+ if (rq->req_handle > RQUEST_QUEUE_LEN(isp) ||
+ rq->req_handle < 1) {
panic("%s: bad handle (%d) in isp_sbus_dmasetup\n",
isp->isp_name, rq->req_handle);
/* NOTREACHED */
@@ -285,11 +292,11 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
kdvma = (vm_offset_t) xs->data;
}
- if (sbc->sbus_kdma_allocs[rq->req_handle] != (vm_offset_t) 0) {
+ if (sbc->sbus_kdma_allocs[rq->req_handle - 1] != (vm_offset_t) 0) {
panic("%s: kdma handle already allocated\n", isp->isp_name);
/* NOTREACHED */
}
- sbc->sbus_kdma_allocs[rq->req_handle] = kdvma;
+ sbc->sbus_kdma_allocs[rq->req_handle - 1] = kdvma;
if (xs->flags & SCSI_DATA_IN) {
rq->req_flags |= REQFLAG_DATA_IN;
} else {
@@ -314,7 +321,7 @@ isp_sbus_dmateardown(isp, xs, handle)
cpuinfo.cache_flush(xs->data, xs->datalen - xs->resid);
}
- if (handle >= RQUEST_QUEUE_LEN) {
+ if (handle >= RQUEST_QUEUE_LEN(isp)) {
panic("%s: bad handle (%d) in isp_sbus_dmateardown\n",
isp->isp_name, handle);
/* NOTREACHED */
diff --git a/sys/arch/sparc/dev/kbd.c b/sys/arch/sparc/dev/kbd.c
index 9bf291e0a43..b1914a7b09b 100644
--- a/sys/arch/sparc/dev/kbd.c
+++ b/sys/arch/sparc/dev/kbd.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: kbd.c,v 1.6 1997/08/08 08:25:16 downsj Exp $ */
-/* $NetBSD: kbd.c,v 1.27 1996/10/13 03:00:01 christos Exp $ */
+/* $OpenBSD: kbd.c,v 1.7 1997/09/17 06:47:10 downsj Exp $ */
+/* $NetBSD: kbd.c,v 1.28 1997/09/13 19:12:18 pk Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -288,6 +288,18 @@ kbdattach(kbd)
if (ttyoutput(KBD_CMD_RESET, tp) >= 0)
panic("kbdattach");
(*tp->t_oproc)(tp); /* get it going */
+
+ /*
+ * Wait here for the keyboard initialization to complete
+ * since subsequent kernel console access (ie. cnget())
+ * may cause the PROM to interfere with the device.
+ */
+ if (tsleep((caddr_t)&kbd_softc.k_state,
+ PZERO | PCATCH, devopn, hz) != 0) {
+ /* no response */
+ printf("kbd: reset failed\n");
+ kbd_reset(&kbd_softc.k_state);
+ }
}
}
@@ -296,11 +308,9 @@ kbd_reset(ks)
register struct kbd_state *ks;
{
/*
- * On first identification, wake up anyone waiting for type
- * and set up the table pointers.
+ * On first identification, set up the table pointers.
*/
if (ks->kbd_unshifted == NULL) {
- wakeup((caddr_t)ks);
ks->kbd_unshifted = kbd_unshifted;
ks->kbd_shifted = kbd_shifted;
ks->kbd_cur = ks->kbd_unshifted;
@@ -447,7 +457,8 @@ kbd_rint(c)
/* Arrange to get keyboard layout as well */
(void)ttyoutput(KBD_CMD_GLAYOUT, k->k_kbd);
(*k->k_kbd->t_oproc)(k->k_kbd);
- }
+ } else
+ wakeup((caddr_t)&k->k_state);
return;
}
@@ -455,6 +466,10 @@ kbd_rint(c)
if (k->k_state.kbd_pending == KBD_LAYOUT) {
k->k_state.kbd_pending = 0;
k->k_state.kbd_layout = c;
+ /*
+ * Wake up anyone waiting for type.
+ */
+ wakeup((caddr_t)&k->k_state);
return;
}
diff --git a/sys/arch/sparc/dev/sbusreg.h b/sys/arch/sparc/dev/sbusreg.h
index 3455f5eb366..25e630e4862 100644
--- a/sys/arch/sparc/dev/sbusreg.h
+++ b/sys/arch/sparc/dev/sbusreg.h
@@ -1,5 +1,5 @@
-/* $OpenBSD: sbusreg.h,v 1.2 1997/08/08 08:25:27 downsj Exp $ */
-/* $NetBSD: sbusreg.h,v 1.2 1994/11/20 20:52:26 deraadt Exp $ */
+/* $OpenBSD: sbusreg.h,v 1.3 1997/09/17 06:47:11 downsj Exp $ */
+/* $NetBSD: sbusreg.h,v 1.3 1997/09/14 19:17:25 pk Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -60,3 +60,14 @@
#define SBUS_ABS(a) ((unsigned)(a) >= SBUS_BASE)
#define SBUS_ABS_TO_SLOT(a) (((a) - SBUS_BASE) >> 25)
#define SBUS_ABS_TO_OFFSET(a) (((a) - SBUS_BASE) & 0x1ffffff)
+
+struct sbusreg {
+ u_int32_t sbus_afsr; /* M-to-S Asynchronous Fault Status */
+ u_int32_t sbus_afar; /* M-to-S Asynchronous Fault Address */
+ u_int32_t sbus_arbiter; /* Arbiter Enable */
+ u_int32_t sbus_reserved1;
+
+#define NSBUSCFG 20
+ /* Actual number dependent on machine model */
+ u_int32_t sbus_sbuscfg[NSBUSCFG]; /* Sbus configuration control */
+};
diff --git a/sys/arch/sparc/dev/si.c b/sys/arch/sparc/dev/si.c
index a96caafb133..26238e8442d 100644
--- a/sys/arch/sparc/dev/si.c
+++ b/sys/arch/sparc/dev/si.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: si.c,v 1.10 1997/08/08 08:25:29 downsj Exp $ */
-/* $NetBSD: si.c,v 1.37 1997/07/29 09:58:13 fair Exp $ */
+/* $OpenBSD: si.c,v 1.11 1997/09/17 06:47:11 downsj Exp $ */
+/* $NetBSD: si.c,v 1.38 1997/08/27 11:24:20 bouyer Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
diff --git a/sys/arch/sparc/dev/zs.c b/sys/arch/sparc/dev/zs.c
index 2361c3ea61e..96e095c2854 100644
--- a/sys/arch/sparc/dev/zs.c
+++ b/sys/arch/sparc/dev/zs.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: zs.c,v 1.16 1997/08/25 08:38:45 downsj Exp $ */
-/* $NetBSD: zs.c,v 1.48 1997/07/29 09:58:18 fair Exp $ */
+/* $OpenBSD: zs.c,v 1.17 1997/09/17 06:47:12 downsj Exp $ */
+/* $NetBSD: zs.c,v 1.49 1997/08/31 21:26:37 pk Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -80,6 +80,7 @@
#include <sparc/dev/zsvar.h>
#ifdef KGDB
+#include <sys/kgdb.h>
#include <machine/remote-sl.h>
#endif
@@ -171,7 +172,7 @@ static int zsrint __P((struct zs_chanstate *, volatile struct zschan *));
static int zsxint __P((struct zs_chanstate *, volatile struct zschan *));
static int zssint __P((struct zs_chanstate *, volatile struct zschan *));
-void zsabort __P((void));
+void zsabort __P((int));
static void zsoverrun __P((int, long *, char *));
static volatile struct zsdevice *zsaddr[NZS]; /* XXX, but saves work */
@@ -902,7 +903,7 @@ zsrint(cs, zc)
else if (c == (KBD_L1|KBD_UP))
conk->conk_l1 = 0; /* L1 went up */
else if (c == KBD_A && conk->conk_l1) {
- zsabort();
+ zsabort(cs->cs_unit);
conk->conk_l1 = 0; /* we never see the up */
goto clearit; /* eat the A after L1-A */
}
@@ -1006,17 +1007,20 @@ zssint(cs, zc)
while (zc->zc_csr & ZSRR0_BREAK)
ZS_DELAY();
}
- zsabort();
+ zsabort(cs->cs_unit);
return (0);
}
return (ZRING_MAKE(ZRING_SINT, rr0));
}
void
-zsabort()
+zsabort(unit)
+ int unit;
{
-#ifdef DDB
+#if defined(KGDB)
+ zskgdb(unit);
+#elif defined(DDB)
Debugger();
#else
printf("stopping on keyboard abort\n");