1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:07:35 +00:00

Kernel: Ensure that we don't use a hard-disabled IRQController

This commit is contained in:
Liav A 2020-03-06 21:33:12 +02:00 committed by Andreas Kling
parent 893d4a41c2
commit c2c0e9fb04
2 changed files with 6 additions and 6 deletions

View file

@ -245,6 +245,7 @@ int IOAPIC::find_redirection_entry_by_vector(u8 vector) const
void IOAPIC::disable(u8 interrupt_vector) void IOAPIC::disable(u8 interrupt_vector)
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
ASSERT(!is_hard_disabled());
int index = find_redirection_entry_by_vector(interrupt_vector); int index = find_redirection_entry_by_vector(interrupt_vector);
if (index == (-1)) { if (index == (-1)) {
map_interrupt_redirection(interrupt_vector); map_interrupt_redirection(interrupt_vector);
@ -257,6 +258,7 @@ void IOAPIC::disable(u8 interrupt_vector)
void IOAPIC::enable(u8 interrupt_vector) void IOAPIC::enable(u8 interrupt_vector)
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
ASSERT(!is_hard_disabled());
int index = find_redirection_entry_by_vector(interrupt_vector); int index = find_redirection_entry_by_vector(interrupt_vector);
if (index == (-1)) { if (index == (-1)) {
map_interrupt_redirection(interrupt_vector); map_interrupt_redirection(interrupt_vector);
@ -269,6 +271,7 @@ void IOAPIC::enable(u8 interrupt_vector)
void IOAPIC::eoi(u8) const void IOAPIC::eoi(u8) const
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
ASSERT(!is_hard_disabled());
APIC::eoi(); APIC::eoi();
} }

View file

@ -61,8 +61,7 @@ bool inline static is_all_masked(u8 reg)
void PIC::disable(u8 irq) void PIC::disable(u8 irq)
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
if (is_hard_disabled()) ASSERT(!is_hard_disabled());
return;
u8 imr; u8 imr;
if (irq >= 8) { if (irq >= 8) {
imr = IO::in8(PIC1_CMD); imr = IO::in8(PIC1_CMD);
@ -99,8 +98,7 @@ bool PIC::is_vector_enabled(u8 irq) const
void PIC::enable(u8 irq) void PIC::enable(u8 irq)
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
if (is_hard_disabled()) ASSERT(!is_hard_disabled());
return;
u8 imr; u8 imr;
if (irq >= 8) { if (irq >= 8) {
imr = IO::in8(PIC1_CMD); imr = IO::in8(PIC1_CMD);
@ -117,8 +115,7 @@ void PIC::enable(u8 irq)
void PIC::eoi(u8 irq) const void PIC::eoi(u8 irq) const
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
if (is_hard_disabled()) ASSERT(!is_hard_disabled());
return;
if (irq >= 8) if (irq >= 8)
IO::out8(PIC1_CTL, 0x20); IO::out8(PIC1_CTL, 0x20);
IO::out8(PIC0_CTL, 0x20); IO::out8(PIC0_CTL, 0x20);