From a12f63e3809f8b0f261318700201eeb42cf093d0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 13 Jan 2010 21:31:55 +0000 Subject: [PATCH] [NTOS] KiExitV86Mode is supposed to return a pointer to the protected mode KTRAP_FRAME. Instead it was returning the value of TrapFrame->Edi, which would be identical to PmTrapFrame->Ebp, which doesn't have any particular meaning. Fix it by returning PmTrapFrame directly. Fixes 2nd stage boot. svn path=/trunk/; revision=45062 --- reactos/ntoskrnl/ke/i386/v86vdm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/ke/i386/v86vdm.c b/reactos/ntoskrnl/ke/i386/v86vdm.c index 9189cc77cae..e1d63f50c42 100644 --- a/reactos/ntoskrnl/ke/i386/v86vdm.c +++ b/reactos/ntoskrnl/ke/i386/v86vdm.c @@ -478,9 +478,9 @@ KiExitV86Mode(IN PKTRAP_FRAME TrapFrame) GdtEntry->HighWord.Bytes.BaseMid = (UCHAR)((ULONG_PTR)Thread->Teb >> 16); GdtEntry->HighWord.Bytes.BaseHi = (UCHAR)((ULONG_PTR)Thread->Teb >> 24); - /* Enable interrupts and get back to protected mode */ + /* Enable interrupts and return a pointer to the trap frame */ _enable(); - return TrapFrame->Edi; + return (ULONG)PmTrapFrame; } VOID