hw_x86_64: Use _edge_triggered() in _create_irt_entry()
This commit is contained in:
parent
5eed6de910
commit
afec233f50
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user