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?r…
==============================================================================
--- 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?…
==============================================================================
--- 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;