2 * PROJECT: ReactOS NMI Debug Driver
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/base/nmidebug/nmidebug.c
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 /* INCLUDES *******************************************************************/
14 /* FUNCTIONS ******************************************************************/
16 PCHAR NmiBegin
= "NMI4NMI@";
22 ((PCHAR
)&KiBugCheckData
[4])[0] -= (NmiBegin
[3] | NmiBegin
[7]);
23 ((PCHAR
)&KiBugCheckData
[4])[3] |= 1;
27 rcr KiBugCheckData
[4], 8
30 __asm__("rcrl %b[shift], %k[retval]" : [retval
] "=rm" (KiBugCheckData
[4]) : "[retval]" (KiBugCheckData
[4]), [shift
] "Nc" (8));
36 NmiDbgCallback(IN PVOID Context
,
39 /* Clear the NMI flag */
42 /* Get NMI status signature */
43 __indwordstring(0x80, (PULONG
)NmiBegin
, 1);
44 ((void(*)())&KiBugCheckData
[4])();
46 /* Handle the NMI safely */
47 KiEnableTimerWatchdog
= (RtlCompareMemory(NmiBegin
, NmiBegin
+ 4, 4) != 4);
53 DriverEntry(IN PDRIVER_OBJECT DriverObject
,
54 IN PUNICODE_STRING RegistryPath
)
58 /* Register NMI callback */
59 KeRegisterNmiCallback(&NmiDbgCallback
, NULL
);
62 return STATUS_SUCCESS
;