mirror of
https://github.com/reactos/reactos.git
synced 2024-09-11 05:12:43 +00:00
- Get rid of the peculiar idea that the HAL should manually hack into ntoskrnl through a hack export and hackishly call the registered device interrupt handlers. This is why computers have a PIC in the first place...
svn path=/trunk/; revision=23653
This commit is contained in:
parent
fcda0db1c6
commit
fcdd76f501
|
@ -16,10 +16,6 @@
|
||||||
|
|
||||||
/* GLOBALS ******************************************************************/
|
/* GLOBALS ******************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* FIXME: Use EISA_CONTROL STRUCTURE INSTEAD OF HARD-CODED OFFSETS
|
|
||||||
*/
|
|
||||||
|
|
||||||
UCHAR Table[8] =
|
UCHAR Table[8] =
|
||||||
{
|
{
|
||||||
0, 0,
|
0, 0,
|
||||||
|
@ -27,14 +23,6 @@ UCHAR Table[8] =
|
||||||
2, 2, 2, 2
|
2, 2, 2, 2
|
||||||
};
|
};
|
||||||
|
|
||||||
static ULONG HalpPendingInterruptCount[NR_IRQS] = {0};
|
|
||||||
|
|
||||||
#define DIRQL_TO_IRQ(x) (PROFILE_LEVEL - x)
|
|
||||||
#define IRQ_TO_DIRQL(x) (PROFILE_LEVEL - x)
|
|
||||||
|
|
||||||
VOID STDCALL
|
|
||||||
KiInterruptDispatch2 (ULONG Irq, KIRQL old_level);
|
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
extern ULONG KiI8259MaskTable[];
|
extern ULONG KiI8259MaskTable[];
|
||||||
|
@ -60,38 +48,6 @@ VOID HalpEndSystemInterrupt(KIRQL Irql)
|
||||||
Ki386RestoreFlags(flags);
|
Ki386RestoreFlags(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID STATIC
|
|
||||||
HalpExecuteIrqs(KIRQL NewIrql)
|
|
||||||
{
|
|
||||||
ULONG IrqLimit, i;
|
|
||||||
|
|
||||||
IrqLimit = min(PROFILE_LEVEL - NewIrql, NR_IRQS);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For each irq if there have been any deferred interrupts then now
|
|
||||||
* dispatch them.
|
|
||||||
*/
|
|
||||||
for (i = 0; i < IrqLimit; i++)
|
|
||||||
{
|
|
||||||
if (HalpPendingInterruptCount[i] > 0)
|
|
||||||
{
|
|
||||||
KeGetPcr()->Irql = (KIRQL)IRQ_TO_DIRQL(i);
|
|
||||||
|
|
||||||
while (HalpPendingInterruptCount[i] > 0)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* For each deferred interrupt execute all the handlers at DIRQL.
|
|
||||||
*/
|
|
||||||
HalpPendingInterruptCount[i]--;
|
|
||||||
KiInterruptDispatch2(i + IRQ_BASE, NewIrql);
|
|
||||||
}
|
|
||||||
KeGetPcr()->Irql--;
|
|
||||||
HalpEndSystemInterrupt(KeGetPcr()->Irql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID STATIC
|
VOID STATIC
|
||||||
HalpLowerIrql(KIRQL NewIrql)
|
HalpLowerIrql(KIRQL NewIrql)
|
||||||
{
|
{
|
||||||
|
@ -100,7 +56,6 @@ HalpLowerIrql(KIRQL NewIrql)
|
||||||
KeGetPcr()->Irql = NewIrql;
|
KeGetPcr()->Irql = NewIrql;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HalpExecuteIrqs(NewIrql);
|
|
||||||
if (NewIrql >= DISPATCH_LEVEL)
|
if (NewIrql >= DISPATCH_LEVEL)
|
||||||
{
|
{
|
||||||
KeGetPcr()->Irql = NewIrql;
|
KeGetPcr()->Irql = NewIrql;
|
||||||
|
|
|
@ -664,7 +664,6 @@ KiCheckForKernelApcDelivery@0
|
||||||
KiDeliverApc@12
|
KiDeliverApc@12
|
||||||
KiDispatchInterrupt@0
|
KiDispatchInterrupt@0
|
||||||
KiEnableTimerWatchdog
|
KiEnableTimerWatchdog
|
||||||
KiInterruptDispatch2@8
|
|
||||||
KiIpiServiceRoutine@8
|
KiIpiServiceRoutine@8
|
||||||
@KiReleaseSpinLock@4
|
@KiReleaseSpinLock@4
|
||||||
KiUnexpectedInterrupt
|
KiUnexpectedInterrupt
|
||||||
|
|
Loading…
Reference in a new issue