|
@@ -371,18 +371,13 @@ static void gic_handle_shared_int(bool chained)
|
|
|
bitmap_and(pending, pending, intrmask, gic_shared_intrs);
|
|
|
bitmap_and(pending, pending, pcpu_mask, gic_shared_intrs);
|
|
|
|
|
|
- intr = find_first_bit(pending, gic_shared_intrs);
|
|
|
- while (intr != gic_shared_intrs) {
|
|
|
+ for_each_set_bit(intr, pending, gic_shared_intrs) {
|
|
|
virq = irq_linear_revmap(gic_irq_domain,
|
|
|
GIC_SHARED_TO_HWIRQ(intr));
|
|
|
if (chained)
|
|
|
generic_handle_irq(virq);
|
|
|
else
|
|
|
do_IRQ(virq);
|
|
|
-
|
|
|
- /* go to next pending bit */
|
|
|
- bitmap_clear(pending, intr, 1);
|
|
|
- intr = find_first_bit(pending, gic_shared_intrs);
|
|
|
}
|
|
|
}
|
|
|
|