hw_x86_64: Use _edge_triggered() in _create_irt_entry()

This commit is contained in:
Reto Buerki 2015-05-12 22:23:57 +02:00 committed by Christian Helmuth
parent 5eed6de910
commit afec233f50

View File

@ -62,6 +62,14 @@ class Genode::Ioapic : public Mmio
IOREDTBL = 0x10, 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 * Create redirection table entry for given IRQ
*/ */
@ -71,21 +79,13 @@ class Genode::Ioapic : public Mmio
Irte::Mask::set(irte, 1); Irte::Mask::set(irte, 1);
/* Use level-triggered, low-active mode for non-legacy IRQs */ /* 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::Pol::set(irte, 1);
Irte::Trg::set(irte, 1); Irte::Trg::set(irte, 1);
} }
return irte; 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: public:
Ioapic() : Mmio(Board::MMIO_IOAPIC_BASE) Ioapic() : Mmio(Board::MMIO_IOAPIC_BASE)