From 14c1bf7daee649b67404f43a5ed0dd9717a2e9be Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 8 Sep 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-09-08 --- ss/main.c | 20 +++++--------------- ss/scsi.c | 21 +++++---------------- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/ss/main.c b/ss/main.c index 82b831607895d0bd2826f45c646766f77c8cc96f..3fa28c09a87879b74eecb2be22a75cb71762516d 100644 --- a/ss/main.c +++ b/ss/main.c @@ -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; } diff --git a/ss/scsi.c b/ss/scsi.c index 4044cab88d381f15f819b8749e3a4bc26f7a722f..866e1d563ad3713fe1ae6525edd3574bdd0ee8f4 100644 --- a/ss/scsi.c +++ b/ss/scsi.c @@ -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; }