[ros-diffs] [ion] 24972: - Finally figured out a way to make the old HAL IRQ implementation work with the new Ke Interrupt implementation without requiring my new HAL IRQ code (which doesn't work). - Remove the "deprecated" directory from ntoskrnl since it now truly is. - Remove KeInitInterrupts hack. - Remove KiDispatchInterrupt2 export hack from kernel and stop using it from the HAL. - HAL can now be built/tested with Windows/TinyKRNL since the export hack is gone and interrupts are sent properly through the IDT. - Remove a bunch of completed krnlfun entries. - Fix progressbar during bootcd bug.

ion at svn.reactos.org ion at svn.reactos.org
Wed Nov 29 20:13:13 CET 2006


Author: ion
Date: Wed Nov 29 22:13:12 2006
New Revision: 24972

URL: http://svn.reactos.org/svn/reactos?rev=24972&view=rev
Log:
- Finally figured out a way to make the old HAL IRQ implementation work with the new Ke Interrupt implementation without requiring my new HAL IRQ code (which doesn't work).
- Remove the "deprecated" directory from ntoskrnl since it now truly is.
- Remove KeInitInterrupts hack.
- Remove KiDispatchInterrupt2 export hack from kernel and stop using it from the HAL.
- HAL can now be built/tested with Windows/TinyKRNL since the export hack is gone and interrupts are sent properly through the IDT.
- Remove a bunch of completed krnlfun entries.
- Fix progressbar during bootcd bug.

Removed:
    trunk/reactos/ntoskrnl/deprecated/
Modified:
    trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
    trunk/reactos/hal/halx86/generic/irql.c
    trunk/reactos/ntoskrnl/KrnlFun.c
    trunk/reactos/ntoskrnl/ke/freeldr.c
    trunk/reactos/ntoskrnl/ke/i386/trap.s
    trunk/reactos/ntoskrnl/ntoskrnl.def
    trunk/reactos/ntoskrnl/ntoskrnl.rbuild

Modified: trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c (original)
+++ trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c Wed Nov 29 22:13:12 2006
@@ -156,7 +156,7 @@
     FrLdrMapImage(FilePointer, szShortName);
 
     /* Update Processbar and return success */
-    UiDrawProgressBarCenter(nPos, 100, szLoadingMsg);
+    if (!FrLdrBootType) UiDrawProgressBarCenter(nPos, 100, szLoadingMsg);
     return TRUE;
 }
 

Modified: trunk/reactos/hal/halx86/generic/irql.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irql.c?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/irql.c (original)
+++ trunk/reactos/hal/halx86/generic/irql.c Wed Nov 29 22:13:12 2006
@@ -128,10 +128,129 @@
 }
 
 VOID
+HalpHardwareInt30(VOID)
+{
+    __asm__ __volatile__ ("int $0x30");
+}
+
+VOID
+HalpHardwareInt31(VOID)
+{
+    __asm__ __volatile__ ("int $0x31");
+}
+
+VOID
+HalpHardwareInt32(VOID)
+{
+    __asm__ __volatile__ ("int $0x32");
+}
+
+VOID
+HalpHardwareInt33(VOID)
+{
+    __asm__ __volatile__ ("int $0x33");
+}
+
+VOID
+HalpHardwareInt34(VOID)
+{
+    __asm__ __volatile__ ("int $0x34");
+}
+
+VOID
+HalpHardwareInt35(VOID)
+{
+    __asm__ __volatile__ ("int $0x35");
+}
+
+VOID
+HalpHardwareInt36(VOID)
+{
+    __asm__ __volatile__ ("int $0x36");
+}
+
+VOID
+HalpHardwareInt37(VOID)
+{
+    __asm__ __volatile__ ("int $0x37");
+}
+
+VOID
+HalpHardwareInt38(VOID)
+{
+    __asm__ __volatile__ ("int $0x38");
+}
+
+VOID
+HalpHardwareInt39(VOID)
+{
+    __asm__ __volatile__ ("int $0x39");
+}
+
+VOID
+HalpHardwareInt3A(VOID)
+{
+    __asm__ __volatile__ ("int $0x3A");
+}
+
+VOID
+HalpHardwareInt3B(VOID)
+{
+    __asm__ __volatile__ ("int $0x3B");
+}
+
+VOID
+HalpHardwareInt3C(VOID)
+{
+    __asm__ __volatile__ ("int $0x3C");
+}
+
+VOID
+HalpHardwareInt3D(VOID)
+{
+    __asm__ __volatile__ ("int $0x3D");
+}
+
+VOID
+HalpHardwareInt3E(VOID)
+{
+    __asm__ __volatile__ ("int $0x3E");
+    while (TRUE);
+}
+
+VOID
+HalpHardwareInt3F(VOID)
+{
+    __asm__ __volatile__ ("int $0x3F");
+}
+
+
+typedef VOID (*PHARDWARE_INT)(VOID);
+
+PHARDWARE_INT HalpHardwareInt[NR_IRQS] =
+{
+    HalpHardwareInt30,
+    HalpHardwareInt31,
+    HalpHardwareInt32,
+    HalpHardwareInt33,
+    HalpHardwareInt34,
+    HalpHardwareInt35,
+    HalpHardwareInt36,
+    HalpHardwareInt37,
+    HalpHardwareInt38,
+    HalpHardwareInt39,
+    HalpHardwareInt3A,
+    HalpHardwareInt3B,
+    HalpHardwareInt3C,
+    HalpHardwareInt3D,
+    HalpHardwareInt3E,
+    HalpHardwareInt3F
+};
+
+VOID
 HalpExecuteIrqs(KIRQL NewIrql)
 {
   ULONG IrqLimit, i;
-  
   IrqLimit = min(PROFILE_LEVEL - NewIrql, NR_IRQS);
 
   /*
@@ -150,10 +269,10 @@
 	        * For each deferred interrupt execute all the handlers at DIRQL.
 	        */
 	       HalpPendingInterruptCount[i]--;
-	       KiInterruptDispatch2(i + IRQ_BASE, NewIrql);
+           HalpHardwareInt[i]();
 	     }
-	   KeGetPcr()->Irql--;
-	   HalpEndSystemInterrupt(KeGetPcr()->Irql);
+	   //KeGetPcr()->Irql--;
+	   //HalpEndSystemInterrupt(KeGetPcr()->Irql);
 	}
     }
 
@@ -334,12 +453,13 @@
      WRITE_PORT_UCHAR((PUCHAR)0x20,0x20);
      WRITE_PORT_UCHAR((PUCHAR)0xa0,0x20);
   }
-  
+#if 0
   if (KeGetPcr()->Irql >= Irql)
     {
       HalpPendingInterruptCount[irq]++;
       return(FALSE);
     }
+#endif
   *OldIrql = KeGetPcr()->Irql;
   KeGetPcr()->Irql = Irql;
 

Modified: trunk/reactos/ntoskrnl/KrnlFun.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/KrnlFun.c?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/KrnlFun.c (original)
+++ trunk/reactos/ntoskrnl/KrnlFun.c Wed Nov 29 22:13:12 2006
@@ -29,16 +29,13 @@
 // Ke:
 //  - Figure out why the DPC stack doesn't really work.
 //  - Add DR macro/save and VM macro/save.
-//  - New interrupt implementation.
 //  - New optimized table-based tick-hashed timer implementation.
 //  - New Thread Scheduler based on 2003.
 //  - Implement KiCallbackReturn, KiGetTickCount, KiRaiseAssertion.
 //
 // Hal:
 //  - New IRQL Implementation.
-//  - New PCI/Bus Handler Implementation.
 //  - CMOS Initialization and CMOS Spinlock.
-//  - Timer/StallExecution Cleanup.
 //  - Report resource usage to kernel (HalReportResourceUsage).
 //
 // Lpc:

Modified: trunk/reactos/ntoskrnl/ke/freeldr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/freeldr.c?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ke/freeldr.c (original)
+++ trunk/reactos/ntoskrnl/ke/freeldr.c Wed Nov 29 22:13:12 2006
@@ -369,7 +369,6 @@
 
     /* Setup the IDT */
     KeInitExceptions(); // ONCE HACK BELOW IS GONE, MOVE TO KISYSTEMSTARTUP!
-    KeInitInterrupts(); // ROS HACK DEPRECATED SOON BY NEW HAL
 
     /* Set up the VDM Data */
     NtEarlyInitVdm();

Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/trap.s (original)
+++ trunk/reactos/ntoskrnl/ke/i386/trap.s Wed Nov 29 22:13:12 2006
@@ -2010,15 +2010,14 @@
     RELEASE_SPINLOCK(esi)
 
     /* Exit the interrupt */
-    mov esi, $
     cli
     call _HalEndSystemInterrupt at 8
     jmp _Kei386EoiHelper at 0
 
 SpuriousInt:
     /* Exit the interrupt */
+    jmp $
     add esp, 8
-    mov esi, $
     jmp _Kei386EoiHelper at 0
 
 #ifdef CONFIG_SMP

Modified: trunk/reactos/ntoskrnl/ntoskrnl.def
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.def?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.def (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.def Wed Nov 29 22:13:12 2006
@@ -660,7 +660,6 @@
 KiCheckForKernelApcDelivery at 0
 KiDeliverApc at 12
 KiDispatchInterrupt at 0
-KiInterruptDispatch2 at 8
 KiEnableTimerWatchdog
 KiIpiServiceRoutine at 8
 @KiReleaseSpinLock at 4

Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?rev=24972&r1=24971&r2=24972&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.rbuild (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.rbuild Wed Nov 29 22:13:12 2006
@@ -36,7 +36,7 @@
                 <file>ctxswitch.S</file>
                 <file>clock.S</file>
                 <file>exp.c</file>
-                <!-- <file>irq.c</file> -->
+                <file>irq.c</file>
                 <file>kiinit.c</file>
                 <file>ldt.c</file>
                 <file>mtrr.c</file>
@@ -72,10 +72,6 @@
             <file>thrdobj.c</file>
             <file>timer.c</file>
             <file>wait.c</file>
-    </directory>
-    <directory name="deprecated">
-        <file>irqhand.S</file>
-        <file>irq.c</file>
     </directory>
     <directory name="cc">
             <file>cacheman.c</file>




More information about the Ros-diffs mailing list