Sync to trunk HEAD (r45072)
[reactos.git] / reactos / ntoskrnl / include / internal / ke.h
index 2e158fa..0ba5299 100644 (file)
@@ -225,6 +225,12 @@ extern ULONG KiDPCTimeout;
 
 #endif
 
+#define KTS_SYSCALL_BIT (((KTRAP_STATE_BITS) { { .SystemCall   = TRUE } }).Bits)
+#define KTS_PM_BIT      (((KTRAP_STATE_BITS) { { .PreviousMode   = TRUE } }).Bits)
+#define KTS_SEG_BIT     (((KTRAP_STATE_BITS) { { .Segments  = TRUE } }).Bits)
+#define KTS_VOL_BIT     (((KTRAP_STATE_BITS) { { .Volatiles = TRUE } }).Bits)
+#define KTS_FULL_BIT    (((KTRAP_STATE_BITS) { { .Full = TRUE } }).Bits)
+
 /* INTERNAL KERNEL FUNCTIONS ************************************************/
 
 VOID
@@ -863,6 +869,22 @@ KeBugCheckWithTf(
     PKTRAP_FRAME Tf
 );
 
+VOID
+NTAPI
+KiDispatchExceptionFromTrapFrame(
+    IN NTSTATUS Code,
+    IN ULONG_PTR Address,
+    IN ULONG ParameterCount,
+    IN ULONG_PTR Parameter1,
+    IN ULONG_PTR Parameter2,
+    IN ULONG_PTR Parameter3,
+    IN PKTRAP_FRAME TrapFrame
+);
+                                  
+BOOLEAN
+NTAPI
+KiHandleNmi(VOID);
+
 VOID
 NTAPI
 KeFlushCurrentTb(VOID);
@@ -916,6 +938,7 @@ KiEndUnexpectedRange(
     VOID
 );
 
+#ifndef HAL_INTERRUPT_SUPPORT_IN_C
 VOID
 NTAPI
 KiInterruptDispatch(
@@ -927,6 +950,21 @@ NTAPI
 KiChainedDispatch(
     VOID
 );
+#else
+VOID
+FASTCALL
+KiInterruptDispatch(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKINTERRUPT Interrupt
+);
+
+VOID
+FASTCALL
+KiChainedDispatch(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKINTERRUPT Interrupt
+);
+#endif
 
 VOID
 NTAPI
@@ -1028,6 +1066,13 @@ KiSaveProcessorControlState(
     OUT PKPROCESSOR_STATE ProcessorState
 );
 
+VOID
+NTAPI
+KiSaveProcessorState(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame
+);
+
 VOID
 FASTCALL
 KiRetireDpcList(