~kris/9p

9hist

636853ae729d934b047b1761c308cdc024e2c46e — David du Colombier 30 years ago b256ec3
Plan 9 from Bell Labs 1995-10-17
2 files changed, 37 insertions(+), 18 deletions(-)

M pc/devi82365.c
M port/qlock.c
M pc/devi82365.c => pc/devi82365.c +36 -17
@@ 538,12 538,12 @@ i82386probe(int x, int d, int dev)
		outb(x, Rchipinfo + (dev<<7));
		outb(d, 0);
		c = inb(d);
		if((c & 0xdf) == 0xdc){
			c = inb(d);
			if((c & 0xdf) != 0x0c)
				break;
		}
		if(c & 0x40){
		if((c & 0xc0) != 0xc0)
			break;
		c = inb(d);
		if((c & 0xc0) != 0x00)
			break;
		if(c & 0x20){
			cp->type = Tpd6720;
		} else {
			cp->type = Tpd6710;


@@ 907,7 907,7 @@ pcmio(int slotno, ISAConf *isa)
{
	uchar we, x, *p;
	Slot *pp;
	Conftab *ct;
	Conftab *ct, *et, *t;
	PCMmap *m;
	int irq;



@@ 922,19 922,38 @@ pcmio(int slotno, ISAConf *isa)
	if(!pp->occupied)
		return -1;

	/* find a configuration with the right port */
	for(ct = pp->ctab; ct < &pp->ctab[pp->nctab]; ct++){
		if(ct->nioregs && ct->port == isa->port && ((1<<irq) & ct->irqs))
			break;
	}
	et = &pp->ctab[pp->nctab];

	/* if non found, settle for one with the some ioregs */
	if(ct == &pp->ctab[pp->nctab])
		for(ct = pp->ctab; ct < &pp->ctab[pp->nctab]; ct++)
			if(ct->nioregs && ((1<<irq) & ct->irqs))
	/* assume default is right */
	if(pp->def)
		ct = pp->def;
	else
		ct = pp->ctab;

	/* try for best match */
	if(ct->nioregs == 0 || ct->port != isa->port || ((1<<irq) & ct->irqs) == 0){
		for(t = pp->ctab; t < et; t++)
			if(t->nioregs && t->port == isa->port && ((1<<irq) & t->irqs)){
				ct = t;
				break;
			}
	}
	if(ct->nioregs == 0 || ((1<<irq) & ct->irqs) == 0){
		for(t = pp->ctab; t < et; t++)
			if(t->nioregs && ((1<<irq) & t->irqs)){
				ct = t;
				break;
			}
	}
	if(ct->nioregs == 0){
		for(t = pp->ctab; t < et; t++)
			if(t->nioregs){
				ct = t;
				break;
			}
	}

	if(ct == &pp->ctab[pp->nctab])
	if(ct == et || ct->nioregs == 0)
		return -1;

	/* route interrupts */

M port/qlock.c => port/qlock.c +1 -1
@@ 92,6 92,6 @@ wlock(RWlock *l)
void
wunlock(RWlock *l)
{
	qunlock(&l->x);
	qunlock(&l->k);
	qunlock(&l->x);
}