- Fix several issues with msvc in ntoskrnl
- Add ATTRIB_NORETURN definition which will be used by function pointers because msvc doesn't like DECLSPEC_NORETURN in function pointers

svn path=/trunk/; revision=48287
This commit is contained in:
Giannis Adamopoulos 2010-07-26 21:32:38 +00:00
parent f126b1d282
commit 91f37cae9a
17 changed files with 70 additions and 52 deletions

View file

@ -28,10 +28,9 @@ VOID
); );
typedef typedef
FASTCALL
VOID VOID
DECLSPEC_NORETURN ATTRIB_NORETURN
(*PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)( (FASTCALL *PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
IN PKTRAP_FRAME TrapFrame IN PKTRAP_FRAME TrapFrame
); );
@ -558,8 +557,8 @@ VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts);
VOID HalpApcInterrupt(VOID); VOID HalpApcInterrupt(VOID);
VOID HalpDispatchInterrupt(VOID); VOID HalpDispatchInterrupt(VOID);
VOID HalpDispatchInterrupt2(VOID); VOID HalpDispatchInterrupt2(VOID);
VOID FASTCALL DECLSPEC_NORETURN HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame); DECLSPEC_NORETURN VOID FASTCALL HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
VOID FASTCALL DECLSPEC_NORETURN HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame); DECLSPEC_NORETURN VOID FASTCALL HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
/* timer.c */ /* timer.c */
VOID NTAPI HalpInitializeClock(VOID); VOID NTAPI HalpInitializeClock(VOID);

View file

@ -205,6 +205,12 @@ allow GCC to optimize away some EH unwind code, at least in DW2 case. */
#define _CRT_UNUSED(x) (void)x #define _CRT_UNUSED(x) (void)x
#endif #endif
#ifdef _MSC_VER
#define ATTRIB_NORETURN
#else
#define ATTRIB_NORETURN DECLSPEC_NORETURN
#endif
#include "_mingw_mac.h" #include "_mingw_mac.h"
#endif /* !_INC_MINGW */ #endif /* !_INC_MINGW */

View file

@ -136,7 +136,7 @@ extern "C" {
#define _JMP_BUF_DEFINED #define _JMP_BUF_DEFINED
#endif #endif
static inline __attribute__((always_inline)) void * mingw_getsp(void) FORCEINLINE void * mingw_getsp(void)
{ {
void *value; void *value;
#if defined(__x86_64) #if defined(__x86_64)

View file

@ -489,7 +489,9 @@ extern "C" {
__MINGW_EXTENSION lldiv_t __cdecl lldiv(long long, long long); __MINGW_EXTENSION lldiv_t __cdecl lldiv(long long, long long);
#ifndef _MSC_VER
__MINGW_EXTENSION __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); } __MINGW_EXTENSION __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
#endif
__MINGW_EXTENSION long long __cdecl strtoll(const char* __restrict__, char** __restrict, int); __MINGW_EXTENSION long long __cdecl strtoll(const char* __restrict__, char** __restrict, int);
__MINGW_EXTENSION unsigned long long __cdecl strtoull(const char* __restrict__, char** __restrict__, int); __MINGW_EXTENSION unsigned long long __cdecl strtoull(const char* __restrict__, char** __restrict__, int);

View file

@ -1230,6 +1230,8 @@ ExpInitializeExecutive(IN ULONG Cpu,
SharedUserData->ImageNumberHigh = IMAGE_FILE_MACHINE_ARCHITECTURE; SharedUserData->ImageNumberHigh = IMAGE_FILE_MACHINE_ARCHITECTURE;
} }
extern BOOLEAN AllowPagedPool;
VOID VOID
NTAPI NTAPI
Phase1InitializationDiscard(IN PVOID Context) Phase1InitializationDiscard(IN PVOID Context)
@ -1860,7 +1862,6 @@ Phase1InitializationDiscard(IN PVOID Context)
InbvEnableDisplayString(TRUE); InbvEnableDisplayString(TRUE);
/* Enough fun for now */ /* Enough fun for now */
extern BOOLEAN AllowPagedPool;
AllowPagedPool = FALSE; AllowPagedPool = FALSE;
/* Wait 5 seconds for it to initialize */ /* Wait 5 seconds for it to initialize */

View file

@ -455,7 +455,7 @@ extern ULONG Ke386CacheAlignment;
extern ULONG KiFastSystemCallDisable; extern ULONG KiFastSystemCallDisable;
extern UCHAR KiDebugRegisterTrapOffsets[9]; extern UCHAR KiDebugRegisterTrapOffsets[9];
extern UCHAR KiDebugRegisterContextOffsets[9]; extern UCHAR KiDebugRegisterContextOffsets[9];
extern VOID __cdecl KiTrap02(VOID); extern DECLSPEC_NORETURN VOID __cdecl KiTrap02(VOID);
extern VOID __cdecl KiTrap08(VOID); extern VOID __cdecl KiTrap08(VOID);
extern VOID __cdecl KiTrap13(VOID); extern VOID __cdecl KiTrap13(VOID);
extern VOID __cdecl KiFastCallEntry(VOID); extern VOID __cdecl KiFastCallEntry(VOID);

View file

@ -940,6 +940,7 @@ KiContinue(
IN PKTRAP_FRAME TrapFrame IN PKTRAP_FRAME TrapFrame
); );
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
KiServiceExit( KiServiceExit(
@ -947,6 +948,7 @@ KiServiceExit(
IN NTSTATUS Status IN NTSTATUS Status
); );
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
KiServiceExit2( KiServiceExit2(

View file

@ -199,7 +199,7 @@ DECLSPEC_NORETURN VOID FASTCALL KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame); DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
typedef typedef
DECLSPEC_NORETURN ATTRIB_NORETURN
VOID VOID
(FASTCALL *PFAST_SYSTEM_CALL_EXIT)( (FASTCALL *PFAST_SYSTEM_CALL_EXIT)(
IN PKTRAP_FRAME TrapFrame IN PKTRAP_FRAME TrapFrame

View file

@ -29,8 +29,8 @@ VOID
NTAPI NTAPI
IopReadyDeviceObjects(IN PDRIVER_OBJECT Driver) IopReadyDeviceObjects(IN PDRIVER_OBJECT Driver)
{ {
PAGED_CODE();
PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT DeviceObject;
PAGED_CODE();
/* Set the driver as initialized */ /* Set the driver as initialized */
Driver->Flags |= DRVO_INITIALIZED; Driver->Flags |= DRVO_INITIALIZED;

View file

@ -3035,10 +3035,11 @@ NTAPI
PpIrpQueryCapabilities(IN PDEVICE_OBJECT DeviceObject, PpIrpQueryCapabilities(IN PDEVICE_OBJECT DeviceObject,
OUT PDEVICE_CAPABILITIES DeviceCaps) OUT PDEVICE_CAPABILITIES DeviceCaps)
{ {
PAGED_CODE();
PVOID Dummy; PVOID Dummy;
IO_STACK_LOCATION Stack; IO_STACK_LOCATION Stack;
PAGED_CODE();
/* Set up the Header */ /* Set up the Header */
RtlZeroMemory(DeviceCaps, sizeof(DEVICE_CAPABILITIES)); RtlZeroMemory(DeviceCaps, sizeof(DEVICE_CAPABILITIES));
DeviceCaps->Size = sizeof(DEVICE_CAPABILITIES); DeviceCaps->Size = sizeof(DEVICE_CAPABILITIES);

View file

@ -1173,7 +1173,12 @@ KiIsNpxPresent(VOID)
Cr0 = __readcr0() & ~(CR0_MP | CR0_TS | CR0_EM | CR0_ET); Cr0 = __readcr0() & ~(CR0_MP | CR0_TS | CR0_EM | CR0_ET);
/* Store on FPU stack */ /* Store on FPU stack */
#ifdef _MSC_VER
__asm fninit;
__asm fnstsw Magic;
#else
asm volatile ("fninit;" "fnstsw %0" : "+m"(Magic)); asm volatile ("fninit;" "fnstsw %0" : "+m"(Magic));
#endif
/* Magic should now be cleared */ /* Magic should now be cleared */
if (Magic & 0xFF) if (Magic & 0xFF)
@ -1210,7 +1215,7 @@ KiIsNpxErrataPresent(VOID)
__writecr0(Cr0 & ~(CR0_MP | CR0_TS | CR0_EM)); __writecr0(Cr0 & ~(CR0_MP | CR0_TS | CR0_EM));
/* Initialize FPU state */ /* Initialize FPU state */
asm volatile ("fninit"); Ke386FnInit();
/* Multiply the magic values and divide, we should get the result back */ /* Multiply the magic values and divide, we should get the result back */
Value1 = 4195835.0; Value1 = 4195835.0;
@ -1227,8 +1232,8 @@ KiIsNpxErrataPresent(VOID)
return ErrataPresent; return ErrataPresent;
} }
NTAPI
VOID VOID
NTAPI
KiFlushNPXState(IN PFLOATING_SAVE_AREA SaveArea) KiFlushNPXState(IN PFLOATING_SAVE_AREA SaveArea)
{ {
ULONG EFlags, Cr0; ULONG EFlags, Cr0;

View file

@ -1106,9 +1106,9 @@ Handled:
return; return;
} }
DECLSPEC_NORETURN
VOID VOID
NTAPI NTAPI
DECLSPEC_NORETURN
KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code, KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code,
IN ULONG_PTR Address, IN ULONG_PTR Address,
IN ULONG ParameterCount, IN ULONG ParameterCount,
@ -1145,9 +1145,9 @@ KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code,
KiEoiHelper(TrapFrame); KiEoiHelper(TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiSystemFatalException(IN ULONG ExceptionCode, KiSystemFatalException(IN ULONG ExceptionCode,
IN PKTRAP_FRAME TrapFrame) IN PKTRAP_FRAME TrapFrame)
{ {

View file

@ -184,9 +184,8 @@ KiUnexpectedInterruptTailHandler(IN PKTRAP_FRAME TrapFrame)
} }
typedef typedef
FASTCALL
VOID VOID
(PKI_INTERRUPT_DISPATCH)( (FASTCALL *PKI_INTERRUPT_DISPATCH)(
IN PKTRAP_FRAME TrapFrame, IN PKTRAP_FRAME TrapFrame,
IN PKINTERRUPT Interrupt IN PKINTERRUPT Interrupt
); );
@ -310,7 +309,7 @@ KiInterruptTemplateHandler(IN PKTRAP_FRAME TrapFrame,
KiEnterInterruptTrap(TrapFrame); KiEnterInterruptTrap(TrapFrame);
/* Call the correct dispatcher */ /* Call the correct dispatcher */
((PKI_INTERRUPT_DISPATCH*)Interrupt->DispatchAddress)(TrapFrame, Interrupt); ((PKI_INTERRUPT_DISPATCH)Interrupt->DispatchAddress)(TrapFrame, Interrupt);
} }

View file

@ -16,8 +16,8 @@
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/
/* Boot and double-fault/NMI/DPC stack */ /* Boot and double-fault/NMI/DPC stack */
UCHAR P0BootStackData[KERNEL_STACK_SIZE] __attribute__((aligned (16))) = {0}; UCHAR DECLSPEC_ALIGN(16) P0BootStackData[KERNEL_STACK_SIZE] = {0};
UCHAR KiDoubleFaultStackData[KERNEL_STACK_SIZE] __attribute__((aligned (16))) = {0}; UCHAR DECLSPEC_ALIGN(16) KiDoubleFaultStackData[KERNEL_STACK_SIZE] = {0};
ULONG_PTR P0BootStack = (ULONG_PTR)&P0BootStackData[KERNEL_STACK_SIZE]; ULONG_PTR P0BootStack = (ULONG_PTR)&P0BootStackData[KERNEL_STACK_SIZE];
ULONG_PTR KiDoubleFaultStack = (ULONG_PTR)&KiDoubleFaultStackData[KERNEL_STACK_SIZE]; ULONG_PTR KiDoubleFaultStack = (ULONG_PTR)&KiDoubleFaultStackData[KERNEL_STACK_SIZE];

View file

@ -102,9 +102,9 @@ KiCommonExit(IN PKTRAP_FRAME TrapFrame, const ULONG Flags)
} }
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiEoiHelper(IN PKTRAP_FRAME TrapFrame) KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
{ {
/* Common trap exit code */ /* Common trap exit code */
@ -123,9 +123,9 @@ KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
KiTrapReturnNoSegments(TrapFrame); KiTrapReturnNoSegments(TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiServiceExit(IN PKTRAP_FRAME TrapFrame, KiServiceExit(IN PKTRAP_FRAME TrapFrame,
IN NTSTATUS Status) IN NTSTATUS Status)
{ {
@ -161,9 +161,9 @@ KiServiceExit(IN PKTRAP_FRAME TrapFrame,
KiSystemCallReturn(TrapFrame); KiSystemCallReturn(TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiServiceExit2(IN PKTRAP_FRAME TrapFrame) KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
{ {
/* Common trap exit code */ /* Common trap exit code */
@ -188,9 +188,9 @@ KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
/* TRAP HANDLERS **************************************************************/ /* TRAP HANDLERS **************************************************************/
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiDebugHandler(IN PKTRAP_FRAME TrapFrame, KiDebugHandler(IN PKTRAP_FRAME TrapFrame,
IN ULONG Parameter1, IN ULONG Parameter1,
IN ULONG Parameter2, IN ULONG Parameter2,
@ -212,9 +212,9 @@ KiDebugHandler(IN PKTRAP_FRAME TrapFrame,
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiNpxHandler(IN PKTRAP_FRAME TrapFrame, KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
IN PKTHREAD Thread, IN PKTHREAD Thread,
IN PFX_SAVE_AREA SaveArea) IN PFX_SAVE_AREA SaveArea)
@ -369,9 +369,9 @@ KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
KeBugCheckWithTf(TRAP_CAUSE_UNKNOWN, 1, Error, 0, 0, TrapFrame); KeBugCheckWithTf(TRAP_CAUSE_UNKNOWN, 1, Error, 0, 0, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap00Handler(IN PKTRAP_FRAME TrapFrame) KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -389,9 +389,9 @@ KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap01Handler(IN PKTRAP_FRAME TrapFrame) KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -410,8 +410,9 @@ KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
VOID
DECLSPEC_NORETURN DECLSPEC_NORETURN
VOID
__cdecl
KiTrap02(VOID) KiTrap02(VOID)
{ {
PKTSS Tss, NmiTss; PKTSS Tss, NmiTss;
@ -556,9 +557,9 @@ KiTrap02(VOID)
KiSystemFatalException(EXCEPTION_NMI, NULL); KiSystemFatalException(EXCEPTION_NMI, NULL);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap03Handler(IN PKTRAP_FRAME TrapFrame) KiTrap03Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -568,9 +569,9 @@ KiTrap03Handler(IN PKTRAP_FRAME TrapFrame)
KiDebugHandler(TrapFrame, BREAKPOINT_BREAK, 0, 0); KiDebugHandler(TrapFrame, BREAKPOINT_BREAK, 0, 0);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap04Handler(IN PKTRAP_FRAME TrapFrame) KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -588,9 +589,9 @@ KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap05Handler(IN PKTRAP_FRAME TrapFrame) KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -611,9 +612,9 @@ KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap06Handler(IN PKTRAP_FRAME TrapFrame) KiTrap06Handler(IN PKTRAP_FRAME TrapFrame)
{ {
PUCHAR Instruction; PUCHAR Instruction;
@ -693,9 +694,9 @@ KiTrap06Handler(IN PKTRAP_FRAME TrapFrame)
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap07Handler(IN PKTRAP_FRAME TrapFrame) KiTrap07Handler(IN PKTRAP_FRAME TrapFrame)
{ {
PKTHREAD Thread, NpxThread; PKTHREAD Thread, NpxThread;
@ -803,18 +804,18 @@ KiTrap07Handler(IN PKTRAP_FRAME TrapFrame)
KiNpxHandler(TrapFrame, Thread, SaveArea); KiNpxHandler(TrapFrame, Thread, SaveArea);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap08Handler(IN PKTRAP_FRAME TrapFrame) KiTrap08Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* FIXME: Not handled */ /* FIXME: Not handled */
KiSystemFatalException(EXCEPTION_DOUBLE_FAULT, TrapFrame); KiSystemFatalException(EXCEPTION_DOUBLE_FAULT, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap09Handler(IN PKTRAP_FRAME TrapFrame) KiTrap09Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -825,9 +826,9 @@ KiTrap09Handler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_NPX_OVERRUN, TrapFrame); KiSystemFatalException(EXCEPTION_NPX_OVERRUN, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -840,9 +841,9 @@ KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_INVALID_TSS, TrapFrame); KiSystemFatalException(EXCEPTION_INVALID_TSS, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -853,9 +854,9 @@ KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_SEGMENT_NOT_PRESENT, TrapFrame); KiSystemFatalException(EXCEPTION_SEGMENT_NOT_PRESENT, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -866,9 +867,9 @@ KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_STACK_FAULT, TrapFrame); KiSystemFatalException(EXCEPTION_STACK_FAULT, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
{ {
ULONG i, j, Iopl; ULONG i, j, Iopl;
@ -1145,9 +1146,9 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
KiTrapReturn(TrapFrame); KiTrapReturn(TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
{ {
PKTHREAD Thread; PKTHREAD Thread;
@ -1260,9 +1261,9 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame) KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -1273,9 +1274,9 @@ KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_RESERVED_TRAP, TrapFrame); KiSystemFatalException(EXCEPTION_RESERVED_TRAP, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap10Handler(IN PKTRAP_FRAME TrapFrame) KiTrap10Handler(IN PKTRAP_FRAME TrapFrame)
{ {
PKTHREAD Thread; PKTHREAD Thread;
@ -1301,9 +1302,9 @@ KiTrap10Handler(IN PKTRAP_FRAME TrapFrame)
KiNpxHandler(TrapFrame, Thread, SaveArea); KiNpxHandler(TrapFrame, Thread, SaveArea);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap11Handler(IN PKTRAP_FRAME TrapFrame) KiTrap11Handler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -1314,9 +1315,9 @@ KiTrap11Handler(IN PKTRAP_FRAME TrapFrame)
KiSystemFatalException(EXCEPTION_ALIGNMENT_CHECK, TrapFrame); KiSystemFatalException(EXCEPTION_ALIGNMENT_CHECK, TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiTrap13Handler(IN PKTRAP_FRAME TrapFrame) KiTrap13Handler(IN PKTRAP_FRAME TrapFrame)
{ {
PKTHREAD Thread; PKTHREAD Thread;
@ -1417,9 +1418,9 @@ KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
while (TRUE); while (TRUE);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame) KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -1434,9 +1435,9 @@ KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame)
TrapFrame); TrapFrame);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiDebugServiceHandler(IN PKTRAP_FRAME TrapFrame) KiDebugServiceHandler(IN PKTRAP_FRAME TrapFrame)
{ {
/* Save trap frame */ /* Save trap frame */
@ -1449,9 +1450,9 @@ KiDebugServiceHandler(IN PKTRAP_FRAME TrapFrame)
KiDebugHandler(TrapFrame, TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx); KiDebugHandler(TrapFrame, TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx);
} }
DECLSPEC_NORETURN
VOID VOID
FORCEINLINE FORCEINLINE
DECLSPEC_NORETURN
KiSystemCall(IN PKTRAP_FRAME TrapFrame, KiSystemCall(IN PKTRAP_FRAME TrapFrame,
IN PVOID Arguments) IN PVOID Arguments)
{ {
@ -1574,9 +1575,9 @@ ExitCall:
KiServiceExit(TrapFrame, Result); KiServiceExit(TrapFrame, Result);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame, KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame,
IN PVOID Arguments) IN PVOID Arguments)
{ {
@ -1584,9 +1585,9 @@ KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame,
KiSystemCall(TrapFrame, Arguments); KiSystemCall(TrapFrame, Arguments);
} }
DECLSPEC_NORETURN
VOID VOID
FASTCALL FASTCALL
DECLSPEC_NORETURN
KiFastCallEntryHandler(IN PKTRAP_FRAME TrapFrame, KiFastCallEntryHandler(IN PKTRAP_FRAME TrapFrame,
IN PVOID Arguments) IN PVOID Arguments)
{ {

View file

@ -145,6 +145,8 @@ MiComputeNonPagedPoolVa(IN ULONG FreePages)
} }
} }
extern KEVENT ZeroPageThreadEvent;
NTSTATUS NTSTATUS
NTAPI NTAPI
MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock) MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
@ -497,7 +499,6 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
MiInitializeColorTables(); MiInitializeColorTables();
/* ReactOS Stuff */ /* ReactOS Stuff */
extern KEVENT ZeroPageThreadEvent;
KeInitializeEvent(&ZeroPageThreadEvent, NotificationEvent, TRUE); KeInitializeEvent(&ZeroPageThreadEvent, NotificationEvent, TRUE);
/* Build the PFN Database */ /* Build the PFN Database */

View file

@ -566,6 +566,8 @@ MiRemoveHeadList(IN PMMPFNLIST ListHead)
return Pfn1; return Pfn1;
} }
extern KEVENT ZeroPageThreadEvent;
VOID VOID
NTAPI NTAPI
MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex) MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
@ -674,7 +676,6 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
#endif #endif
/* Notify zero page thread if enough pages are on the free list now */ /* Notify zero page thread if enough pages are on the free list now */
extern KEVENT ZeroPageThreadEvent;
if ((MmFreePageListHead.Total > 8) && !(KeReadStateEvent(&ZeroPageThreadEvent))) if ((MmFreePageListHead.Total > 8) && !(KeReadStateEvent(&ZeroPageThreadEvent)))
{ {
/* This is ReactOS-specific */ /* This is ReactOS-specific */