diff --git a/reactos/hal/halx86/generic/irq.S b/reactos/hal/halx86/generic/irq.S index 236f8814435..484faf33d14 100644 --- a/reactos/hal/halx86/generic/irq.S +++ b/reactos/hal/halx86/generic/irq.S @@ -626,14 +626,15 @@ _HalpEndSoftwareInterrupt@4: SoftwareInt: /* Check if there are pending software interrupts */ mov [fs:KPCR_IRQL], cl +#if 0 mov eax, [fs:KPCR_IDR] mov al, SoftIntByteTable[eax] cmp al, cl ja DoCall2 +#endif ret 4 DoCall2: - /* There are pending softwate interrupts, call their handlers */ add esp, 8 jmp SoftIntHandlerTable2[eax*4] diff --git a/reactos/hal/halx86/generic/irql.c b/reactos/hal/halx86/generic/irql.c index 30989e44f35..e820efa0dc1 100644 --- a/reactos/hal/halx86/generic/irql.c +++ b/reactos/hal/halx86/generic/irql.c @@ -23,6 +23,8 @@ UCHAR Table[8] = 2, 2, 2, 2 }; +VOID HalpDispatchInterrupt(VOID); + /* FUNCTIONS ****************************************************************/ extern ULONG KiI8259MaskTable[]; @@ -55,8 +57,7 @@ HalpLowerIrql(KIRQL NewIrql) { if (Table[KeGetPcr()->IRR] == DISPATCH_LEVEL) { - KeGetPcr()->IRR &= ~4; - KiDispatchInterrupt(); + HalpDispatchInterrupt(); } } KeGetPcr()->Irql = APC_LEVEL;