mirror of
https://github.com/reactos/reactos.git
synced 2024-07-07 05:05:09 +00:00
- We do not speak about the v86 hack.
- This should fix the V86 GPF error. svn path=/trunk/; revision=23700
This commit is contained in:
parent
b23894894d
commit
38a0558e07
|
@ -44,6 +44,8 @@
|
|||
|
||||
#define FRAME_EDITED 0xFFF8
|
||||
|
||||
#define WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK 1
|
||||
|
||||
#ifndef __ASM__
|
||||
|
||||
extern ULONG Ke386CacheAlignment;
|
||||
|
|
|
@ -299,6 +299,11 @@ BadThread:
|
|||
/* Save the Exception list */
|
||||
push [ebx+KPCR_EXCEPTION_LIST]
|
||||
|
||||
#if WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK // V86 HACK
|
||||
mov ecx, [ebx+KPCR_TSS]
|
||||
push [ecx+KTSS_ESP0]
|
||||
#endif
|
||||
|
||||
/* DPC shouldn't be active */
|
||||
cmp byte ptr [ebx+KPCR_PRCB_DPC_ROUTINE_ACTIVE], 0
|
||||
jnz BugCheckDpc
|
||||
|
@ -393,6 +398,11 @@ SameProcess:
|
|||
inc dword ptr [esi+KTHREAD_CONTEXT_SWITCHES]
|
||||
//inc dword ptr [esi+KPRC_PRCB_CONTEXT_SWITCHES]
|
||||
|
||||
#if WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK
|
||||
mov ebp, [ebx+KPCR_TSS]
|
||||
pop [ebp+KTSS_ESP0]
|
||||
#endif
|
||||
|
||||
/* Restore exception list */
|
||||
pop [ebx+KPCR_EXCEPTION_LIST]
|
||||
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
typedef struct _KSHARED_CTXSWITCH_FRAME
|
||||
{
|
||||
#if WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK // V86 HACK
|
||||
ULONG_PTR Esp0;
|
||||
#endif
|
||||
PVOID ExceptionList;
|
||||
KIRQL WaitIrql;
|
||||
PVOID RetEip;
|
||||
|
@ -233,6 +236,11 @@ Ke386InitThreadWithContext(PKTHREAD Thread,
|
|||
CtxSwitchFrame->RetEip = KiThreadStartup;
|
||||
CtxSwitchFrame->WaitIrql = APC_LEVEL;
|
||||
CtxSwitchFrame->ExceptionList = (PVOID)0xFFFFFFFF;
|
||||
#if WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK // V86 HACK
|
||||
CtxSwitchFrame->Esp0 = (ULONG_PTR)Thread->InitialStack -
|
||||
sizeof(FX_SAVE_AREA) -
|
||||
0x10;
|
||||
#endif
|
||||
|
||||
/* Save back the new value of the kernel stack. */
|
||||
DPRINT("Final Kernel Stack: %x \n", CtxSwitchFrame);
|
||||
|
|
Loading…
Reference in a new issue