summaryrefslogtreecommitdiff
path: root/sys/arch/sun3/dev/xy.c
diff options
context:
space:
mode:
authorchuck <chuck@cvs.openbsd.org>1996-03-04 20:35:30 +0000
committerchuck <chuck@cvs.openbsd.org>1996-03-04 20:35:30 +0000
commit9f9ebe44ec9364c5be35035ff4e1825f4322e204 (patch)
treefc5db790216f160ccb78cb7d64e412a7b3529572 /sys/arch/sun3/dev/xy.c
parent5ebfbc1d3156d4ede9dcc95905ba0ac8dd9a492a (diff)
Fix two bugs reported by Don Koch <aardvark@poirot.krl.com>(NetBSD PR#216{8,9})
[1] check return value from malloc() for NULL before trying to bzero it. [2] use "=" rather than "|=" when writing to CSR (otherwise you may ACK something you don't mean to!).
Diffstat (limited to 'sys/arch/sun3/dev/xy.c')
-rw-r--r--sys/arch/sun3/dev/xy.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/arch/sun3/dev/xy.c b/sys/arch/sun3/dev/xy.c
index b08bdfcda73..e66d57b187d 100644
--- a/sys/arch/sun3/dev/xy.c
+++ b/sys/arch/sun3/dev/xy.c
@@ -36,7 +36,7 @@
* x y . c x y l o g i c s 4 5 0 / 4 5 1 s m d d r i v e r
*
* author: Chuck Cranor <chuck@ccrc.wustl.edu>
- * id: $Id: xy.c,v 1.4 1996/02/21 03:44:01 chuck Exp $
+ * id: $Id: xy.c,v 1.5 1996/03/04 20:35:29 chuck Exp $
* started: 14-Sep-95
* references: [1] Xylogics Model 753 User's Manual
* part number: 166-753-001, Revision B, May 21, 1988.
@@ -99,7 +99,7 @@
(XYC)->xyc_reloc_lo = ((ADDR) & 0xff); \
(ADDR) = ((ADDR) >> 8); \
(XYC)->xyc_reloc_hi = (ADDR); \
- (XYC)->xyc_csr |= XYC_GBSY; /* go! */ \
+ (XYC)->xyc_csr = XYC_GBSY; /* go! */ \
}
/*
@@ -359,9 +359,9 @@ xycattach(parent, self, aux)
dvma_kvtopa((long) xyc->iopbase, BUS_VME16);
xyc->reqs = (struct xy_iorq *)
malloc(XYC_MAXIOPB * sizeof(struct xy_iorq), M_DEVBUF, M_NOWAIT);
- bzero(xyc->reqs, XYC_MAXIOPB * sizeof(struct xy_iorq));
if (xyc->reqs == NULL)
panic("xyc malloc");
+ bzero(xyc->reqs, XYC_MAXIOPB * sizeof(struct xy_iorq));
/*
* init iorq to iopb pointers, and non-zero fields in the
@@ -1561,7 +1561,7 @@ xyc_xyreset(xycsc, xysc)
if (xyc_unbusy(xycsc->xyc, XYC_RESETUSEC) == XY_ERR_FAIL)
panic("xyc_reset");
} else {
- xycsc->xyc->xyc_csr |= XYC_IPND; /* clear IPND */
+ xycsc->xyc->xyc_csr = XYC_IPND; /* clear IPND */
}
bcopy(&tmpiopb, xycsc->ciopb, sizeof(tmpiopb));
}
@@ -1711,10 +1711,10 @@ xyc_remove_iorq(xycsc)
*/
if (xyc->xyc_csr & XYC_ERR) {
- xyc->xyc_csr |= XYC_ERR; /* clear error condition */
+ xyc->xyc_csr = XYC_ERR; /* clear error condition */
}
if (xyc->xyc_csr & XYC_IPND) {
- xyc->xyc_csr |= XYC_IPND; /* clear interrupt */
+ xyc->xyc_csr = XYC_IPND; /* clear interrupt */
}
for (rq = 0; rq < XYC_MAXIOPB; rq++) {