mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:27:35 +00:00
Kernel: Make separate kernel entry points for each PIC IRQ
Instead of having a common entry point and looking at the PIC ISR to figure out which IRQ we're servicing, just make a separate entryway for each IRQ that pushes the IRQ number and jumps to a common routine. This fixes a weird issue where incoming network packets would sometimes cause the mouse to stop working. I didn't track it down further than realizing we were sometimes EOI'ing the wrong IRQ.
This commit is contained in:
parent
12cc518d1e
commit
f01fd54d1b
4 changed files with 123 additions and 129 deletions
|
@ -376,11 +376,11 @@ private:
|
|||
|
||||
struct [[gnu::packed]] RegisterDump
|
||||
{
|
||||
u16 ss;
|
||||
u16 gs;
|
||||
u16 fs;
|
||||
u16 es;
|
||||
u16 ds;
|
||||
u32 ss;
|
||||
u32 gs;
|
||||
u32 fs;
|
||||
u32 es;
|
||||
u32 ds;
|
||||
u32 edi;
|
||||
u32 esi;
|
||||
u32 ebp;
|
||||
|
@ -390,13 +390,12 @@ struct [[gnu::packed]] RegisterDump
|
|||
u32 ecx;
|
||||
u32 eax;
|
||||
u16 exception_code;
|
||||
u16 __exception_code_padding;
|
||||
u16 isr_number;
|
||||
u32 eip;
|
||||
u16 cs;
|
||||
u16 __csPadding;
|
||||
u32 cs;
|
||||
u32 eflags;
|
||||
u32 esp_if_crossRing;
|
||||
u16 ss_if_crossRing;
|
||||
u32 ss_if_crossRing;
|
||||
};
|
||||
|
||||
struct [[gnu::aligned(16)]] FPUState
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue