From 6657a907396eb1f09518ca7ae515df7b158dac01 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Sat, 19 Oct 2024 01:29:27 +0300 Subject: [PATCH] core: Simplified interrupt event check logic in MainInterruptHandler --- core/interrupts_manager.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/core/interrupts_manager.cpp b/core/interrupts_manager.cpp index 1a973c0..1b1e533 100644 --- a/core/interrupts_manager.cpp +++ b/core/interrupts_manager.cpp @@ -306,23 +306,23 @@ namespace Interrupts #if defined(a86) iEvNum += CPU::x86::IRQ0; #endif - if (iEvNum == s_cst(int, Frame->InterruptNumber)) + if (iEvNum != s_cst(int, Frame->InterruptNumber)) + continue; + + if (ev.IsHandler) { - if (ev.IsHandler) - { - Handler *hnd = (Handler *)ev.Data; - hnd->OnInterruptReceived(Frame); - } - else - { - if (ev.Context != nullptr) - ev.Callback((CPU::TrapFrame *)ev.Context); - else - ev.Callback(Frame); - } - ev.Priority++; - InterruptHandled = true; + Handler *hnd = (Handler *)ev.Data; + hnd->OnInterruptReceived(Frame); } + else + { + if (ev.Context != nullptr) + ev.Callback((CPU::TrapFrame *)ev.Context); + else + ev.Callback(Frame); + } + ev.Priority++; + InterruptHandled = true; } CPUData *CoreData = GetCurrentCPU();