From 637e562080ffd8f50e445f29a4f61f93566b357f Mon Sep 17 00:00:00 2001 From: Luke Usher Date: Tue, 24 Mar 2020 14:05:53 +0000 Subject: [PATCH] kernel: Clear IRR register on software interrupt processing Fixes a hang that can occur due to an infinite loop of interrupts under certian conditions. --- src/core/kernel/exports/EmuKrnl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/kernel/exports/EmuKrnl.cpp b/src/core/kernel/exports/EmuKrnl.cpp index bb275a186..a0d473fe4 100644 --- a/src/core/kernel/exports/EmuKrnl.cpp +++ b/src/core/kernel/exports/EmuKrnl.cpp @@ -177,7 +177,9 @@ void CallSoftwareInterrupt(const xboxkrnl::KIRQL SoftwareIrql) HalSystemInterrupts[SoftwareIrql - 4].Trigger(EmuInterruptList[SoftwareIrql - 4]); } break; - } + } + + HalInterruptRequestRegister ^= (1 << SoftwareIrql); } const DWORD IrqlMasks[] = {