 if (ppc64_interrupt_controller == IC_BPA_IIC) return real_irq;	/* no mapping for iic either */ 
int virt_irq_create_mapping(unsigned int real_irq){	unsigned int virq, first_virq;	static int warned;	if (ppc64_interrupt_controller == IC_OPEN_PIC)		return real_irq;	/* no mapping for openpic (for now) */	/* don't map interrupts < MIN_VIRT_IRQ */	if (real_irq < MIN_VIRT_IRQ) {		virt_irq_to_real_map[real_irq] = real_irq;		return real_irq;	}	/* map to a number between MIN_VIRT_IRQ and MAX_VIRT_IRQ */	virq = real_irq;	if (virq > MAX_VIRT_IRQ)		virq = (virq % NR_VIRT_IRQS) + MIN_VIRT_IRQ;	/* search for this number or a free slot */	first_virq = virq;	while (virt_irq_to_real_map[virq] != UNDEFINED_IRQ) {		if (virt_irq_to_real_map[virq] == real_irq)			return virq;		if (++virq > MAX_VIRT_IRQ)			virq = MIN_VIRT_IRQ;		if (virq == first_virq)			goto nospace;	/* oops, no free slots */	}	virt_irq_to_real_map[virq] = real_irq;	return virq; nospace:	if (!warned) {		printk(KERN_CRIT "Interrupt table is full\n");		printk(KERN_CRIT "Increase NR_IRQS (currently %d) "		       "in your kernel sources and rebuild.\n", NR_IRQS);		warned = 1;	}	return NO_IRQ;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fef1c772fa154c16e0a54577e9ecb5480f7b937e/irq.c/clean/arch/ppc64/kernel/irq.c