SCCS-vsn: sys/vax/vax/conf.c 4.43
SCCS-vsn: sys/vax/uba/ct.c 4.7
SCCS-vsn: sys/vax/uba/dh.c 4.40
SCCS-vsn: sys/vax/uba/dn.c 4.2
SCCS-vsn: sys/vax/uba/dz.c 4.31
SCCS-vsn: sys/vax/mba/hp.c 4.42
SCCS-vsn: sys/vax/uba/lp.c 4.21
SCCS-vsn: sys/kern/tty_pty.c 4.10
SCCS-vsn: sys/vax/uba/rk.c 4.37
SCCS-vsn: sys/vax/uba/tm.c 4.44
SCCS-vsn: sys/vax/uba/ts.c 4.20
SCCS-vsn: sys/kern/tty.c 4.14
SCCS-vsn: sys/vax/vax/tu.c 4.2
SCCS-vsn: sys/vax/uba/uba.c 4.37
SCCS-vsn: sys/vax/uba/up.c 4.40
SCCS-vsn: sys/vax/uba/ut.c 4.9
SCCS-vsn: sys/vax/uba/va.c 4.11
SCCS-vsn: sys/vax/uba/vp.c 4.10
18 files changed:
-/* tty.c 4.13 81/10/11 */
+/* tty.c 4.14 81/11/18 */
/*
* TTY subroutines common to more than one line discipline
/*
* TTY subroutines common to more than one line discipline
nread = ttnread(tp);
if (nread > 0)
return (1);
nread = ttnread(tp);
if (nread > 0)
return (1);
- if (tp->t_rsel && tp->t_rsel->p_wchan == (caddr_t)select)
+ if (tp->t_rsel && tp->t_rsel->p_wchan == (caddr_t)&selwait)
tp->t_state |= RCOLL;
else
tp->t_rsel = u.u_procp;
tp->t_state |= RCOLL;
else
tp->t_rsel = u.u_procp;
-/* tty_pty.c 4.9 81/10/11 */
+/* tty_pty.c 4.10 81/11/18 */
/*
* Pseudo-teletype Driver
/*
* Pseudo-teletype Driver
if (tp->t_outq.c_cc)
return (1);
pti = &pt_ioctl[minor(dev)];
if (tp->t_outq.c_cc)
return (1);
pti = &pt_ioctl[minor(dev)];
- if ((p = pti->pti_selr) && p->p_wchan == (caddr_t)select)
+ if ((p = pti->pti_selr) && p->p_wchan == (caddr_t)&selwait)
pti->pti_flags |= PTCRCOLL;
else
pti->pti_selr = u.u_procp;
pti->pti_flags |= PTCRCOLL;
else
pti->pti_selr = u.u_procp;
dev_t dev;
{
register struct tty *tp;
dev_t dev;
{
register struct tty *tp;
tp = &pt_tty[minor(dev)];
/* IF CONTROLLER STTY THEN MUST FLUSH TO PREVENT A HANG ??? */
tp = &pt_tty[minor(dev)];
/* IF CONTROLLER STTY THEN MUST FLUSH TO PREVENT A HANG ??? */
-/* hp.c 4.41 81/07/09 */
+/* hp.c 4.42 81/11/18 */
#ifdef HPDEBUG
int hpdebug;
#ifdef HPDEBUG
int hpdebug;
#include "ct.h"
#if NCT > 0
#include "ct.h"
#if NCT > 0
register int br, cvec; /* value-result */
register struct ctdevice *ctaddr = (struct ctdevice *)reg;
register int br, cvec; /* value-result */
register struct ctdevice *ctaddr = (struct ctdevice *)reg;
+#ifdef lint
+ br = 0; cvec = br; br = cvec;
+ ctintr(0);
+#endif
ctaddr->ctcsr = IENABLE;
DELAY(10000);
ctaddr->ctcsr = 0;
ctaddr->ctcsr = IENABLE;
DELAY(10000);
ctaddr->ctcsr = 0;
if (ctaddr->ctcsr&DONE) {
if ((c = getc(&sc->sc_oq)) >= 0) {
if (ctaddr->ctcsr&DONE) {
if ((c = getc(&sc->sc_oq)) >= 0) {
-#if MH135A
- c |= (c & 01) << 8; /* for dr11c bug */
-#endif
ctaddr->ctbuf = c;
if (sc->sc_oq.c_cc==0 || sc->sc_oq.c_cc==CATLOWAT)
wakeup(&sc->sc_oq);
ctaddr->ctbuf = c;
if (sc->sc_oq.c_cc==0 || sc->sc_oq.c_cc==CATLOWAT)
wakeup(&sc->sc_oq);
-/* dh.c 4.39 81/11/08 */
+/* dh.c 4.40 81/11/18 */
#include "dh.h"
#if NDH > 0
#include "dh.h"
#if NDH > 0
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
#endif
#ifndef notdef
dhaddr->un.dhcsr = DH_RIE|DH_MM|DH_RI;
#endif
#ifndef notdef
dhaddr->un.dhcsr = DH_RIE|DH_MM|DH_RI;
#ifdef lint
br = 0; vec = br; br = vec;
#ifdef lint
br = 0; vec = br; br = vec;
#endif
dmaddr->dmcsr = DM_DONE|DM_IE;
DELAY(20);
#endif
dmaddr->dmcsr = DM_DONE|DM_IE;
DELAY(20);
#include "dn.h"
#if NDN > 0
#include "dn.h"
#if NDN > 0
/*
* There's no good way to determine the correct number of dialers attached
/*
* There's no good way to determine the correct number of dialers attached
- * to a single device (especially when dialers such as Vadic-821 MACS
- * exist which can address four chassis, each with its own dialer), so
- * we take the "flags" value supplied by config as the number of devices
- * attached (see dnintr).
+ * to a single device (especially when dialers such as Vadic-821 MACS
+ * exist which can address four chassis, each with its own dialer), so
+ * we take the "flags" value supplied by config as the number of devices
+ * attached (see dnintr).
*/
dnprobe(reg)
caddr_t reg;
{
*/
dnprobe(reg)
caddr_t reg;
{
- register int br, cvec; /* value-result, must be r11, r10 */
+ register int br, cvec; /* value-result */
register struct dndevice *dnaddr = (struct dndevice *)reg;
register struct dndevice *dnaddr = (struct dndevice *)reg;
+#ifdef lint
+ br = 0; cvec = br; br = cvec;
+ dnintr(0);
+#endif
+
/*
* If there's at least one dialer out there it better be
/*
* If there's at least one dialer out there it better be
*/
dnaddr->dn_reg[0] = MENABLE|IENABLE|DONE;
DELAY(5);
*/
dnaddr->dn_reg[0] = MENABLE|IENABLE|DONE;
DELAY(5);
dnattach(ui)
struct uba_device *ui;
{
dnattach(ui)
struct uba_device *ui;
{
if (ui->ui_flags == 0) /* no flags =>'s don't care */
ui->ui_flags = 4;
else if (ui->ui_flags > 4 || ui->ui_flags < 0) {
if (ui->ui_flags == 0) /* no flags =>'s don't care */
ui->ui_flags = 4;
else if (ui->ui_flags > 4 || ui->ui_flags < 0) {
/*
* NOTE that the flags from the config file define the number
/*
* NOTE that the flags from the config file define the number
- * of dialers attached to this controller.
+ * of dialers attached to this controller.
*/
dnintr(dev)
dev_t dev;
*/
dnintr(dev)
dev_t dev;
-/* dz.c 4.30 81/11/08 */
+/* dz.c 4.31 81/11/18 */
#include "dz.h"
#if NDZ > 0
/*
#include "dz.h"
#if NDZ > 0
/*
*
* This driver mimics dh.c; see it for explanation of common code.
*/
*
* This driver mimics dh.c; see it for explanation of common code.
*/
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
+ dzrint(0); dzxint((struct tty *)0);
#endif
dzaddr->dzcsr = DZ_TIE|DZ_MSE;
dzaddr->dztcr = 1; /* enable any line */
#endif
dzaddr->dzcsr = DZ_TIE|DZ_MSE;
dzaddr->dztcr = 1; /* enable any line */
-/* lp.c 4.20 81/07/25 */
+/* lp.c 4.21 81/11/18 */
#include "lp.h"
#if NLP > 0
#include "lp.h"
#if NLP > 0
register struct lpdevice *lpaddr = (struct lpdevice *)reg;
#ifdef lint
br = 0; cvec = br; br = cvec;
register struct lpdevice *lpaddr = (struct lpdevice *)reg;
#ifdef lint
br = 0; cvec = br; br = cvec;
#endif
lpaddr->lpsr = IENABLE;
#endif
lpaddr->lpsr = IENABLE;
-/* rk.c 4.36 81/07/25 */
+/* rk.c 4.37 81/11/18 */
#include "rk.h"
#if NHK > 0
#include "rk.h"
#if NHK > 0
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
#endif
((struct rkdevice *)reg)->rkcs1 = RK_CDT|RK_IE|RK_CRDY;
DELAY(10);
#endif
((struct rkdevice *)reg)->rkcs1 = RK_CDT|RK_IE|RK_CRDY;
DELAY(10);
-/* tm.c 4.43 81/11/10 */
+/* tm.c 4.44 81/11/18 */
#include "te.h"
#include "ts.h"
#include "te.h"
#include "ts.h"
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
#endif
((struct device *)reg)->tmcs = TM_IE;
/*
#endif
((struct device *)reg)->tmcs = TM_IE;
/*
-/* ts.c 4.19 81/07/09 */
+/* ts.c 4.20 81/11/18 */
#include "ts.h"
#include "te.h"
#include "ts.h"
#include "te.h"
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
- /****************/
- /* */
- /* K L U D G E */
- /* */
- /****************/
+ /*
+ * Too hard to make it interrupt; don't try.
+ */
#if NTM > 0
if (havetm)
return (0);
#endif
#if NTM > 0
if (havetm)
return (0);
#endif
- /* IT'S TOO HARD TO MAKE THIS THING INTERRUPT
- JUST TO FIND ITS VECTOR */
cvec = 0224;
br = 0x15;
return (1);
cvec = 0224;
br = 0x15;
return (1);
-/* uba.c 4.36 81/11/07 */
+/* uba.c 4.37 81/11/18 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
-/* up.c 4.39 81/05/11 */
+/* up.c 4.40 81/11/18 */
#include "up.h"
#if NSC > 0
#include "up.h"
#if NSC > 0
#ifdef lint
br = 0; cvec = br; br = cvec;
#ifdef lint
br = 0; cvec = br; br = cvec;
#endif
((struct updevice *)reg)->upcs1 = UP_IE|UP_RDY;
DELAY(10);
#endif
((struct updevice *)reg)->upcs1 = UP_IE|UP_RDY;
DELAY(10);
#include "tj.h"
#if NUT > 0
#include "tj.h"
#if NUT > 0
#define SERASE 5 /* erase inter-record gap */
#define SERASED 6 /* erased inter-record gap */
#define SERASE 5 /* erase inter-record gap */
#define SERASED 6 /* erased inter-record gap */
utprobe(reg)
caddr_t reg;
{
register int br, cvec;
#ifdef lint
br=0; cvec=br; br=cvec;
utprobe(reg)
caddr_t reg;
{
register int br, cvec;
#ifdef lint
br=0; cvec=br; br=cvec;
/*
* It appears the controller won't interrupt unless the
* slave is off-line...this is as bad as the TS-11.
*/
/*
* It appears the controller won't interrupt unless the
* slave is off-line...this is as bad as the TS-11.
*/
((struct utdevice *) reg)->utcs1 = UT_IE|UT_NOP|UT_GO;
DELAY(10000);
((struct utdevice *) reg)->utcs1 = UT_CLEAR|UT_GO;
((struct utdevice *) reg)->utcs1 = UT_IE|UT_NOP|UT_GO;
DELAY(10000);
((struct utdevice *) reg)->utcs1 = UT_CLEAR|UT_GO;
return (ENXIO);
ui = phys(tjdinfo[0], struct uba_device *);
up = phys(ui->ui_hd, struct uba_hd *)->uh_physuba;
return (ENXIO);
ui = phys(tjdinfo[0], struct uba_device *);
up = phys(ui->ui_hd, struct uba_hd *)->uh_physuba;
addr = (struct utdevice *)ui->ui_physaddr;
addr = (struct utdevice *)ui->ui_physaddr;
/*
* Be sure to set the appropriate density here. We use
* 6250, but maybe it should be done at 1600 to insure the
/*
* Be sure to set the appropriate density here. We use
* 6250, but maybe it should be done at 1600 to insure the
-/* va.c 4.10 81/07/08 */
+/* va.c 4.11 81/11/18 */
#include "va.h"
#if NVA > 0
#include "va.h"
#if NVA > 0
register int br, cvec; /* value-result */
register struct vadevice *vaaddr = (struct vadevice *)reg;
register int br, cvec; /* value-result */
register struct vadevice *vaaddr = (struct vadevice *)reg;
+#ifdef lint
+ br = 0; cvec = br; br = cvec;
+ vaintr(0);
+#endif
vaaddr->vacsl = VA_IENABLE;
vaaddr->vaba = 0;
vaaddr->vacsh = VAPLOT;
vaaddr->vacsl = VA_IENABLE;
vaaddr->vaba = 0;
vaaddr->vacsh = VAPLOT;
+/* vp.c 4.10 81/11/18 */
#include "vp.h"
#if NVP > 0
#include "vp.h"
#if NVP > 0
register int br, cvec; /* value-result */
register struct vpdevice *vpaddr = (struct vpdevice *)(reg-010);
register int br, cvec; /* value-result */
register struct vpdevice *vpaddr = (struct vpdevice *)(reg-010);
+#ifdef lint
+ br = 0; cvec = br; br = cvec;
+ vpintr(0);
+#endif
vpaddr->prcsr = VP_IENABLE|VP_DTCINTR;
vpaddr->pbaddr = 0;
vpaddr->pbxaddr = 0;
vpaddr->prcsr = VP_IENABLE|VP_DTCINTR;
vpaddr->pbaddr = 0;
vpaddr->pbxaddr = 0;
-/* conf.c 4.42 81/11/11 */
+/* conf.c 4.43 81/11/18 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
#include "hp.h"
#if NHP > 0
#include "hp.h"
#if NHP > 0
-int hpstrategy(),hpread(),hpwrite(),hpintr(),hpdump();
+int hpstrategy(),hpread(),hpwrite(),hpdump();
#else
#define hpstrategy nodev
#define hpread nodev
#define hpwrite nodev
#else
#define hpstrategy nodev
#define hpread nodev
#define hpwrite nodev
#define hpdump nodev
#endif
#define hpdump nodev
#endif
#if defined(VAX750) || defined(VAX7ZZ)
/*
#if defined(VAX750) || defined(VAX7ZZ)
/*
/*
* Structure of a command packet
*/
/*
* Structure of a command packet
*/
struct packet {
u_char pk_flag; /* indicates packet type (cmd, data, etc.) */
u_char pk_mcount; /* length of packet (bytes) */
u_char pk_op; /* operation to perform (read, write, etc.) */
struct packet {
u_char pk_flag; /* indicates packet type (cmd, data, etc.) */
u_char pk_mcount; /* length of packet (bytes) */
u_char pk_op; /* operation to perform (read, write, etc.) */
- u_char pk_mod; /* modifier for op or returned status */
+ char pk_mod; /* modifier for op or returned status */
u_char pk_unit; /* unit number */
u_char pk_sw; /* switches */
u_short pk_seq; /* sequence number, always zero */
u_char pk_unit; /* unit number */
u_char pk_sw; /* switches */
u_short pk_seq; /* sequence number, always zero */
/*
* State information
*/
/*
* State information
*/
struct tu {
u_char *rbptr; /* pointer to buffer for read */
int rcnt; /* how much to read */
struct tu {
u_char *rbptr; /* pointer to buffer for read */
int rcnt; /* how much to read */
tuopen(dev, flag)
{
extern int tuwatch();
tuopen(dev, flag)
{
extern int tuwatch();
+#ifdef lint
+ turintr(); tuwintr();
+#endif
if (minor(dev) >= NTU) {
u.u_error = ENXIO;
return;
if (minor(dev) >= NTU) {
u.u_error = ENXIO;
return;
tureset();
sleep((caddr_t)&tu, PZERO);
tutab.b_active = NULL;
tureset();
sleep((caddr_t)&tu, PZERO);
tutab.b_active = NULL;
- if (tu.state != IDLE) { /* couldn't initialize */
+ if (tu.state != IDLE) { /* couldn't initialize */
u.u_error = ENXIO;
tu.state = INIT1;
tu.rcnt = tu.wcnt = 0;
u.u_error = ENXIO;
tu.state = INIT1;
tu.rcnt = tu.wcnt = 0;
if (tutab.b_active == 0) {
mtpr(CSRS, 0);
tutimer = 0;
if (tutab.b_active == 0) {
mtpr(CSRS, 0);
tutimer = 0;
tu.state = INIT1;
tu.wbptr = tunull;
tu.wcnt = sizeof tunull;
tu.state = INIT1;
tu.wbptr = tunull;
tu.wcnt = sizeof tunull;
/*
* Strategy routine for block I/O
*/
/*
* Strategy routine for block I/O
*/
-register struct buf *bp;
+ register struct buf *bp;
if (bp->b_blkno >= NTUBLK) { /* block number out of range? */
bp->b_flags |= B_ERROR;
iodone(bp);
if (bp->b_blkno >= NTUBLK) { /* block number out of range? */
bp->b_flags |= B_ERROR;
iodone(bp);
/*
* Start the transfer
*/
/*
* Start the transfer
*/
tustart()
{
register struct buf *bp;
tustart()
{
register struct buf *bp;
if ((bp = tutab.b_actf) == NULL)
return;
if (tu.state != IDLE) {
if ((bp = tutab.b_actf) == NULL)
return;
if (tu.state != IDLE) {
tucmd.pk_unit = minor(bp->b_dev);
tucmd.pk_count = tu.count = bp->b_bcount;
tucmd.pk_block = bp->b_blkno;
tucmd.pk_unit = minor(bp->b_dev);
tucmd.pk_count = tu.count = bp->b_bcount;
tucmd.pk_block = bp->b_blkno;
- tucmd.pk_chksum = tuchk(*((short *)&tucmd), &tucmd.pk_op,
- tucmd.pk_mcount);
+ tucmd.pk_chksum =
+ tuchk(*((short *)&tucmd), (caddr_t)&tucmd.pk_op,
+ (int)tucmd.pk_mcount);
tu.state = bp->b_flags&B_READ ? SENDR : SENDW;
tu.addr = bp->b_un.b_addr;
tu.count = bp->b_bcount;
tu.state = bp->b_flags&B_READ ? SENDR : SENDW;
tu.addr = bp->b_un.b_addr;
tu.count = bp->b_bcount;
/*
* TU58 receiver interrupt
*/
/*
* TU58 receiver interrupt
*/
turintr()
{
register struct buf *bp;
turintr()
{
register struct buf *bp;
;
mtpr(CSTD, TUF_CONT); /* ACK */
}
;
mtpr(CSTD, TUF_CONT); /* ACK */
}
- if (tu.rcnt) { /* still waiting for data? */
+ if (tu.rcnt) { /* still waiting for data? */
*tu.rbptr++ = c; /* yup, put it there */
*tu.rbptr++ = c; /* yup, put it there */
- if (--tu.rcnt) /* decrement count, any left? */
- return; /* get some more */
+ if (--tu.rcnt) /* decrement count, any left? */
+ return; /* get some more */
}
/*
* We got all the data we were expecting for now,
* switch on the state of the transfer.
*/
}
/*
* We got all the data we were expecting for now,
* switch on the state of the transfer.
*/
case INIT2:
if (c == TUF_CONT) /* did we get the expected continue? */
tu.state = IDLE;
case INIT2:
if (c == TUF_CONT) /* did we get the expected continue? */
tu.state = IDLE;
}
tu.flag = 0;
tudata.pk_flag = TUF_DATA;
}
tu.flag = 0;
tudata.pk_flag = TUF_DATA;
- tudata.pk_mcount = min(128, tu.count);
- tudata.pk_chksum = tuchk(*((short *)&tudata), tu.addr,
- tudata.pk_mcount);
+ tudata.pk_mcount = MIN(128, tu.count);
+ tudata.pk_chksum =
+ tuchk(*((short *)&tudata), (caddr_t)tu.addr,
+ (int)tudata.pk_mcount);
tu.state = SENDH;
tu.wbptr = (u_char *)&tudata;
tu.wcnt = 2;
tu.state = SENDH;
tu.wbptr = (u_char *)&tudata;
tu.wcnt = 2;
break;
case GETH: /* got header, get data */
break;
case GETH: /* got header, get data */
- if (tudata.pk_flag == TUF_DATA) /* is it a data message? */
- tu.rbptr = (u_char *)tu.addr; /* yes, put it in buffer */
- tu.rcnt = tudata.pk_mcount; /* amount to get */
+ if (tudata.pk_flag == TUF_DATA) /* data message? */
+ tu.rbptr = (u_char *)tu.addr; /* yes put in buffer */
+ tu.rcnt = tudata.pk_mcount; /* amount to get */
case GET:
case GETC: /* got entire packet */
#ifdef notdef
case GET:
case GETC: /* got entire packet */
#ifdef notdef
- if (tuchk(*((short *)&tudata), tudata.pk_flag == TUF_DATA ? tu.addr
- : &tudata.pk_op, tudata.pk_mcount) != tudata.pk_chksum)
+ if (tudata.pk_chksum !=
+ tuchk(*((short *)&tudata),
+ tudata.pk_flag == TUF_DATA ? tu.addr : &tudata.pk_op,
+ (int)tudata.pk_mcount))
- if (tudata.pk_flag == TUF_DATA) { /* was it a data packet? */
- tu.addr += tudata.pk_mcount; /* update buf addr */
- tu.count -= tudata.pk_mcount; /* and byte count */
+ if (tudata.pk_flag == TUF_DATA) {
+ /* data packet, advance to next */
+ tu.addr += tudata.pk_mcount;
+ tu.count -= tudata.pk_mcount;
tu.state = GETH;
tu.rbptr = (u_char *)&tudata; /* next packet */
tu.rcnt = 2;
tu.state = GETH;
tu.rbptr = (u_char *)&tudata; /* next packet */
tu.rcnt = 2;
- } else /* was it an end packet? */
- if (tudata.pk_flag == TUF_CMD && tudata.pk_op == TUOP_END) {
- tu.state = IDLE; /* all done reading */
+ } else if (tudata.pk_flag==TUF_CMD && tudata.pk_op==TUOP_END) {
+ /* end packet, idle and reenable transmitter */
+ tu.state = IDLE;
- mtpr(CSTS, IE); /* reenable transmitter */
printd("ON ");
if ((bp = tutab.b_actf) == NULL) {
printf("tu: no bp!\n");
printd("ON ");
if ((bp = tutab.b_actf) == NULL) {
printf("tu: no bp!\n");
tustart();
} else {
printf("neither data nor end: %o %o\n",
tustart();
} else {
printf("neither data nor end: %o %o\n",
- tudata.pk_flag&0xff, tudata.pk_op&0xff);
+ tudata.pk_flag&0xff, tudata.pk_op&0xff);
mtpr(CSRS, 0); /* flush the rest */
tu.state = INIT1;
}
mtpr(CSRS, 0); /* flush the rest */
tu.state = INIT1;
}
- default: /* what are we doing here??? */
if (c == TUF_INITF) {
printf("TU protocol error, state %d\n", tu.state);
if (c == TUF_INITF) {
printf("TU protocol error, state %d\n", tu.state);
- printf("%o %d %d\n", tucmd.pk_op, tucmd.pk_count, tucmd.pk_block);
+ printf("%o %d %d\n",
+ tucmd.pk_op, tucmd.pk_count, tucmd.pk_block);
tutab.b_active = NULL;
if (bp = tutab.b_actf) {
bp->b_flags |= B_ERROR;
tutab.b_active = NULL;
if (bp = tutab.b_actf) {
bp->b_flags |= B_ERROR;
/*
* TU58 transmitter interrupt
*/
/*
* TU58 transmitter interrupt
*/
- top:
- if (tu.wcnt) { /* still stuff to send out? */
+
+top:
+ if (tu.wcnt) {
+ /* still stuff to send, send one byte */
while ((mfpr(CSTS) & READY) == 0)
;
while ((mfpr(CSTS) & READY) == 0)
;
- mtpr(CSTD, *tu.wbptr++); /* yup, send another byte */
- tu.wcnt--; /* decrement count */
+ mtpr(CSTD, *tu.wbptr++);
+ tu.wcnt--;
* Last message byte was sent out.
* Switch on state of transfer.
*/
* Last message byte was sent out.
* Switch on state of transfer.
*/
printd("tuxintr: state %d\n", tu.state);
switch(tu.state) {
printd("tuxintr: state %d\n", tu.state);
switch(tu.state) {
case INIT1: /* two nulls sent, remove break, send inits */
mtpr(CSTS, IE);
printd("ON2 ");
case INIT1: /* two nulls sent, remove break, send inits */
mtpr(CSTS, IE);
printd("ON2 ");
goto top;
case INIT2: /* inits sent, wait for continue */
goto top;
case INIT2: /* inits sent, wait for continue */
mtpr(CSRS, IE);
tu.flag = 1;
break;
mtpr(CSRS, IE);
tu.flag = 1;
break;
* it has to be fast and it is hard to
* do add-carry in C. Sorry.
*/
* it has to be fast and it is hard to
* do add-carry in C. Sorry.
*/
-register int word0; /* r11 */
-register char *wp; /* r10 */
-register int n; /* r9 */
+ register int word0; /* known to be r11 */
+ register caddr_t wp; /* known to be r10 */
+ register int n; /* known to be r9 */
asm("loop:");
asm(" addw2 (r10)+,r11"); /* add a word to sum */
asm(" adwc $0,r11"); /* add in carry, end-around */
asm("loop:");
asm(" addw2 (r10)+,r11"); /* add a word to sum */
asm(" adwc $0,r11"); /* add in carry, end-around */
asm(" adwc $0,r11"); /* and the carry */
asm("ok:");
asm(" movl r11,r0"); /* return sum */
asm(" adwc $0,r11"); /* and the carry */
asm("ok:");
asm(" movl r11,r0"); /* return sum */
+#ifdef lint
+ return (0);
+#endif
tu.wbptr, tu.wcnt, tu.state, tu.flag, tu.addr, tu.count);
tu.flag = 0;
s = splx(TUIPL);
tu.wbptr, tu.wcnt, tu.state, tu.flag, tu.addr, tu.count);
tu.flag = 0;
s = splx(TUIPL);
mtpr(CSRS, IE); /* in case we were flushing */
mtpr(CSTS, IE);
tu.state = IDLE;
mtpr(CSRS, IE); /* in case we were flushing */
mtpr(CSTS, IE);
tu.state = IDLE;