projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
after attempt at ht driver at cc again; working with new
[unix-history]
/
usr
/
src
/
sys
/
vax
/
uba
/
rk.c
diff --git
a/usr/src/sys/vax/uba/rk.c
b/usr/src/sys/vax/uba/rk.c
index
087c72f
..
07cac8c
100644
(file)
--- a/
usr/src/sys/vax/uba/rk.c
+++ b/
usr/src/sys/vax/uba/rk.c
@@
-1,4
+1,4
@@
-/* rk.c 4.2
3
%G% */
+/* rk.c 4.2
4
%G% */
int rkpip;
int rknosval;
int rkpip;
int rknosval;
@@
-24,7
+24,8
@@
int rknosval;
#include "../h/pte.h"
#include "../h/map.h"
#include "../h/vm.h"
#include "../h/pte.h"
#include "../h/map.h"
#include "../h/vm.h"
-#include "../h/uba.h"
+#include "../h/ubareg.h"
+#include "../h/ubavar.h"
#include "../h/dk.h"
#include "../h/cpu.h"
#include "../h/cmap.h"
#include "../h/dk.h"
#include "../h/cpu.h"
#include "../h/cmap.h"
@@
-55,9
+56,9
@@
struct size {
/* END OF STUFF WHICH SHOULD BE READ IN PER DISK */
int rkprobe(), rkslave(), rkattach(), rkdgo(), rkintr();
/* END OF STUFF WHICH SHOULD BE READ IN PER DISK */
int rkprobe(), rkslave(), rkattach(), rkdgo(), rkintr();
-struct uba_
minfo
*rkminfo[NHK];
-struct uba_d
info
*rkdinfo[NRK];
-struct uba_d
info
*rkip[NHK][4];
+struct uba_
ctlr
*rkminfo[NHK];
+struct uba_d
evice
*rkdinfo[NRK];
+struct uba_d
evice
*rkip[NHK][4];
u_short rkstd[] = { 0777440, 0 };
struct uba_driver hkdriver =
u_short rkstd[] = { 0777440, 0 };
struct uba_driver hkdriver =
@@
-103,7
+104,7
@@
rkprobe(reg)
}
rkslave(ui, reg)
}
rkslave(ui, reg)
- struct uba_d
info
*ui;
+ struct uba_d
evice
*ui;
caddr_t reg;
{
register struct rkdevice *rkaddr = (struct rkdevice *)reg;
caddr_t reg;
{
register struct rkdevice *rkaddr = (struct rkdevice *)reg;
@@
-121,7
+122,7
@@
rkslave(ui, reg)
}
rkattach(ui)
}
rkattach(ui)
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
{
if (rkwstart == 0) {
{
if (rkwstart == 0) {
@@
-138,7
+139,7
@@
rkattach(ui)
rkstrategy(bp)
register struct buf *bp;
{
rkstrategy(bp)
register struct buf *bp;
{
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
register struct rkst *st;
register int unit;
register struct buf *dp;
register struct rkst *st;
register int unit;
register struct buf *dp;
@@
-176,10
+177,10
@@
bad:
}
rkustart(ui)
}
rkustart(ui)
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
{
register struct buf *bp, *dp;
{
register struct buf *bp, *dp;
- register struct uba_
minfo
*um;
+ register struct uba_
ctlr
*um;
register struct rkdevice *rkaddr;
register struct rkst *st;
daddr_t bn;
register struct rkdevice *rkaddr;
register struct rkst *st;
daddr_t bn;
@@
-243,10
+244,10
@@
out:
}
rkstart(um)
}
rkstart(um)
- register struct uba_
minfo
*um;
+ register struct uba_
ctlr
*um;
{
register struct buf *bp, *dp;
{
register struct buf *bp, *dp;
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
register struct rkdevice *rkaddr;
struct rkst *st;
daddr_t bn;
register struct rkdevice *rkaddr;
struct rkst *st;
daddr_t bn;
@@
-313,7
+314,7
@@
nosval:
}
rkdgo(um)
}
rkdgo(um)
- register struct uba_
minfo
*um;
+ register struct uba_
ctlr
*um;
{
register struct rkdevice *rkaddr = (struct rkdevice *)um->um_addr;
{
register struct rkdevice *rkaddr = (struct rkdevice *)um->um_addr;
@@
-324,8
+325,8
@@
rkdgo(um)
rkintr(rk11)
int rk11;
{
rkintr(rk11)
int rk11;
{
- register struct uba_
minfo
*um = rkminfo[rk11];
- register struct uba_d
info
*ui;
+ register struct uba_
ctlr
*um = rkminfo[rk11];
+ register struct uba_d
evice
*ui;
register struct rkdevice *rkaddr = (struct rkdevice *)um->um_addr;
register struct buf *bp, *dp;
int unit;
register struct rkdevice *rkaddr = (struct rkdevice *)um->um_addr;
register struct buf *bp, *dp;
int unit;
@@
-423,9
+424,18
@@
retry:
as &= ~(1<<ui->ui_slave);
}
for (unit = 0; as; as >>= 1, unit++)
as &= ~(1<<ui->ui_slave);
}
for (unit = 0; as; as >>= 1, unit++)
- if (as & 1)
- if (rkustart(rkip[rk11][unit]))
- needie = 0;
+ if (as & 1) {
+ ui = rkip[rk11][unit];
+ if (ui) {
+ if (rkustart(rkip[rk11][unit]))
+ needie = 0;
+ } else {
+ rkaddr->rkcs1 = RK_CERR|RK_CDT;
+ rkaddr->rkcs2 = unit;
+ rkaddr->rkcs1 = RK_CDT|RK_DCLR|RK_GO;
+ rkwait(rkaddr);
+ }
+ }
if (um->um_tab.b_actf && um->um_tab.b_active == 0)
if (rkstart(um))
needie = 0;
if (um->um_tab.b_actf && um->um_tab.b_active == 0)
if (rkstart(um))
needie = 0;
@@
-464,11
+474,11
@@
rkwrite(dev)
}
rkecc(ui)
}
rkecc(ui)
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
{
register struct rkdevice *rk = (struct rkdevice *)ui->ui_addr;
register struct buf *bp = rkutab[ui->ui_unit].b_actf;
{
register struct rkdevice *rk = (struct rkdevice *)ui->ui_addr;
register struct buf *bp = rkutab[ui->ui_unit].b_actf;
- register struct uba_
minfo
*um = ui->ui_mi;
+ register struct uba_
ctlr
*um = ui->ui_mi;
register struct rkst *st;
struct uba_regs *ubp = ui->ui_hd->uh_uba;
register int i;
register struct rkst *st;
struct uba_regs *ubp = ui->ui_hd->uh_uba;
register int i;
@@
-527,8
+537,8
@@
rkecc(ui)
rkreset(uban)
int uban;
{
rkreset(uban)
int uban;
{
- register struct uba_
minfo
*um;
- register struct uba_d
info
*ui;
+ register struct uba_
ctlr
*um;
+ register struct uba_d
evice
*ui;
register rk11, unit;
for (rk11 = 0; rk11 < NHK; rk11++) {
register rk11, unit;
for (rk11 = 0; rk11 < NHK; rk11++) {
@@
-557,7
+567,7
@@
rkreset(uban)
rkwatch()
{
rkwatch()
{
- register struct uba_
minfo
*um;
+ register struct uba_
ctlr
*um;
register rk11, unit;
register struct rk_softc *sc;
register rk11, unit;
register struct rk_softc *sc;
@@
-595,7
+605,7
@@
rkdump(dev)
int num, blk, unit;
struct size *sizes;
register struct uba_regs *uba;
int num, blk, unit;
struct size *sizes;
register struct uba_regs *uba;
- register struct uba_d
info
*ui;
+ register struct uba_d
evice
*ui;
register short *rp;
struct rkst *st;
register short *rp;
struct rkst *st;
@@
-603,7
+613,7
@@
rkdump(dev)
if (unit >= NRK)
return (ENXIO);
#define phys(cast, addr) ((cast)((int)addr & 0x7fffffff))
if (unit >= NRK)
return (ENXIO);
#define phys(cast, addr) ((cast)((int)addr & 0x7fffffff))
- ui = phys(struct uba_d
info
*, rkdinfo[unit]);
+ ui = phys(struct uba_d
evice
*, rkdinfo[unit]);
if (ui->ui_alive == 0)
return (ENXIO);
uba = phys(struct uba_hd *, ui->ui_hd)->uh_physuba;
if (ui->ui_alive == 0)
return (ENXIO);
uba = phys(struct uba_hd *, ui->ui_hd)->uh_physuba;
@@
-635,7
+645,7
@@
rkdump(dev)
blk = num > DBSIZE ? DBSIZE : num;
io = uba->uba_map;
for (i = 0; i < blk; i++)
blk = num > DBSIZE ? DBSIZE : num;
io = uba->uba_map;
for (i = 0; i < blk; i++)
- *(int *)io++ = (btop(start)+i) | (1<<21) | UBA_MRV;
+ *(int *)io++ = (btop(start)+i) | (1<<21) | UBA
MR
_MRV;
*(int *)io = 0;
bn = dumplo + btop(start);
cn = bn/st->nspc + sizes[minor(dev)&07].cyloff;
*(int *)io = 0;
bn = dumplo + btop(start);
cn = bn/st->nspc + sizes[minor(dev)&07].cyloff;