Some amd64 compilation fixes

svn path=/branches/cmake-bringup/; revision=50233
This commit is contained in:
Timo Kreuzer 2010-12-31 15:12:00 +00:00
parent 288c48c7ad
commit bf9290d80d
2 changed files with 21 additions and 36 deletions

View file

@ -12,24 +12,9 @@
#define NDEBUG
#include <debug.h>
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;

View file

@ -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