Author: ion Date: Wed Aug 23 04:49:35 2006 New Revision: 23657
URL: http://svn.reactos.org/svn/reactos?rev=23657&view=rev Log: - Call KiDispatchInterrupt through an interrupt gate instead of directly.
Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/irql.c
Modified: trunk/reactos/hal/halx86/generic/irq.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?re... ============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S (original) +++ trunk/reactos/hal/halx86/generic/irq.S Wed Aug 23 04:49:35 2006 @@ -626,14 +626,15 @@ 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]
Modified: trunk/reactos/hal/halx86/generic/irql.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irql.c?r... ============================================================================== --- trunk/reactos/hal/halx86/generic/irql.c (original) +++ trunk/reactos/hal/halx86/generic/irql.c Wed Aug 23 04:49:35 2006 @@ -22,6 +22,8 @@ 1, 1, 2, 2, 2, 2 }; + +VOID HalpDispatchInterrupt(VOID);
/* FUNCTIONS ****************************************************************/
@@ -55,8 +57,7 @@ { if (Table[KeGetPcr()->IRR] == DISPATCH_LEVEL) { - KeGetPcr()->IRR &= ~4; - KiDispatchInterrupt(); + HalpDispatchInterrupt(); } } KeGetPcr()->Irql = APC_LEVEL;