{
/* No need to loop checking for hardware interrupts */
SWInterruptHandlerTable2[PendingIrql](TrapFrame);
+ UNREACHABLE;
}
}
}
{
/* Now handle pending software interrupt */
SWInterruptHandlerTable2[PendingIrql](TrapFrame);
+ UNREACHABLE;
}
}
}
/* SOFTWARE INTERRUPT TRAPS ***************************************************/
FORCEINLINE
-VOID
DECLSPEC_NORETURN
+VOID
_HalpApcInterruptHandler(IN PKTRAP_FRAME TrapFrame)
{
KIRQL CurrentIrql;
KiEoiHelper(TrapFrame);
}
-VOID
DECLSPEC_NORETURN
+VOID
FASTCALL
HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame)
{
_HalpApcInterruptHandler(TrapFrame);
}
-VOID
DECLSPEC_NORETURN
+VOID
FASTCALL
HalpApcInterruptHandler(IN PKTRAP_FRAME TrapFrame)
{
return CurrentIrql;
}
-VOID
DECLSPEC_NORETURN
+VOID
FASTCALL
HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame)
{
#pragma once
-#define UNREACHABLE __assume(0)
-
-#if _MSC_VER
-#define __builtin_expect(a,b) (a)
+#if defined(_MSC_VER)
+#define UNREACHABLE __assume(0)
+#define __builtin_expect(a,b) (a)
+#elif defined(__GNUC__)
+#define UNREACHABLE __builtin_unreachable()
+#else
+#error
#endif
//
DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegmentsRet8(IN PKTRAP_FRAME TrapFrame);
typedef
-ATTRIB_NORETURN
VOID
(FASTCALL *PFAST_SYSTEM_CALL_EXIT)(
IN PKTRAP_FRAME TrapFrame