Thread View: comp.bugs.2bsd
1 messages
1 total messages
Started by taylor
Thu, 12 Mar 1987 20:58
dhu/dhv bug in 2.9CSS (and Fix)
Author: taylor
Date: Thu, 12 Mar 1987 20:58
Date: Thu, 12 Mar 1987 20:58
167 lines
5345 bytes
5345 bytes
Subject: Bug in 2.9CSS dhu driver (with patch)
Index: sys/dev/dhu.c 2.9CSS/Harvard
Description:
The dhu/dhv driver will send very strange characters to the
dhu/dhv terminal (Eg. 30 K's, 25 spaces, ...) when running
on a Q_BUS (Non unibus mapped machine) based machine with
UCB_CLISTS enabled.
Repeat-By:
Configure a kernel with a dhu/dhv and UCB_CLIST enabled.
Fix:
See context diffs included.
*** dhu.c Thu Mar 12 10:46:22 1987
--- dhu.c.orig Fri Feb 13 16:19:19 1987
***************
*** 32,37
extern int hz;
#ifdef UCB_CLIST
extern struct cblock *cfree;
#else UCB_CLIST
--- 32,41 -----
extern int hz;
+ #if defined (UNIBUS_MAP) || defined (UCB_CLIST)
+
+ extern ubadr_t clstaddr;
+
#ifdef UCB_CLIST
extern struct cblock *cfree;
#else UCB_CLIST
***************
*** 38,45
extern struct cblock cfree[];
#endif UCB_CLIST
- #if defined (UNIBUS_MAP) || defined (UCB_CLIST)
- extern ubadr_t clstaddr;
#define cpaddr(x) (clstaddr + (ubadr_t)((x) - cfree))
#else defined (UNIBUS_MAP) || defined (UCB_CLIST)
#define cpaddr(x) ((u_short)(x))
--- 42,47 -----
extern struct cblock cfree[];
#endif UCB_CLIST
#define cpaddr(x) (clstaddr + (ubadr_t)((x) - cfree))
#else defined (UNIBUS_MAP) || defined (UCB_CLIST)
***************
*** 41,46
#if defined (UNIBUS_MAP) || defined (UCB_CLIST)
extern ubadr_t clstaddr;
#define cpaddr(x) (clstaddr + (ubadr_t)((x) - cfree))
#else defined (UNIBUS_MAP) || defined (UCB_CLIST)
#define cpaddr(x) ((u_short)(x))
#endif defined (UNIBUS_MAP) || defined (UCB_CLIST)
--- 43,49 -----
#endif UCB_CLIST
#define cpaddr(x) (clstaddr + (ubadr_t)((x) - cfree))
+
#else defined (UNIBUS_MAP) || defined (UCB_CLIST)
#define cpaddr(x) ((u_short)(x))
#endif defined (UNIBUS_MAP) || defined (UCB_CLIST)
***************
*** 562,568
register struct dhusoftc *sc;
register int line, t;
u_short cntr;
- ubadr_t base;
sc = &dhu_softc[dhu];
tp0 = &dhu11[dhu << NDHUSHIFT];
--- 565,570 -----
register struct dhusoftc *sc;
register int line, t;
u_short cntr;
sc = &dhu_softc[dhu];
tp0 = &dhu11[dhu << NDHUSHIFT];
***************
*** 589,595
*
* In either case, the extension bits are 0.
*/
- #if !defined(UCB_CLIST) || defined(UNIBUS_MAP)
cntr = addr->dhubar1 - cpaddr(tp->t_outq.c_cf);
#else /* defined (UCB_CLIST) && !defined(UNIBUS_MAP) */
base = (ubadr_t) addr->dhubar1
--- 591,596 -----
*
* In either case, the extension bits are 0.
*/
cntr = addr->dhubar1 - cpaddr(tp->t_outq.c_cf);
ndflush(&tp->t_outq,cntr);
}
***************
*** 591,601
*/
#if !defined(UCB_CLIST) || defined(UNIBUS_MAP)
cntr = addr->dhubar1 - cpaddr(tp->t_outq.c_cf);
- #else /* defined (UCB_CLIST) && !defined(UNIBUS_MAP) */
- base = (ubadr_t) addr->dhubar1
- | (ubadr_t) (( addr->dhubar2 & 037) << 16);
- cntr = base - cpaddr(tp->t_outq.c_cf);
- #endif !defined(UCB_CLIST) || defined(UNIBUS_MAP)
ndflush(&tp->t_outq,cntr);
}
#ifndef pdp11
--- 592,597 -----
* In either case, the extension bits are 0.
*/
cntr = addr->dhubar1 - cpaddr(tp->t_outq.c_cf);
ndflush(&tp->t_outq,cntr);
}
#ifndef pdp11
***************
*** 683,689
addr->dhulcr &= ~DHU_LC_TXABORT;
addr->dhubcr = nch;
addr->dhubar1 = loint(car);
- #if !defined(UCB_CLIST) || defined(UNIBUS_MAP)
addr->dhubar2 = (hiint(car) & DHU_BA2_XBA) | DHU_BA2_DMAGO;
#else /* defined (UCB_CLIST) && !defined(UNIBUS_MAP) */
addr->dhubar2 = (hiint(car) & 037) | DHU_BA2_DMAGO;
--- 679,684 -----
addr->dhulcr &= ~DHU_LC_TXABORT;
addr->dhubcr = nch;
addr->dhubar1 = loint(car);
addr->dhubar2 = (hiint(car) & DHU_BA2_XBA) | DHU_BA2_DMAGO;
tp->t_state |= BUSY;
}
***************
*** 685,693
addr->dhubar1 = loint(car);
#if !defined(UCB_CLIST) || defined(UNIBUS_MAP)
addr->dhubar2 = (hiint(car) & DHU_BA2_XBA) | DHU_BA2_DMAGO;
- #else /* defined (UCB_CLIST) && !defined(UNIBUS_MAP) */
- addr->dhubar2 = (hiint(car) & 037) | DHU_BA2_DMAGO;
- #endif !defined(UCB_CLIST) || defined(UNIBUS_MAP)
tp->t_state |= BUSY;
}
out:
--- 680,685 -----
addr->dhubcr = nch;
addr->dhubar1 = loint(car);
addr->dhubar2 = (hiint(car) & DHU_BA2_XBA) | DHU_BA2_DMAGO;
tp->t_state |= BUSY;
}
out:
--
UUCP: sunybcs\ U.S.MAIL: Paul R. Taylor
allegra!warrior\ Systems Programmer
seismo!rochester!rocksvax!oswego!taylor Instructional Computing Center
{batcomputer|gould}!tundra/ Oswego, NY 13126
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads