diff options
| author | ragge <ragge@NetBSD.org> | 1994-10-08 15:46:15 +0000 |
|---|---|---|
| committer | ragge <ragge@NetBSD.org> | 1994-10-08 15:46:15 +0000 |
| commit | 5a58654e8aef1aa6702fcf5ff2b783c79dfa511e (patch) | |
| tree | a7cda00a995d1aca5f5d6297a13cbd5bd9487e60 | |
| parent | e2ce91ebf4b7522d794083cba495006081e3eebb (diff) | |
Fixed bugs according to old memory system.
| -rw-r--r-- | sys/arch/vax/uba/uba.c | 41 | ||||
| -rw-r--r-- | sys/arch/vax/uba/uda.c | 10 | ||||
| -rw-r--r-- | sys/dev/dec/qbus/uba.c | 41 |
3 files changed, 53 insertions, 39 deletions
diff --git a/sys/arch/vax/uba/uba.c b/sys/arch/vax/uba/uba.c index 5fe28c2ecb6..620284e3efe 100644 --- a/sys/arch/vax/uba/uba.c +++ b/sys/arch/vax/uba/uba.c @@ -33,7 +33,7 @@ * * from: @(#)uba.c 7.10 (Berkeley) 12/16/90 * also from: @(#)autoconf.c 7.20 (Berkeley) 5/9/91 - * $Id: uba.c,v 1.1 1994/08/02 20:21:22 ragge Exp $ + * $Id: uba.c,v 1.2 1994/10/08 15:46:15 ragge Exp $ */ /* All bugs are subject to removal without further notice */ @@ -603,25 +603,32 @@ ubasetup(int uban,struct buf *bp,int flags) { temp |= UBAMR_BO; if ((bp->b_flags & B_PHYS) == 0) pte = kvtopte(bp->b_un.b_addr); -/* else if (bp->b_flags & B_PAGET) - pte = &Usrptmap[btokmx((struct pte *)bp->b_un.b_addr)]; */ - else { - printf("bp->b_flags: %x\n",bp->b_flags); - printf("bp->b_un.b_addr: %x\n",bp->b_un.b_addr); - printf("bp->b_proc: %x\n",bp->b_proc); - printf("stopp.\n"); + else if (bp->b_flags & B_PAGET) { + printf("B_PAGET\n"); asm("halt"); - rp = bp->b_flags&B_DIRTY ? &pageproc[2] : bp->b_proc; - v = vax_btop(bp->b_un.b_addr); -/* if (bp->b_flags & B_UAREA) - pte = &rp->p_addr[v]; - else - pte = vtopte(rp, v); -*/ +/* pte = &Usrptmap[btokmx((struct pte *)bp->b_un.b_addr)]; */ + } else { + if( bp->b_flags&B_DIRTY){ + rp=&pageproc[2]; + printf("B_DIRTY\n"); + asm("halt"); + } else { + rp =bp->b_proc; + } + v = vax_btop(PxTOP0((u_int)bp->b_un.b_addr)); + if (bp->b_flags & B_UAREA){ + printf("B_UAREA\n"); + asm("halt"); +/* pte = &rp->p_addr[v]; */ + } else { +/* + * It may be better to use pmap_extract() here somewhere, + * but so far we do it "the hard way" :) + */ + pte=&rp->p_vmspace->vm_pmap.pm_ptab[v]; + } } io = &uh->uh_mr[reg]; -/* printf("pte: %x\n",pte); - printf("npf: %x, reg: %x, io: %x\n",npf,reg,io); */ while (--npf > 0) { pfnum = pte->pg_pfn; if (pfnum == 0) diff --git a/sys/arch/vax/uba/uda.c b/sys/arch/vax/uba/uda.c index aed1de92132..fa23b93d8cd 100644 --- a/sys/arch/vax/uba/uda.c +++ b/sys/arch/vax/uba/uda.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)uda.c 7.32 (Berkeley) 2/13/91 - * $Id: uda.c,v 1.1 1994/08/02 20:21:30 ragge Exp $ + * $Id: uda.c,v 1.2 1994/10/08 15:46:17 ragge Exp $ */ /* @@ -1029,14 +1029,14 @@ udastrat1(bp) */ um = (ui = udadinfo[unit])->ui_mi; dp = &udautab[unit]; - APPEND(bp, dp, b_actf); + MSCP_APPEND(bp, dp, b_actf); if (dp->b_active == 0 && (ui->ui_flags & UNIT_REQUEUE) == 0) { - APPEND(dp, &um->um_tab, b_hash.le_next); + MSCP_APPEND(dp, &um->um_tab, b_hash.le_next); dp->b_active++; } -/* Was: APPEND(bp, dp, av_forw); +/* Was: MSCP_APPEND(bp, dp, av_forw); if (dp->b_active == 0 && (ui->ui_flags & UNIT_REQUEUE) == 0) { - APPEND(dp, &um->um_tab, b_forw); + MSCP_APPEND(dp, &um->um_tab, b_forw); dp->b_active++; } */ diff --git a/sys/dev/dec/qbus/uba.c b/sys/dev/dec/qbus/uba.c index 5fe28c2ecb6..620284e3efe 100644 --- a/sys/dev/dec/qbus/uba.c +++ b/sys/dev/dec/qbus/uba.c @@ -33,7 +33,7 @@ * * from: @(#)uba.c 7.10 (Berkeley) 12/16/90 * also from: @(#)autoconf.c 7.20 (Berkeley) 5/9/91 - * $Id: uba.c,v 1.1 1994/08/02 20:21:22 ragge Exp $ + * $Id: uba.c,v 1.2 1994/10/08 15:46:15 ragge Exp $ */ /* All bugs are subject to removal without further notice */ @@ -603,25 +603,32 @@ ubasetup(int uban,struct buf *bp,int flags) { temp |= UBAMR_BO; if ((bp->b_flags & B_PHYS) == 0) pte = kvtopte(bp->b_un.b_addr); -/* else if (bp->b_flags & B_PAGET) - pte = &Usrptmap[btokmx((struct pte *)bp->b_un.b_addr)]; */ - else { - printf("bp->b_flags: %x\n",bp->b_flags); - printf("bp->b_un.b_addr: %x\n",bp->b_un.b_addr); - printf("bp->b_proc: %x\n",bp->b_proc); - printf("stopp.\n"); + else if (bp->b_flags & B_PAGET) { + printf("B_PAGET\n"); asm("halt"); - rp = bp->b_flags&B_DIRTY ? &pageproc[2] : bp->b_proc; - v = vax_btop(bp->b_un.b_addr); -/* if (bp->b_flags & B_UAREA) - pte = &rp->p_addr[v]; - else - pte = vtopte(rp, v); -*/ +/* pte = &Usrptmap[btokmx((struct pte *)bp->b_un.b_addr)]; */ + } else { + if( bp->b_flags&B_DIRTY){ + rp=&pageproc[2]; + printf("B_DIRTY\n"); + asm("halt"); + } else { + rp =bp->b_proc; + } + v = vax_btop(PxTOP0((u_int)bp->b_un.b_addr)); + if (bp->b_flags & B_UAREA){ + printf("B_UAREA\n"); + asm("halt"); +/* pte = &rp->p_addr[v]; */ + } else { +/* + * It may be better to use pmap_extract() here somewhere, + * but so far we do it "the hard way" :) + */ + pte=&rp->p_vmspace->vm_pmap.pm_ptab[v]; + } } io = &uh->uh_mr[reg]; -/* printf("pte: %x\n",pte); - printf("npf: %x, reg: %x, io: %x\n",npf,reg,io); */ while (--npf > 0) { pfnum = pte->pg_pfn; if (pfnum == 0) |
