Update i686 thread context initialization to match AMD64
This commit is contained in:
@@ -114,7 +114,7 @@ KE::Dispatcher::SwitchThreadStack(IN PKTHREAD CurrentThread,
|
||||
:
|
||||
: [FrameSize] "i" (sizeof(KSWITCH_FRAME) - 4),
|
||||
[PrcbcCurrentThread] "i" (FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread)),
|
||||
[SwApcBypass] "i" (FIELD_OFFSET(KSWITCH_FRAME, ApcBypassDisabled)),
|
||||
[SwApcBypass] "i" (FIELD_OFFSET(KSWITCH_FRAME, ApcBypass)),
|
||||
[SwExceptionList] "i" (FIELD_OFFSET(KSWITCH_FRAME, ExceptionList)),
|
||||
[SwitchRoutine] "i" (SwitchThreadContext),
|
||||
[ThrdInfoExceptions] "i" (FIELD_OFFSET(THREAD_INFORMATION_BLOCK, ExceptionList)),
|
||||
|
||||
@@ -121,14 +121,14 @@ KE::KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
}
|
||||
|
||||
/* Initialize thread startup information */
|
||||
ThreadFrame->StartFrame.StartContext = StartContext;
|
||||
ThreadFrame->StartFrame.StartRoutine = StartRoutine;
|
||||
ThreadFrame->StartFrame.SystemRoutine = SystemRoutine;
|
||||
ThreadFrame->StartFrame.P1Home = (ULONG)StartContext;
|
||||
ThreadFrame->StartFrame.P2Home = (ULONG)StartRoutine;
|
||||
ThreadFrame->StartFrame.P3Home = (ULONG)SystemRoutine;
|
||||
|
||||
/* Initialize switch frame */
|
||||
ThreadFrame->SwitchFrame.ApcBypassDisabled = TRUE;
|
||||
ThreadFrame->SwitchFrame.ApcBypass = APC_LEVEL;
|
||||
ThreadFrame->SwitchFrame.ExceptionList = (PEXCEPTION_REGISTRATION_RECORD) - 1;
|
||||
ThreadFrame->SwitchFrame.Return = (PVOID)(ULONG)RunThread;
|
||||
ThreadFrame->SwitchFrame.Return = (ULONG)RunThread;
|
||||
|
||||
/* Set thread stack boundaries */
|
||||
Thread->InitialStack = (PVOID)&ThreadFrame->NpxFrame;
|
||||
|
||||
Reference in New Issue
Block a user