summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/i386/isa/aha1542.c32
-rw-r--r--sys/i386/isa/wd7000.c18
-rw-r--r--sys/scsi/scsi_base.c29
-rw-r--r--sys/scsi/scsiconf.h7
-rw-r--r--sys/scsi/sd.c8
-rw-r--r--sys/scsi/st.c22
6 files changed, 66 insertions, 50 deletions
diff --git a/sys/i386/isa/aha1542.c b/sys/i386/isa/aha1542.c
index fed4e64..a57736c 100644
--- a/sys/i386/isa/aha1542.c
+++ b/sys/i386/isa/aha1542.c
@@ -12,7 +12,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: aha1542.c,v 1.39 1995/01/08 13:41:28 dufault Exp $
+ * $Id: aha1542.c,v 1.40 1995/01/19 12:33:10 dufault Exp $
*/
/*
@@ -676,7 +676,7 @@ ahaintr(unit)
for (i = 0; i < AHA_MBX_SIZE; i++) {
if (aha->aha_mbx.mbi[i].stat != AHA_MBI_FREE) {
ccb = (struct aha_ccb *) PHYSTOKV(
- (_3btol(aha->aha_mbx.mbi[i].ccb_addr)));
+ (scsi_3btou(aha->aha_mbx.mbi[i].ccb_addr)));
if ((stat = aha->aha_mbx.mbi[i].stat) != AHA_MBI_OK) {
switch (stat) {
@@ -834,14 +834,14 @@ aha_done(unit, ccb)
switch(ccb->opcode)
{
case AHA_TARGET_CCB:
- xs->resid = xs->datalen - _3btol(ccb->data_length);
+ xs->resid = xs->datalen - scsi_3btoi(ccb->data_length);
if (xs->resid <= 0)
xs->error = XS_LENGTH;
break;
case AHA_INIT_RESID_CCB:
case AHA_INIT_SG_RESID_CCB:
- xs->resid = _3btol(ccb->data_length);
+ xs->resid = scsi_3btoi(ccb->data_length);
if (xs->resid <= 0)
xs->error = XS_LENGTH;
printf("aha over under: resid %d error %d.\n",
@@ -1092,7 +1092,7 @@ aha_init(unit)
/*
* Initialize mail box
*/
- lto3b(KVTOPHYS(&aha->aha_mbx), ad);
+ scsi_uto3b(KVTOPHYS(&aha->aha_mbx), ad);
aha_cmd(unit, 4, 0, 0, 0, AHA_MBX_INIT,
AHA_MBX_SIZE,
@@ -1110,7 +1110,7 @@ aha_init(unit)
aha->aha_ccb_free = &aha->aha_ccb[i];
aha->aha_ccb_free->flags = CCB_FREE;
aha->aha_ccb_free->mbx = &aha->aha_mbx.mbo[i];
- lto3b(KVTOPHYS(aha->aha_ccb_free), aha->aha_mbx.mbo[i].ccb_addr);
+ scsi_uto3b(KVTOPHYS(aha->aha_ccb_free), aha->aha_mbx.mbo[i].ccb_addr);
}
/*
* Note that we are going and return (to probe)
@@ -1193,7 +1193,7 @@ aha_scsi_cmd(xs)
if ((xs->datalen) && (!(flags & SCSI_RESET))) {
/* can use S/G only if not zero length */
- lto3b(KVTOPHYS(ccb->scat_gath), ccb->data_addr);
+ scsi_uto3b(KVTOPHYS(ccb->scat_gath), ccb->data_addr);
sg = ccb->scat_gath;
seg = 0;
#ifdef TFS_ONLY
@@ -1201,8 +1201,8 @@ aha_scsi_cmd(xs)
iovp = ((struct uio *) xs->data)->uio_iov;
datalen = ((struct uio *) xs->data)->uio_iovcnt;
while ((datalen) && (seg < AHA_NSEG)) {
- lto3b(iovp->iov_base, sg->seg_addr);
- lto3b(iovp->iov_len, sg->seg_len);
+ scsi_uto3b(iovp->iov_base, sg->seg_addr);
+ scsi_uto3b(iovp->iov_len, sg->seg_len);
SC_DEBUGN(xs->sc_link, SDEV_DB4, ("UIO(0x%x@0x%x)"
,iovp->iov_len
,iovp->iov_base));
@@ -1228,7 +1228,7 @@ aha_scsi_cmd(xs)
bytes_this_seg = 0;
/* put in the base address */
- lto3b(thisphys, sg->seg_addr);
+ scsi_uto3b(thisphys, sg->seg_addr);
SC_DEBUGN(xs->sc_link, SDEV_DB4,
("0x%x", thisphys));
@@ -1271,12 +1271,12 @@ aha_scsi_cmd(xs)
*/
SC_DEBUGN(xs->sc_link, SDEV_DB4,
("(0x%x)", bytes_this_seg));
- lto3b(bytes_this_seg, sg->seg_len);
+ scsi_uto3b(bytes_this_seg, sg->seg_len);
sg++;
seg++;
}
}
- lto3b(seg * sizeof(struct aha_scat_gath), ccb->data_length);
+ scsi_uto3b(seg * sizeof(struct aha_scat_gath), ccb->data_length);
SC_DEBUGN(xs->sc_link, SDEV_DB4, ("\n"));
if (datalen) { /* there's still data, must have run out of segs! */
@@ -1287,10 +1287,10 @@ aha_scsi_cmd(xs)
return (HAD_ERROR);
}
} else { /* No data xfer, use non S/G values */
- lto3b(0, ccb->data_addr);
- lto3b(0, ccb->data_length);
+ scsi_uto3b(0, ccb->data_addr);
+ scsi_uto3b(0, ccb->data_length);
}
- lto3b(0, ccb->link_addr);
+ scsi_uto3b(0, ccb->link_addr);
/*
* Put the scsi command in the ccb and start it
*/
@@ -1486,7 +1486,7 @@ aha_bus_speed_check(unit, speed)
* put the test data into the buffer and calculate
* it's address. Read it onto the board
*/
- lto3b(KVTOPHYS(aha_scratch_buf), ad);
+ scsi_uto3b(KVTOPHYS(aha_scratch_buf), ad);
for(loopcount = 2000;loopcount;loopcount--)
{
strcpy(aha_scratch_buf, aha_test_string);
diff --git a/sys/i386/isa/wd7000.c b/sys/i386/isa/wd7000.c
index 44d94aa..ca35f92 100644
--- a/sys/i386/isa/wd7000.c
+++ b/sys/i386/isa/wd7000.c
@@ -348,13 +348,13 @@ wds_scsi_cmd(struct scsi_xfer *sxp)
return TRY_AGAIN_LATER;
}
- lto3b(KVTOPHYS(&r->cmd),wds[unit].ombs[r->ombn].addr);
+ scsi_uto3b(KVTOPHYS(&r->cmd),wds[unit].ombs[r->ombn].addr);
bzero(&r->cmd, sizeof r->cmd);
r->cmd.cmd = WDSX_SCSICMD;
r->cmd.targ = (sxp->sc_link->target << 5) | sxp->sc_link->lun;
bcopy(sxp->cmd, &r->cmd.scb, sxp->cmdlen<12 ? sxp->cmdlen : 12);
- lto3b(sxp->datalen, r->cmd.len);
+ scsi_uto3b(sxp->datalen, r->cmd.len);
if(wds_data_in_use[unit])
{
@@ -367,18 +367,18 @@ wds_scsi_cmd(struct scsi_xfer *sxp)
if(sxp->datalen && !(sxp->flags&SCSI_DATA_IN))
bcopy(sxp->data, wds_data[unit], sxp->datalen);
- lto3b(sxp->datalen ? KVTOPHYS(wds_data[unit]) : 0, r->cmd.data);
+ scsi_uto3b(sxp->datalen ? KVTOPHYS(wds_data[unit]) : 0, r->cmd.data);
r->cmd.write = (sxp->flags&SCSI_DATA_IN)? 0x80 : 0x00;
- lto3b(KVTOPHYS(&r->sense),r->cmd.next);
+ scsi_uto3b(KVTOPHYS(&r->sense),r->cmd.next);
bzero(&r->sense, sizeof r->sense);
r->sense.cmd = r->cmd.cmd;
r->sense.targ = r->cmd.targ;
r->sense.scb[0] = REQUEST_SENSE;
- lto3b(KVTOPHYS(&sxp->sense),r->sense.data);
- lto3b(sizeof(sxp->sense), r->sense.len);
+ scsi_uto3b(KVTOPHYS(&sxp->sense),r->sense.data);
+ scsi_uto3b(sizeof(sxp->sense), r->sense.len);
r->sense.write = 0x80;
if(sxp->flags & SCSI_NOMASK)
@@ -458,7 +458,7 @@ wdsintr(int unit)
c = c & ~WDSI_MASK;
in = &wds[unit].imbs[c];
- pc = (struct wds_cmd *)_3btol(in->addr);
+ pc = (struct wds_cmd *)scsi_3btou(in->addr);
vc = (struct wds_cmd *)PHYSTOKV((long)pc);
stat = in->stat;
@@ -564,7 +564,7 @@ wds_getvers(int unit)
r->done = 0;
r->sxp = NULL;
- lto3b(KVTOPHYS(&r->cmd), wds[unit].ombs[r->ombn].addr);
+ scsi_uto3b(KVTOPHYS(&r->cmd), wds[unit].ombs[r->ombn].addr);
bzero(&r->cmd, sizeof r->cmd);
r->cmd.cmd = WDSX_GETFIRMREV;
@@ -686,7 +686,7 @@ wds_init(struct isa_device *dev)
init.scsi_id = 7;
init.buson_t = 24;
init.busoff_t = 48;
- lto3b(KVTOPHYS(wds[unit].ombs), init.mbaddr);
+ scsi_uto3b(KVTOPHYS(wds[unit].ombs), init.mbaddr);
init.xx = 0;
init.nomb = WDS_NOMB;
init.nimb = WDS_NIMB;
diff --git a/sys/scsi/scsi_base.c b/sys/scsi/scsi_base.c
index 6dc2249..fbb6e34 100644
--- a/sys/scsi/scsi_base.c
+++ b/sys/scsi/scsi_base.c
@@ -8,7 +8,7 @@
* file.
*
* Written by Julian Elischer (julian@dialix.oz.au)
- * $Id: scsi_base.c,v 1.17 1995/01/19 12:41:35 dufault Exp $
+ * $Id: scsi_base.c,v 1.18 1995/01/24 12:04:54 dufault Exp $
*/
#define SPLSD splbio
@@ -923,8 +923,8 @@ scsi_interpret_sense(xs)
* LSB at the highest.
*/
void
-lto3b(val, bytes)
- int val;
+scsi_uto3b(val, bytes)
+ u_int32 val;
u_char *bytes;
{
*bytes++ = (val & 0xff0000) >> 16;
@@ -933,17 +933,32 @@ lto3b(val, bytes)
}
/*
- * The reverse of lto3b
+ * The reverse of scsi_uto3b
*/
-int
-_3btol(bytes)
+u_int32
+scsi_3btou(bytes)
u_char *bytes;
{
u_int32 rc;
rc = (*bytes++ << 16);
rc += (*bytes++ << 8);
rc += *bytes;
- return ((int) rc);
+ return rc;
+}
+
+/*
+ * scsi_3btoi: scsi_3btou for twos complement signed integers:
+ */
+int32
+scsi_3btoi(bytes)
+ u_char *bytes;
+{
+ u_int32 rc = scsi_3btou(bytes);
+
+ if (rc & 0x00800000)
+ rc |= 0xff000000;
+
+ return (int32) rc;
}
/*
diff --git a/sys/scsi/scsiconf.h b/sys/scsi/scsiconf.h
index 7744387..92fafee 100644
--- a/sys/scsi/scsiconf.h
+++ b/sys/scsi/scsiconf.h
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: scsiconf.h,v 1.14 1994/11/14 23:39:33 ats Exp $
+ * $Id: scsiconf.h,v 1.15 1995/01/08 13:38:33 dufault Exp $
*/
#ifndef SCSI_SCSICONF_H
#define SCSI_SCSICONF_H 1
@@ -342,8 +342,9 @@ void show_scsi_xs(struct scsi_xfer *xs);
void show_scsi_cmd(struct scsi_xfer *xs);
void show_mem(unsigned char * , u_int32);
-void lto3b __P((int val, u_char *bytes));
-int _3btol __P((u_char *bytes));
+void scsi_uto3b __P((u_int32 val, u_char *bytes));
+u_int32 scsi_3btou __P((u_char *bytes));
+int32 scsi_3btoi __P((u_char *bytes));
extern void sc_print_addr(struct scsi_link *);
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index a448169..584b3f2 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@dialix.oz.au) Sept 1992
*
- * $Id: sd.c,v 1.48 1994/12/24 09:19:00 bde Exp $
+ * $Id: sd.c,v 1.49 1995/01/08 13:38:34 dufault Exp $
*/
#define SPLSD splbio
@@ -989,7 +989,7 @@ sd_get_parms(unit, flags)
SC_DEBUG(sd->sc_link, SDEV_DB3,
("%d cyls, %d heads, %d precomp, %d red_write, %d land_zone\n",
- _3btol(&scsi_sense.pages.rigid_geometry.ncyl_2),
+ scsi_3btou(&scsi_sense.pages.rigid_geometry.ncyl_2),
scsi_sense.pages.rigid_geometry.nheads,
b2tol(scsi_sense.pages.rigid_geometry.st_cyl_wp),
b2tol(scsi_sense.pages.rigid_geometry.st_cyl_rwc),
@@ -1002,8 +1002,8 @@ sd_get_parms(unit, flags)
* can lead to wasted space! THINK ABOUT THIS !
*/
disk_parms->heads = scsi_sense.pages.rigid_geometry.nheads;
- disk_parms->cyls = _3btol(&scsi_sense.pages.rigid_geometry.ncyl_2);
- disk_parms->secsiz = _3btol(scsi_sense.blk_desc.blklen);
+ disk_parms->cyls = scsi_3btou(&scsi_sense.pages.rigid_geometry.ncyl_2);
+ disk_parms->secsiz = scsi_3btou(scsi_sense.blk_desc.blklen);
sectors = sd_size(unit, flags);
disk_parms->disksize = sectors;
diff --git a/sys/scsi/st.c b/sys/scsi/st.c
index 86f31e7..415c2e9 100644
--- a/sys/scsi/st.c
+++ b/sys/scsi/st.c
@@ -12,7 +12,7 @@
* on the understanding that TFS is not responsible for the correct
* functioning of this software in any circumstances.
*
- * $Id: st.c,v 1.24 1995/01/08 13:38:36 dufault Exp $
+ * $Id: st.c,v 1.25 1995/01/24 12:04:56 dufault Exp $
*/
/*
@@ -1156,9 +1156,9 @@ ststart(unit)
*/
if (st->flags & ST_FIXEDBLOCKS) {
cmd.byte2 |= SRWT_FIXED;
- lto3b(bp->b_bcount / st->blksiz, cmd.len);
+ scsi_uto3b(bp->b_bcount / st->blksiz, cmd.len);
} else {
- lto3b(bp->b_bcount, cmd.len);
+ scsi_uto3b(bp->b_bcount, cmd.len);
}
/*
* go ask the adapter to do all this for us
@@ -1382,10 +1382,10 @@ st_read(unit, buf, size, flags)
scsi_cmd.op_code = READ_COMMAND_TAPE;
if (st->flags & ST_FIXEDBLOCKS) {
scsi_cmd.byte2 |= SRWT_FIXED;
- lto3b(size / (st->blksiz ? st->blksiz : DEF_FIXED_BSIZE),
+ scsi_uto3b(size / (st->blksiz ? st->blksiz : DEF_FIXED_BSIZE),
scsi_cmd.len);
} else {
- lto3b(size, scsi_cmd.len);
+ scsi_uto3b(size, scsi_cmd.len);
}
return (scsi_scsi_cmd(st->sc_link,
(struct scsi_generic *) &scsi_cmd,
@@ -1443,7 +1443,7 @@ st_rd_blk_lim(unit, flags)
return errno;
}
st->blkmin = b2tol(scsi_blkl.min_length);
- st->blkmax = _3btol(&scsi_blkl.max_length_2);
+ st->blkmax = scsi_3btou(&scsi_blkl.max_length_2);
SC_DEBUG(sc_link, SDEV_DB3,
("(%d <= blksiz <= %d)\n", st->blkmin, st->blkmax));
@@ -1522,8 +1522,8 @@ st_mode_sense(unit, flags)
flags | SCSI_DATA_IN)) {
return errno;
}
- st->numblks = _3btol(((struct scsi_sense *)scsi_sense_ptr)->blk_desc.nblocks);
- st->media_blksiz = _3btol(((struct scsi_sense *)scsi_sense_ptr)->blk_desc.blklen);
+ st->numblks = scsi_3btou(((struct scsi_sense *)scsi_sense_ptr)->blk_desc.nblocks);
+ st->media_blksiz = scsi_3btou(((struct scsi_sense *)scsi_sense_ptr)->blk_desc.blklen);
st->media_density = ((struct scsi_sense *) scsi_sense_ptr)->blk_desc.density;
if (((struct scsi_sense *) scsi_sense_ptr)->header.dev_spec &
SMH_DSP_WRITE_PROT) {
@@ -1589,7 +1589,7 @@ st_mode_select(unit, flags)
((struct dat *) dat_ptr)->header.dev_spec |= SMH_DSP_BUFF_MODE_ON;
((struct dat *) dat_ptr)->blk_desc.density = st->density;
if (st->flags & ST_FIXEDBLOCKS) {
- lto3b(st->blksiz, ((struct dat *) dat_ptr)->blk_desc.blklen);
+ scsi_uto3b(st->blksiz, ((struct dat *) dat_ptr)->blk_desc.blklen);
}
if (st->quirks & ST_Q_NEEDS_PAGE_0) {
bcopy(st->sense_data, ((struct dat_page_0 *) dat_ptr)->sense_data,
@@ -1673,7 +1673,7 @@ st_space(unit, number, what, flags)
bzero(&scsi_cmd, sizeof(scsi_cmd));
scsi_cmd.op_code = SPACE;
scsi_cmd.byte2 = what & SS_CODE;
- lto3b(number, scsi_cmd.number);
+ scsi_uto3b(number, scsi_cmd.number);
return (scsi_scsi_cmd(st->sc_link,
(struct scsi_generic *) &scsi_cmd,
sizeof(scsi_cmd),
@@ -1719,7 +1719,7 @@ st_write_filemarks(unit, number, flags)
}
bzero(&scsi_cmd, sizeof(scsi_cmd));
scsi_cmd.op_code = WRITE_FILEMARKS;
- lto3b(number, scsi_cmd.number);
+ scsi_uto3b(number, scsi_cmd.number);
return scsi_scsi_cmd(st->sc_link,
(struct scsi_generic *) &scsi_cmd,
sizeof(scsi_cmd),
OpenPOWER on IntegriCloud