~kris/9p

9hist

696d66b49925f56ad7bca3da98011e0908fdf543 — David du Colombier 31 years ago 28a21c1
Plan 9 from Bell Labs 1995-07-28
2 files changed, 9 insertions(+), 4 deletions(-)

M pc/devata.c
M pc/devfloppy.c
M pc/devata.c => pc/devata.c +5 -0
@@ 813,6 813,7 @@ ataprobe(Drive *dp, int cyl, int sec, int head)
	cp->status = 0;
	cp->nsecs = 1;
	cp->sofar = 0;
	cp->buf = buf;

	outb(cp->pbase+Pcount, 1);
	outb(cp->pbase+Psector, sec+1);


@@ 1120,6 1121,10 @@ ataintr(Ureg *ur, void *arg)
		if(addr){
			addr += cp->sofar*dp->bytes;
			inss(cp->pbase+Pdata, addr, dp->bytes/2);
		} else {
			/* old drives/controllers hang unless the buffer is emptied */
			for(loop = dp->bytes/2; --loop >= 0;)
				ins(cp->pbase+Pdata);
		}
		cp->sofar++;
		if(cp->sofar > cp->nsecs)

M pc/devfloppy.c => pc/devfloppy.c +4 -4
@@ 946,11 946,11 @@ floppyxfer(Drive *dp, int cmd, void *a, long off, long n)
	if(off + n > dp->t->cap)
		n = dp->t->cap - off;

	/* retry on error 3 times */
	/* retry on error */
	tries = 0;
	while(waserror()){
		DPRINT("floppyxfer: retrying\n");
		if(tries++ >= 3)
		if(tries++ > 20)
			nexterror();
	}



@@ 973,9 973,9 @@ floppyxfer(Drive *dp, int cmd, void *a, long off, long n)
	/*
	 *  start operation
	 */
	cmd = cmd | (dp->t->heads > 1 ? Fmulti : 0);
	cmd = cmd;
	fl.ncmd = 0;
	fl.cmd[fl.ncmd++] = cmd;
	fl.cmd[fl.ncmd++] = cmd | (dp->t->heads > 1 ? Fmulti : 0);
	fl.cmd[fl.ncmd++] = (dp->thead<<2) | dp->dev;
	fl.cmd[fl.ncmd++] = dp->tcyl;
	fl.cmd[fl.ncmd++] = dp->thead;