[arm/src/moxart/irq] irq_decode: process one irq at once

Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
This commit is contained in:
Anton D. Kachalov
2015-07-29 10:17:44 +03:00
parent ab27747484
commit b10095ed59
+9 -11
View File
@@ -274,19 +274,17 @@ void up_decodeirq(uint32_t *regs)
/* Detect & deliver the IRQ */ /* Detect & deliver the IRQ */
status = getreg32(IRQ_REG(IRQ__STATUS)); status = getreg32(IRQ_REG(IRQ__STATUS));
while (status != 0) if (!status)
{ return;
/* Ack IRQ */
num = ffs(status) - 1;
up_ack_irq(num);
DEBUGASSERT(current_regs == NULL); /* Ack IRQ */
current_regs = regs; num = ffs(status) - 1;
up_ack_irq(num);
irq_dispatch(num, regs); DEBUGASSERT(current_regs == NULL);
current_regs = regs;
current_regs = NULL; irq_dispatch(num, regs);
status = getreg32(IRQ_REG(IRQ__STATUS)); current_regs = NULL;
}
} }