plan 9 kernel history: overview | file list | diff list

1998/1022/pc/mp.c (diff list | history)

1998/1021/sys/src/9/pc/mp.c:13,181998/1022/sys/src/9/pc/mp.c:13,19 (short | long | prev | next)
1997/0327    
static Bus* mpbuslast; 
1998/0320    
static int mpisabus = -1; 
static int mpeisabus = -1; 
1998/1022    
extern int elcr;			/* mask of level-triggered interrupts */ 
1997/0327    
static Apic mpapic[MaxAPICNO+1]; 
static int machno2apicno[MaxAPICNO+1];	/* inverse map: machno -> APIC ID */ 
static Lock mprdthilock; 
1998/1021/sys/src/9/pc/mp.c:181,1871998/1022/sys/src/9/pc/mp.c:182,188
1997/0327    
} 
 
static int 
1998/0910    
mpintrinit(Bus* bus, PCMPintr* intr, int vno) 
1998/1022    
mpintrinit(Bus* bus, PCMPintr* intr, int vno, int /*irq*/) 
1997/0327    
{ 
	int el, po, v; 
 
1998/1021/sys/src/9/pc/mp.c:228,2341998/1022/sys/src/9/pc/mp.c:229,235
1997/0327    
 
	/* 
	 */ 
1998/0910    
	if(bus->type == BusEISA && !po && !el){ 
1998/1022    
	if(bus->type == BusEISA && !po && !el /*&& !(elcr & (1<<irq))*/){ 
1997/0327    
		po = PcmpHIGH; 
		el = PcmpEDGE; 
	} 
1998/1021/sys/src/9/pc/mp.c:275,2811998/1022/sys/src/9/pc/mp.c:276,282
1998/0605    
	if(p->intr == PcmpExtINT || p->intr == PcmpNMI) 
		v = ApicIMASK; 
	else 
		v = mpintrinit(bus, p, VectorLAPIC+intin); 
1998/1022    
		v = mpintrinit(bus, p, VectorLAPIC+intin, p->irq); 
1998/0605    
 
1997/0327    
	if(p->apicno == 0xFF){ 
		for(apic = mpapic; apic <= &mpapic[MaxAPICNO]; apic++){ 
1998/1021/sys/src/9/pc/mp.c:650,6561998/1022/sys/src/9/pc/mp.c:651,657
1998/0910    
				vno, v->irq, v->tbdf); 
			return -1; 
		} 
		lo = mpintrinit(bus, aintr->intr, vno); 
1998/1022    
		lo = mpintrinit(bus, aintr->intr, vno, v->irq); 
1997/0327    
		if(lo & ApicIMASK) 
			return -1; 
		lo |= ApicLOGICAL; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)