~kris/9p

9hist

14c1bf7daee649b67404f43a5ed0dd9717a2e9be — David du Colombier 34 years ago 11643c3
Plan 9 from Bell Labs 1992-09-08
2 files changed, 10 insertions(+), 31 deletions(-)

M ss/main.c
M ss/scsi.c
M ss/main.c => ss/main.c +5 -15
@@ 461,7 461,7 @@ lancesetup(Lance *lp)
	KMap *k;
	uchar *cp;
	ulong pa, va;
	int i, j;
	int i;

	k = kmappa(ETHER, PTEIO|PTENOCACHE);
	lp->rdp = (void*)(k->va+0);


@@ 497,20 497,10 @@ lancesetup(Lance *lp)
	i = (lp->nrrb+lp->ntrb)*sizeof(Etherpkt);
	i = (i+(BY2PG-1))/BY2PG;
	pa = (ulong)xspanalloc(i*BY2PG, BY2PG, 0)&~KZERO;
	va = 0;
	for(j=i-1; j>=0; j--){
		k = kmappa(pa+j*BY2PG, PTEMAINMEM|PTENOCACHE);
		if(va){
			if(va != k->va+BY2PG)
				panic("lancesetup va unordered");
			va = k->va;
		}
	}
	/*
	 * k->va is the base of the region
	 */
	lp->lrp = (Etherpkt*)k->va;
	lp->rp = (Etherpkt*)k->va;
	va = kmapregion(pa, i*BY2PG, PTEMAINMEM|PTENOCACHE);

	lp->lrp = (Etherpkt*)va;
	lp->rp = (Etherpkt*)va;
	lp->ltp = lp->lrp+lp->nrrb;
	lp->tp = lp->rp+lp->nrrb;
}

M ss/scsi.c => ss/scsi.c +5 -16
@@ 18,31 18,20 @@ scsialloc(ulong n)
	Scsibuf *b;
	KMap *k;
	ulong pa, va;
	int i, j;
	int i;

	b = xalloc(sizeof(Scsibuf));

	/*
	 * Allocate space in host memory for the io buffer.
	 * Allocate a block and kmap it page by page.  kmap's are initially
	 * in reverse order so rearrange them.
	 * NOTE: dma mustn't cross a 16Mb boundary.
	 */
	i = (n+(BY2PG-1))/BY2PG;
	pa = (ulong)xspanalloc(i*BY2PG, BY2PG, 16*1024*1024) & ~KZERO;
	va = 0;
	k = 0;
	for(j=i-1; j>=0; j--){
		k = kmappa(pa+j*BY2PG, PTEMAINMEM|PTENOCACHE);
		if(va && va != k->va+BY2PG)
			panic("scsialloc va unordered\n");
		va = k->va;
	}
	/*
	 * k->va is the base of the region
	 */
	b->virt = (void*)k->va;
	b->phys = (void*)k->pa;
	va = kmapregion(pa, i*BY2PG, PTEMAINMEM|PTENOCACHE);

	b->virt = (void*)va;
	b->phys = (void*)pa;

	return b;
}