x86: Wrap calls to 8259 with CONFIG_I8259_PIC

mask_irq(), unmask_irq() and specific_eoi() are provided by the
i8259 PIC driver and should be wrapped with CONFIG_I8259_PIC.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Hannes Schmelzer <oe5hpm@oevsv.at>
This commit is contained in:
Bin Meng 2018-11-29 19:57:21 -08:00
parent da4cfa6b44
commit c641010452

View File

@ -64,7 +64,8 @@ void irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)
irq_handlers[irq].arg = arg;
irq_handlers[irq].count = 0;
unmask_irq(irq);
if (CONFIG_IS_ENABLED(I8259_PIC))
unmask_irq(irq);
if (status)
enable_interrupts();
@ -83,7 +84,8 @@ void irq_free_handler(int irq)
status = disable_interrupts();
mask_irq(irq);
if (CONFIG_IS_ENABLED(I8259_PIC))
mask_irq(irq);
irq_handlers[irq].handler = NULL;
irq_handlers[irq].arg = NULL;
@ -104,14 +106,16 @@ void do_irq(int hw_irq)
}
if (irq_handlers[irq].handler) {
mask_irq(irq);
if (CONFIG_IS_ENABLED(I8259_PIC))
mask_irq(irq);
irq_handlers[irq].handler(irq_handlers[irq].arg);
irq_handlers[irq].count++;
unmask_irq(irq);
specific_eoi(irq);
if (CONFIG_IS_ENABLED(I8259_PIC)) {
unmask_irq(irq);
specific_eoi(irq);
}
} else {
if ((irq & 7) != 7) {
spurious_irq_cnt++;