From fa33671867ae9d1ac622b48ccd3336a1d2c87541 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 1 May 2002 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2002-05-01 --- pc/mmu.c | 1 - pc/pci.c | 24 ++++++++++++------------ pc/vgavmware.c | 4 ++++ port/proc.c | 6 ++++-- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/pc/mmu.c b/pc/mmu.c index 4a2a0ed1f8c59b324bc24c228a63918c51967a75..3e7080e8a9152181e7a33dd91c465195b69e9e95 100644 --- a/pc/mmu.c +++ b/pc/mmu.c @@ -56,7 +56,6 @@ memglobal(void) int i, j; ulong *pde, *pte; -return; /* only need to do this once, on bootstrap processor */ if(m->machno != 0) return; diff --git a/pc/pci.c b/pc/pci.c index 0c5879c82c08db2ddb3b8cb9ea2eb96a78fe7f5f..f042b49e7c2f0eee5cffe989ed546345e996c415 100644 --- a/pc/pci.c +++ b/pc/pci.c @@ -672,11 +672,11 @@ pcirouting(void) uchar *p, *m, pin, irq; // Search for PCI interrupt routing table in BIOS - for (p = (uchar *)KADDR(0xf0000); p < (uchar *)KADDR(0xfffff); p += 16) - if (p[0] == '$' && p[1] == 'P' && p[2] == 'I' && p[3] == 'R') + for(p = (uchar *)KADDR(0xf0000); p < (uchar *)KADDR(0xfffff); p += 16) + if(p[0] == '$' && p[1] == 'P' && p[2] == 'I' && p[3] == 'R') break; - if (p >= (uchar *)KADDR(0xfffff)) + if(p >= (uchar *)KADDR(0xfffff)) return; r = (router_t *)p; @@ -691,20 +691,20 @@ pcirouting(void) return; } - for (i = 0; i != nelem(southbridges); i++) - if (sbpci->vid == southbridges[i].vid && sbpci->did == southbridges[i].did) + for(i = 0; i != nelem(southbridges); i++) + if(sbpci->vid == southbridges[i].vid && sbpci->did == southbridges[i].did) break; - if (i == nelem(southbridges)) { - print("pcirouting: South bridge %.4uX/%.4uX unknown\n", sbpci->vid, sbpci->did); + if(i == nelem(southbridges)) { + print("pcirouting: south bridge %.4uX/%.4uX (unknown type)\n", sbpci->vid, sbpci->did); return; } southbridge = &southbridges[i]; - + pciirqs = (r->rt_pciirqs[1] << 8)|r->rt_pciirqs[0]; size = (r->rt_size[1] << 8)|r->rt_size[0]; - for (e = (slot_t *)&r[1]; (uchar *)e < p + size; e++) { + for(e = (slot_t *)&r[1]; (uchar *)e < p + size; e++) { // print("%.2uX/%.2uX %.2uX: ", e->e_bus, e->e_dev, e->e_slot); // for (i = 0; i != 4; i++) { // uchar *m = &e->e_maps[i * 3]; @@ -713,20 +713,20 @@ pcirouting(void) // } // print("\n"); - for (fn = 0; fn != 8; fn++) { + for(fn = 0; fn != 8; fn++) { tbdf = (BusPCI << 24)|(e->e_bus << 16)|((e->e_dev | fn) << 8); pci = pcimatchtbdf(tbdf); if(pci == nil) continue; pin = pcicfgr8(pci, PciINTP); - if (pin == 0 || pin == 0xff) + if(pin == 0 || pin == 0xff) continue; m = &e->e_maps[(pin - 1) * 3]; irq = southbridge->get(sbpci, m[0]); if(irq == 0 || irq == pci->intl) continue; - if (pci->intl != 0 && pci->intl != 0xFF) { + if(pci->intl != 0 && pci->intl != 0xFF) { print("pcirouting: BIOS workaround: %T at pin %d irq %d -> %d\n", tbdf, pin, irq, pci->intl); southbridge->set(sbpci, m[0], pci->intl); diff --git a/pc/vgavmware.c b/pc/vgavmware.c index 8c5c0d35ea2bf783c2201f29cc16c740f15d1652..a2604c7072866b57b7af0918b09d158970533b92 100644 --- a/pc/vgavmware.c +++ b/pc/vgavmware.c @@ -330,6 +330,7 @@ vmwarefill(VGAscr*, Rectangle r, ulong sval) static void vmwaredrawinit(VGAscr *scr) { + ulong offset; ulong mmiobase, mmiosize; if(scr->mmio==nil){ @@ -353,6 +354,9 @@ vmwaredrawinit(VGAscr *scr) scr->scroll = vmwarescroll; scr->fill = vmwarefill; + + offset = vmrd(vm, Rfboffset); + scr->gscreendata->bdata += offset; } VGAdev vgavmwaredev = { diff --git a/port/proc.c b/port/proc.c index f117892ed5329e755d3508c6c81ed091bd0f5ba5..9c10e0b68f0b57f2807a4a5c90559b91621400cb 100644 --- a/port/proc.c +++ b/port/proc.c @@ -809,8 +809,10 @@ pexit(char *exitstr, int freemem) poperror(); wq->w.pid = up->pid; - wq->w.time[TUser] = utime = up->time[TUser] + up->time[TCUser]; - wq->w.time[TSys] = stime = up->time[TSys] + up->time[TCSys]; + utime = up->time[TUser] + up->time[TCUser]; + stime = up->time[TSys] + up->time[TCSys]; + wq->w.time[TUser] = TK2MS(utime); + wq->w.time[TSys] = TK2MS(stime); wq->w.time[TReal] = TK2MS(MACHP(0)->ticks - up->time[TReal]); if(exitstr && exitstr[0]) snprint(wq->w.msg, sizeof(wq->w.msg), "%s %lud: %s", up->text, up->pid, exitstr);