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:
parent
893d4a41c2
commit
c2c0e9fb04
2 changed files with 6 additions and 6 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue