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/reacto... ============================================================================== --- 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?r... ============================================================================== --- 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=2497... ============================================================================== --- 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=2... ============================================================================== --- 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... ============================================================================== --- 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=2... ============================================================================== --- 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?re... ============================================================================== --- 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>