--- zzzz-none-000/linux-2.6.19.2/arch/mips/sgi-ip27/ip27-irq.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/arch/mips/sgi-ip27/ip27-irq.c 2007-01-11 07:38:19.000000000 +0000 @@ -354,6 +354,29 @@ .end = end_bridge_irq, }; +static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; + +int allocate_irqno(void) +{ + int irq; + +again: + irq = find_first_zero_bit(irq_map, NR_IRQS); + + if (irq >= NR_IRQS) + return -ENOSPC; + + if (test_and_set_bit(irq, irq_map)) + goto again; + + return irq; +} + +void free_irqno(unsigned int irq) +{ + clear_bit(irq, irq_map); +} + void __devinit register_bridge_irq(unsigned int irq) { irq_desc[irq].status = IRQ_DISABLED;