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;