mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
[NTOS]
Fix compilation with MSVC. Dedicated to Stefan. svn path=/trunk/; revision=46264
This commit is contained in:
@@ -397,9 +397,9 @@ Ki386HandleOpcodeV86(
|
||||
IN PKTRAP_FRAME TrapFrame
|
||||
);
|
||||
|
||||
DECLSPEC_NORETURN
|
||||
VOID
|
||||
FASTCALL
|
||||
DECLSPEC_NORETURN
|
||||
KiEoiHelper(
|
||||
IN PKTRAP_FRAME TrapFrame
|
||||
);
|
||||
@@ -416,9 +416,9 @@ KiExitV86Mode(
|
||||
IN PKTRAP_FRAME TrapFrame
|
||||
);
|
||||
|
||||
DECLSPEC_NORETURN
|
||||
VOID
|
||||
NTAPI
|
||||
DECLSPEC_NORETURN
|
||||
KiDispatchExceptionFromTrapFrame(
|
||||
IN NTSTATUS Code,
|
||||
IN ULONG_PTR Address,
|
||||
@@ -620,6 +620,7 @@ KiSystemCallTrampoline(IN PVOID Handler,
|
||||
* later to function like this as well.
|
||||
*
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"subl %1, %%esp\n"
|
||||
@@ -635,7 +636,23 @@ KiSystemCallTrampoline(IN PVOID Handler,
|
||||
"r"(Handler)
|
||||
: "%esp", "%esi", "%edi"
|
||||
);
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
__asm
|
||||
{
|
||||
mov ecx, StackBytes
|
||||
mov edx, Arguments
|
||||
sub esp, ecx
|
||||
mov edi, esp
|
||||
mov esi, edx
|
||||
shr ecx, 2
|
||||
rep movsd
|
||||
call Handler
|
||||
mov Result, eax
|
||||
}
|
||||
#else
|
||||
#error Unknown Compiler
|
||||
#endif
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
@@ -702,6 +719,7 @@ KiConvertToGuiThread(VOID)
|
||||
* on its merry way.
|
||||
*
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movl %%ebp, %1\n"
|
||||
@@ -714,7 +732,20 @@ KiConvertToGuiThread(VOID)
|
||||
:
|
||||
: "%esp", "%ecx", "%edx", "memory"
|
||||
);
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
NTSTATUS NTAPI PsConvertToGuiThread(VOID);
|
||||
__asm
|
||||
{
|
||||
mov StackFrame, ebp
|
||||
sub StackFrame, esp
|
||||
call PsConvertToGuiThread
|
||||
add StackFrame, esp
|
||||
mov ebp, StackFrame
|
||||
mov Result, eax
|
||||
}
|
||||
#else
|
||||
#error Unknown Compiler
|
||||
#endif
|
||||
return Result;
|
||||
}
|
||||
|
||||
@@ -726,7 +757,8 @@ FORCEINLINE
|
||||
KiSwitchToBootStack(IN ULONG_PTR InitialStack)
|
||||
{
|
||||
/* We have to switch to a new stack before continuing kernel initialization */
|
||||
__asm__ __volatile__
|
||||
#ifdef __GNUC__
|
||||
__asm__
|
||||
(
|
||||
"movl %0, %%esp\n"
|
||||
"subl %1, %%esp\n"
|
||||
@@ -738,6 +770,19 @@ KiSwitchToBootStack(IN ULONG_PTR InitialStack)
|
||||
"i"(CR0_EM | CR0_TS | CR0_MP)
|
||||
: "%esp"
|
||||
);
|
||||
#elif defined(_MSC_VER)
|
||||
VOID NTAPI KiSystemStartupBootStack(VOID);
|
||||
__asm
|
||||
{
|
||||
mov ecx, InitialStack
|
||||
mov esp, ecx
|
||||
sub esp, (NPX_FRAME_LENGTH + KTRAP_FRAME_ALIGN + KTRAP_FRAME_LENGTH)
|
||||
push (CR0_EM | CR0_TS | CR0_MP)
|
||||
jmp KiSystemStartupBootStack
|
||||
}
|
||||
#else
|
||||
#error Unknown Compiler
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -1092,9 +1092,9 @@ KiIdleLoop(
|
||||
VOID
|
||||
);
|
||||
|
||||
DECLSPEC_NORETURN
|
||||
VOID
|
||||
FASTCALL
|
||||
DECLSPEC_NORETURN
|
||||
KiSystemFatalException(
|
||||
IN ULONG ExceptionCode,
|
||||
IN PKTRAP_FRAME TrapFrame
|
||||
|
||||
@@ -192,17 +192,17 @@ KiExitSystemCallDebugChecks(IN ULONG SystemCall,
|
||||
//
|
||||
// Generic Exit Routine
|
||||
//
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiSystemCallReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiSystemCallSysExitReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiSystemCallTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiEditedTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
VOID FASTCALL DECLSPEC_NORETURN KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiSystemCallReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiSystemCallSysExitReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiSystemCallTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiEditedTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
|
||||
DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(FASTCALL
|
||||
*PFAST_SYSTEM_CALL_EXIT)(IN PKTRAP_FRAME TrapFrame) DECLSPEC_NORETURN;
|
||||
*PFAST_SYSTEM_CALL_EXIT)(IN PKTRAP_FRAME TrapFrame);
|
||||
|
||||
extern PFAST_SYSTEM_CALL_EXIT KiFastCallExitHandler;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user