mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[HAL] Eliminate tail calls from HalpHardwareInterruptLevel. CORE-14076
This commit is contained in:
parent
b4453242f7
commit
888ace4397
2 changed files with 7 additions and 4 deletions
|
@ -75,5 +75,6 @@ DEFINE_END_INTERRUPT_WRAPPER HalpEndSoftwareInterrupt, HalpEndSoftwareInterrupt2
|
|||
DEFINE_END_INTERRUPT_WRAPPER HalEndSystemInterrupt, HalEndSystemInterrupt2
|
||||
|
||||
DEFINE_INTERRUPT_WRAPPER HalpDispatchInterrupt, HalpDispatchInterrupt2
|
||||
DEFINE_INTERRUPT_WRAPPER HalpHardwareInterruptLevel, HalpHardwareInterruptLevel2
|
||||
|
||||
END
|
||||
|
|
|
@ -1015,9 +1015,9 @@ HalpDismissIrq07Level(IN KIRQL Irql,
|
|||
return _HalpDismissIrqLevel(Irql, Irq, OldIrql);
|
||||
}
|
||||
|
||||
VOID
|
||||
PHAL_SW_INTERRUPT_HANDLER
|
||||
__cdecl
|
||||
HalpHardwareInterruptLevel(VOID)
|
||||
HalpHardwareInterruptLevel2(VOID)
|
||||
{
|
||||
PKPCR Pcr = KeGetPcr();
|
||||
ULONG PendingIrqlMask, PendingIrql;
|
||||
|
@ -1027,7 +1027,7 @@ HalpHardwareInterruptLevel(VOID)
|
|||
if (PendingIrqlMask)
|
||||
{
|
||||
/* Check for in-service delayed interrupt */
|
||||
if (Pcr->IrrActive & 0xFFFFFFF0) return;
|
||||
if (Pcr->IrrActive & 0xFFFFFFF0) return NULL;
|
||||
|
||||
/* Check if pending IRQL affects hardware state */
|
||||
BitScanReverse(&PendingIrql, PendingIrqlMask);
|
||||
|
@ -1036,8 +1036,10 @@ HalpHardwareInterruptLevel(VOID)
|
|||
Pcr->IRR ^= (1 << PendingIrql);
|
||||
|
||||
/* Now handle pending interrupt */
|
||||
SWInterruptHandlerTable[PendingIrql]();
|
||||
return SWInterruptHandlerTable[PendingIrql];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* SYSTEM INTERRUPTS **********************************************************/
|
||||
|
|
Loading…
Reference in a new issue