From 9f9ebe44ec9364c5be35035ff4e1825f4322e204 Mon Sep 17 00:00:00 2001 From: chuck Date: Mon, 4 Mar 1996 20:35:30 +0000 Subject: Fix two bugs reported by Don Koch (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!). --- sys/arch/sun3/dev/xy.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'sys/arch/sun3/dev/xy.c') 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 - * 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++) { -- cgit v1.2.3