~kris/9p

9hist

fa33671867ae9d1ac622b48ccd3336a1d2c87541 — David du Colombier 24 years ago b7acd87
Plan 9 from Bell Labs 2002-05-01
4 files changed, 20 insertions(+), 15 deletions(-)

M pc/mmu.c
M pc/pci.c
M pc/vgavmware.c
M port/proc.c
M pc/mmu.c => pc/mmu.c +0 -1
@@ 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;

M pc/pci.c => pc/pci.c +12 -12
@@ 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);

M pc/vgavmware.c => pc/vgavmware.c +4 -0
@@ 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 = {

M port/proc.c => port/proc.c +4 -2
@@ 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);