mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 14:30:57 +00:00
- It should now be safe to remove the V86 ESP0 hack, since V86 mode works fine (tested on VMWare/QEmu).
svn path=/trunk/; revision=23809
This commit is contained in:
parent
21aef1a7a7
commit
3d10f77c92
4 changed files with 10 additions and 29 deletions
|
@ -49,6 +49,13 @@ typedef struct _DISPATCH_INFO
|
||||||
PKINTERRUPT_ROUTINE *FlatDispatch;
|
PKINTERRUPT_ROUTINE *FlatDispatch;
|
||||||
} DISPATCH_INFO, *PDISPATCH_INFO;
|
} DISPATCH_INFO, *PDISPATCH_INFO;
|
||||||
|
|
||||||
|
typedef PCHAR
|
||||||
|
(NTAPI *PKE_BUGCHECK_UNICODE_TO_ANSI)(
|
||||||
|
IN PUNICODE_STRING Unicode,
|
||||||
|
IN PCHAR Ansi,
|
||||||
|
IN ULONG Length
|
||||||
|
);
|
||||||
|
|
||||||
struct _KIRQ_TRAPFRAME;
|
struct _KIRQ_TRAPFRAME;
|
||||||
struct _KPCR;
|
struct _KPCR;
|
||||||
struct _KPRCB;
|
struct _KPRCB;
|
||||||
|
@ -76,6 +83,7 @@ extern ULONG KeI386EFlagsAndMaskV86;
|
||||||
extern ULONG KeI386EFlagsOrMaskV86;
|
extern ULONG KeI386EFlagsOrMaskV86;
|
||||||
extern BOOLEAN KeI386VirtualIntExtensions;
|
extern BOOLEAN KeI386VirtualIntExtensions;
|
||||||
extern KIDTENTRY KiIdt[];
|
extern KIDTENTRY KiIdt[];
|
||||||
|
extern FAST_MUTEX KernelAddressSpaceLock;
|
||||||
|
|
||||||
/* MACROS *************************************************************************/
|
/* MACROS *************************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -24,12 +24,10 @@ HalReleaseDisplayOwnership(
|
||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
extern FAST_MUTEX KernelAddressSpaceLock;
|
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
LIST_ENTRY BugcheckCallbackListHead = {NULL,NULL};
|
LIST_ENTRY BugcheckCallbackListHead;
|
||||||
LIST_ENTRY BugcheckReasonCallbackListHead = {NULL,NULL};
|
LIST_ENTRY BugcheckReasonCallbackListHead;
|
||||||
ULONG KeBugCheckActive, KeBugCheckOwner;
|
ULONG KeBugCheckActive, KeBugCheckOwner;
|
||||||
LONG KeBugCheckOwnerRecursionCount;
|
LONG KeBugCheckOwnerRecursionCount;
|
||||||
PRTL_MESSAGE_RESOURCE_DATA KiBugCodeMessages;
|
PRTL_MESSAGE_RESOURCE_DATA KiBugCodeMessages;
|
||||||
|
@ -38,13 +36,6 @@ ULONG KiHardwareTrigger;
|
||||||
PUNICODE_STRING KiBugCheckDriver;
|
PUNICODE_STRING KiBugCheckDriver;
|
||||||
ULONG_PTR KiBugCheckData[5];
|
ULONG_PTR KiBugCheckData[5];
|
||||||
|
|
||||||
typedef PCHAR
|
|
||||||
(NTAPI *PKE_BUGCHECK_UNICODE_TO_ANSI)(
|
|
||||||
IN PUNICODE_STRING Unicode,
|
|
||||||
IN PCHAR Ansi,
|
|
||||||
IN ULONG Length
|
|
||||||
);
|
|
||||||
|
|
||||||
/* PRIVATE FUNCTIONS *********************************************************/
|
/* PRIVATE FUNCTIONS *********************************************************/
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
|
|
@ -299,11 +299,6 @@ BadThread:
|
||||||
/* Save the Exception list */
|
/* Save the Exception list */
|
||||||
push [ebx+KPCR_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 */
|
/* DPC shouldn't be active */
|
||||||
cmp byte ptr [ebx+KPCR_PRCB_DPC_ROUTINE_ACTIVE], 0
|
cmp byte ptr [ebx+KPCR_PRCB_DPC_ROUTINE_ACTIVE], 0
|
||||||
jnz BugCheckDpc
|
jnz BugCheckDpc
|
||||||
|
@ -398,11 +393,6 @@ SameProcess:
|
||||||
inc dword ptr [esi+KTHREAD_CONTEXT_SWITCHES]
|
inc dword ptr [esi+KTHREAD_CONTEXT_SWITCHES]
|
||||||
//inc dword ptr [esi+KPRC_PRCB_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 */
|
/* Restore exception list */
|
||||||
pop [ebx+KPCR_EXCEPTION_LIST]
|
pop [ebx+KPCR_EXCEPTION_LIST]
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
|
|
||||||
typedef struct _KSHARED_CTXSWITCH_FRAME
|
typedef struct _KSHARED_CTXSWITCH_FRAME
|
||||||
{
|
{
|
||||||
#if WE_DO_NOT_SPEAK_ABOUT_THE_V86_HACK // V86 HACK
|
|
||||||
ULONG_PTR Esp0;
|
|
||||||
#endif
|
|
||||||
PVOID ExceptionList;
|
PVOID ExceptionList;
|
||||||
KIRQL WaitIrql;
|
KIRQL WaitIrql;
|
||||||
PVOID RetEip;
|
PVOID RetEip;
|
||||||
|
@ -236,11 +233,6 @@ Ke386InitThreadWithContext(PKTHREAD Thread,
|
||||||
CtxSwitchFrame->RetEip = KiThreadStartup;
|
CtxSwitchFrame->RetEip = KiThreadStartup;
|
||||||
CtxSwitchFrame->WaitIrql = APC_LEVEL;
|
CtxSwitchFrame->WaitIrql = APC_LEVEL;
|
||||||
CtxSwitchFrame->ExceptionList = (PVOID)0xFFFFFFFF;
|
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. */
|
/* Save back the new value of the kernel stack. */
|
||||||
DPRINT("Final Kernel Stack: %x \n", CtxSwitchFrame);
|
DPRINT("Final Kernel Stack: %x \n", CtxSwitchFrame);
|
||||||
|
|
Loading…
Reference in a new issue