From bf9290d80d6865f6df395d7db508d542aa3f81b0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 31 Dec 2010 15:12:00 +0000 Subject: [PATCH] [CMAKE] Some amd64 compilation fixes svn path=/branches/cmake-bringup/; revision=50233 --- ntoskrnl/ke/amd64/thrdini.c | 37 +++++++++++-------------------------- ntoskrnl/ke/amd64/trap.S | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/ntoskrnl/ke/amd64/thrdini.c b/ntoskrnl/ke/amd64/thrdini.c index 616cd303264..ce81b1398d6 100644 --- a/ntoskrnl/ke/amd64/thrdini.c +++ b/ntoskrnl/ke/amd64/thrdini.c @@ -12,24 +12,9 @@ #define NDEBUG #include -typedef struct _KSWITCHFRAME -{ - PVOID ExceptionList; - BOOLEAN ApcBypassDisable; - PVOID RetAddr; -} KSWITCHFRAME, *PKSWITCHFRAME; - -typedef struct _KSTART_FRAME -{ - PKSYSTEM_ROUTINE SystemRoutine; - PKSTART_ROUTINE StartRoutine; - PVOID StartContext; - BOOLEAN UserThread; -} KSTART_FRAME, *PKSTART_FRAME; - typedef struct _KUINIT_FRAME { - KSWITCHFRAME CtxSwitchFrame; + KSWITCH_FRAME CtxSwitchFrame; KSTART_FRAME StartFrame; KTRAP_FRAME TrapFrame; //FX_SAVE_AREA FxSaveArea; @@ -37,7 +22,7 @@ typedef struct _KUINIT_FRAME typedef struct _KKINIT_FRAME { - KSWITCHFRAME CtxSwitchFrame; + KSWITCH_FRAME CtxSwitchFrame; KSTART_FRAME StartFrame; //FX_SAVE_AREA FxSaveArea; } KKINIT_FRAME, *PKKINIT_FRAME; @@ -55,7 +40,7 @@ KiInitializeContextThread(IN PKTHREAD Thread, //PFX_SAVE_AREA FxSaveArea; //PFXSAVE_FORMAT FxSaveFormat; PKSTART_FRAME StartFrame; - PKSWITCHFRAME CtxSwitchFrame; + PKSWITCH_FRAME CtxSwitchFrame; PKTRAP_FRAME TrapFrame; CONTEXT LocalContext; PCONTEXT Context = NULL; @@ -140,7 +125,7 @@ KiInitializeContextThread(IN PKTHREAD Thread, Thread->PreviousMode = UserMode; /* Tell KiThreadStartup of that too */ - StartFrame->UserThread = TRUE; +// StartFrame->UserThread = TRUE; } else { @@ -170,18 +155,18 @@ KiInitializeContextThread(IN PKTHREAD Thread, Thread->PreviousMode = KernelMode; /* Tell KiThreadStartup of that too */ - StartFrame->UserThread = FALSE; +// StartFrame->UserThread = FALSE; } /* Now setup the remaining data for KiThreadStartup */ - StartFrame->StartContext = StartContext; - StartFrame->StartRoutine = StartRoutine; - StartFrame->SystemRoutine = SystemRoutine; +// StartFrame->StartContext = StartContext; +// StartFrame->StartRoutine = StartRoutine; +// StartFrame->SystemRoutine = SystemRoutine; /* And set up the Context Switch Frame */ - CtxSwitchFrame->RetAddr = KiThreadStartup; - CtxSwitchFrame->ApcBypassDisable = TRUE; - CtxSwitchFrame->ExceptionList = EXCEPTION_CHAIN_END;; +// CtxSwitchFrame->RetAddr = KiThreadStartup; +// CtxSwitchFrame->ApcBypassDisable = TRUE; +// CtxSwitchFrame->ExceptionList = EXCEPTION_CHAIN_END;; /* Save back the new value of the kernel stack. */ Thread->KernelStack = (PVOID)CtxSwitchFrame; diff --git a/ntoskrnl/ke/amd64/trap.S b/ntoskrnl/ke/amd64/trap.S index 2b95b42894d..e0831d24f1e 100644 --- a/ntoskrnl/ke/amd64/trap.S +++ b/ntoskrnl/ke/amd64/trap.S @@ -76,7 +76,7 @@ ENDM #define TRAPFLAG_SYSTEMSERVICE (TRAPFLAG_VOLATILES|TRAPFLAG_DEBUG) #define TRAPFLAG_ALL HEX(ff) -/* +/* * Stack Layout: * |-------------------| * | KTRAP_FRAME | @@ -89,7 +89,7 @@ ENDM */ /* - * ENTER_TRAP_FRAME - Allocate SIZE_KTRAP_FRAME and save registers to it + * ENTER_TRAP_FRAME - Allocate KTRAP_FRAME_LENGTH and save registers to it */ MACRO(ENTER_TRAP_FRAME, Flags) LOCAL dont_swap @@ -107,8 +107,8 @@ else endif /* Make room for a KTRAP_FRAME */ - sub rsp, (SIZE_KTRAP_FRAME - SIZE_INITIAL_FRAME) - .allocstack (SIZE_KTRAP_FRAME - SIZE_INITIAL_FRAME) + sub rsp, (KTRAP_FRAME_LENGTH - SIZE_INITIAL_FRAME) + .allocstack (KTRAP_FRAME_LENGTH - SIZE_INITIAL_FRAME) .endprolog /* Save rbp */ @@ -278,12 +278,12 @@ ENDR .PROC InternalDispatchException /* Allocate stack space for EXCEPTION_RECORD and KEXCEPTION_FRAME */ - sub rsp, SIZE_EXCEPTION_RECORD + SIZE_KEXCEPTION_FRAME - .allocstack (SIZE_EXCEPTION_RECORD + SIZE_KEXCEPTION_FRAME) + sub rsp, EXCEPTION_RECORD_LENGTH + KEXCEPTION_FRAME_LENGTH + .allocstack (EXCEPTION_RECORD_LENGTH + KEXCEPTION_FRAME_LENGTH) .endprolog /* Set up EXCEPTION_RECORD */ - lea rcx, [rsp + SIZE_KEXCEPTION_FRAME] + lea rcx, [rsp + KEXCEPTION_FRAME_LENGTH] mov [rcx + EXCEPTION_RECORD_ExceptionCode], eax xor rax, rax mov [rcx + EXCEPTION_RECORD_ExceptionFlags], eax @@ -341,7 +341,7 @@ ENDR movdqa xmm14, [rsp + KEXCEPTION_FRAME_Xmm14] movdqa xmm15, [rsp + KEXCEPTION_FRAME_Xmm15] - add rsp, SIZE_EXCEPTION_RECORD + SIZE_KEXCEPTION_FRAME + add rsp, EXCEPTION_RECORD_LENGTH + KEXCEPTION_FRAME_LENGTH ret .ENDP InternalDispatchException @@ -516,7 +516,7 @@ PUBLIC KiInvalidOpcodeFault KiInvalidOpcodeKernel: /* Kernel mode fault */ - + /* Dispatch the exception */ mov eax, STATUS_ILLEGAL_INSTRUCTION mov edx, 3 @@ -837,7 +837,7 @@ PUBLIC KiRaiseAssertion mov r10, 0 mov r11, 0 call InternalDispatchException - + LEAVE_TRAP_FRAME iretq .ENDP KiRaiseAssertion