From 282a48582d4a5730446504b447fb7da5445fd04f Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 8 Dec 1993 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1993-12-08 --- carrera/devether.c | 4 ++-- carrera/l.s | 2 +- carrera/main.c | 14 +++++++++++++- carrera/mmu.c | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/carrera/devether.c b/carrera/devether.c index 335db963504f24d2cf3deaae8348c3c89884d07e..f0cf7584b48b8ae04f756f3021b6f2090c5662b2 100644 --- a/carrera/devether.c +++ b/carrera/devether.c @@ -690,12 +690,12 @@ etherloop(Etherpkt *p, long n) Netfile *f, **fp; different = memcmp(p->d, p->s, sizeof(p->s)); - if(different && memcmp(p->d, ether.bcast, sizeof(p->d))) + if(different && memcmp(p->d, ether[0]->bcast, sizeof(p->d))) return 0; s = splhi(); t = (p->type[0]<<8) | p->type[1]; - for(fp = ether.f; fp < ðer.f[Ntypes]; fp++) { + for(fp = ether[0]->f; fp < ðer[0]->f[Ntypes]; fp++) { f = *fp; if(f == 0) continue; diff --git a/carrera/l.s b/carrera/l.s index da58a7cf94b1e5bb9ee0632e6aaf3aac68baa4ec..e5821c7a9a343726ea5f10ad3ed5a44249f8427e 100644 --- a/carrera/l.s +++ b/carrera/l.s @@ -212,7 +212,7 @@ TEXT getrandom(SB),$0 WAIT RET -TEXT puttlbx(SB), $0 +TEXT puttlbxx(SB), $0 MOVW 4(FP), R2 MOVW 8(FP), R3 diff --git a/carrera/main.c b/carrera/main.c index 17b86fd8e0928f7e6cafd5c47da67c8cadd27cd4..81959312aee5236503e3335e55e61444251130fa 100644 --- a/carrera/main.c +++ b/carrera/main.c @@ -197,13 +197,25 @@ ioinit(int mapeisa) puttlbx(2, Intctlvirt, intphys, isamphys, PGSZ1M); - /* Enable all devce interrupt */ + /* Enable all device interrupts */ IO(ushort, Intenareg) = 0xffff; /* Look at the first 16M of Eisa memory */ /* IO(uchar, EisaLatch) = 0; /**/ } +void puttlbxx(int, ulong, ulong, ulong, int); +void puttlbx(int a, ulong b, ulong c, ulong d, int e) +{ + static int done[4]; + + if(((c|d)&PTEVALID) && a < 4){ + if(done[a]++) + puttlbx(a, b, c, d, e); + } + puttlbxx(a, b, c, d, e); +} + /* * Pull the ethernet address out of NVRAM */ diff --git a/carrera/mmu.c b/carrera/mmu.c index 41b39aa55089e8f3d0d3a8f9e7e45327e2bdff8d..3c94f5a6508a38fe09f0fccd3d7e49bdc04b9d83 100644 --- a/carrera/mmu.c +++ b/carrera/mmu.c @@ -128,6 +128,7 @@ kunmap(KMap *k) s = splhi(); if(decref(k) == 0) { +puttlb((k->virt & ~BY2PG) | TLBPID(tlbvirt()), k->phys0 & ~PTEVALID, k->phys1 & ~PTEVALID); k->virt = 0; k->phys0 = 0; k->phys1 = 0;