/*
* @implemented
*/
-VOID
-NTAPI
-HalEndSystemInterrupt(IN KIRQL OldIrql,
- IN PKTRAP_FRAME TrapFrame)
+PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY
+FASTCALL
+HalEndSystemInterrupt2(IN KIRQL OldIrql,
+ IN PKTRAP_FRAME TrapFrame)
{
ULONG PendingIrql, PendingIrqlMask, PendingIrqMask;
PKPCR Pcr = KeGetPcr();
if (PendingIrqlMask)
{
/* Check for in-service delayed interrupt */
- if (Pcr->IrrActive & 0xFFFFFFF0) return;
+ if (Pcr->IrrActive & 0xFFFFFFF0) return NULL;
/* Loop checking for pending interrupts */
while (TRUE)
/* Now check if this specific interrupt is already in-service */
PendingIrqMask = (1 << PendingIrql);
- if (Pcr->IrrActive & PendingIrqMask) return;
+ if (Pcr->IrrActive & PendingIrqMask) return NULL;
/* Set active bit otherwise, and clear it from IRR */
Pcr->IrrActive |= PendingIrqMask;
else
{
/* Now handle pending software interrupt */
- SWInterruptHandlerTable2[PendingIrql](TrapFrame);
- UNREACHABLE;
+ return SWInterruptHandlerTable2[PendingIrql];
}
}
}
+
+ return NULL;
}
/* SOFTWARE INTERRUPT TRAPS ***************************************************/