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/react…
==============================================================================
--- 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?…
==============================================================================
--- 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=249…
==============================================================================
--- 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=…
==============================================================================
--- 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?re…
==============================================================================
--- 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@8
jmp _Kei386EoiHelper@0
SpuriousInt:
/* Exit the interrupt */
+ jmp $
add esp, 8
- mov esi, $
jmp _Kei386EoiHelper@0
#ifdef CONFIG_SMP
Modified: trunk/reactos/ntoskrnl/ntoskrnl.def
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.def?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.def (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.def Wed Nov 29 22:13:12 2006
@@ -660,7 +660,6 @@
KiCheckForKernelApcDelivery@0
KiDeliverApc@12
KiDispatchInterrupt@0
-KiInterruptDispatch2@8
KiEnableTimerWatchdog
KiIpiServiceRoutine@8
@KiReleaseSpinLock@4
Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?r…
==============================================================================
--- 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>