diff --git a/repos/base-hw/src/core/include/spec/x86/pic.h b/repos/base-hw/src/core/include/spec/x86/pic.h index 2e69c5189a..b677c061d4 100644 --- a/repos/base-hw/src/core/include/spec/x86/pic.h +++ b/repos/base-hw/src/core/include/spec/x86/pic.h @@ -62,6 +62,14 @@ class Genode::Ioapic : public Mmio IOREDTBL = 0x10, }; + /** + * Return whether 'irq' is an edge-triggered interrupt + */ + bool _edge_triggered(unsigned const irq) + { + return irq <= Board::ISA_IRQ_END || irq > IRTE_COUNT; + } + /** * Create redirection table entry for given IRQ */ @@ -71,21 +79,13 @@ class Genode::Ioapic : public Mmio Irte::Mask::set(irte, 1); /* Use level-triggered, low-active mode for non-legacy IRQs */ - if (irq > Board::ISA_IRQ_END) { + if (!_edge_triggered(irq)) { Irte::Pol::set(irte, 1); Irte::Trg::set(irte, 1); } return irte; } - /** - * Return whether 'irq' is an edge-triggered interrupt - */ - bool _edge_triggered(unsigned const irq) - { - return irq <= Board::ISA_IRQ_END || irq > IRTE_COUNT; - } - public: Ioapic() : Mmio(Board::MMIO_IOAPIC_BASE)