mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 02:28:12 +00:00
Kernel: Assert on page fault during IRQ
We're not equipped to deal with page faults during an IRQ handler, so add an assertion so we can immediately tell what's wrong. This is why profiling sometimes hangs the system -- walking the stack of the profiled thread causes a page fault and things fall apart.
This commit is contained in:
parent
2a679f228e
commit
d46071c08f
4 changed files with 9 additions and 0 deletions
|
@ -545,14 +545,18 @@ void load_task_register(u16 selector)
|
|||
asm("ltr %0" ::"r"(selector));
|
||||
}
|
||||
|
||||
u32 g_in_irq;
|
||||
|
||||
void handle_irq(RegisterState regs)
|
||||
{
|
||||
clac();
|
||||
++g_in_irq;
|
||||
ASSERT(regs.isr_number >= 0x50 && regs.isr_number <= 0x5f);
|
||||
u8 irq = (u8)(regs.isr_number - 0x50);
|
||||
if (s_irq_handler[irq])
|
||||
s_irq_handler[irq]->handle_irq();
|
||||
PIC::eoi(irq);
|
||||
--g_in_irq;
|
||||
}
|
||||
|
||||
void sse_init()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue