static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc) { unsigned long pending; pending = zeus_irq_pending(); do { /* we're in a chained irq handler, * so ack the interrupt by hand */ desc->chip->ack(gpio_to_irq(ZEUS_ISA_GPIO)); if (likely(pending)) { irq = zeus_bit_to_irq(__ffs(pending)); generic_handle_irq(irq); } pending = zeus_irq_pending(); } while (pending); }
static void zeus_irq_handler(struct irq_desc *desc) { unsigned int irq; unsigned long pending; pending = zeus_irq_pending(); do { /* we're in a chained irq handler, * so ack the interrupt by hand */ desc->irq_data.chip->irq_ack(&desc->irq_data); if (likely(pending)) { irq = zeus_bit_to_irq(__ffs(pending)); generic_handle_irq(irq); } pending = zeus_irq_pending(); } while (pending); }