Author: aandrejevic Date: Sat Sep 21 00:41:41 2013 New Revision: 60257
URL: http://svn.reactos.org/svn/reactos?rev=60257&view=rev Log: [SOFT386] Implement external stack modification. [NTVDM] Implement EmulatorSetStack for NEW_EMULATOR.
Modified: branches/ntvdm/include/reactos/libs/soft386/soft386.h branches/ntvdm/lib/soft386/soft386.c branches/ntvdm/subsystems/ntvdm/emulator.c
Modified: branches/ntvdm/include/reactos/libs/soft386/soft386.h URL: http://svn.reactos.org/svn/reactos/branches/ntvdm/include/reactos/libs/soft3... ============================================================================== --- branches/ntvdm/include/reactos/libs/soft386/soft386.h [iso-8859-1] (original) +++ branches/ntvdm/include/reactos/libs/soft386/soft386.h [iso-8859-1] Sat Sep 21 00:41:41 2013 @@ -341,6 +341,10 @@ NTAPI Soft386ExecuteAt(PSOFT386_STATE State, USHORT Segment, ULONG Offset);
+VOID +NTAPI +Soft386SetStack(PSOFT386_STATE State, USHORT Segment, ULONG Offset); + #endif // _SOFT386_H_
/* EOF */
Modified: branches/ntvdm/lib/soft386/soft386.c URL: http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/soft386.c?rev=... ============================================================================== --- branches/ntvdm/lib/soft386/soft386.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/soft386.c [iso-8859-1] Sat Sep 21 00:41:41 2013 @@ -270,4 +270,20 @@ State->InstPtr.Long = Offset; }
+VOID +NTAPI +Soft386SetStack(PSOFT386_STATE State, USHORT Segment, ULONG Offset) +{ + /* Load the new SS */ + if (!Soft386LoadSegment(State, SOFT386_REG_SS, Segment)) + { + /* An exception occurred, let the handler execute instead */ + return; + } + + /* Set the new SP */ + State->GeneralRegs[SOFT386_REG_ESP].Long = Offset; +} + + /* EOF */
Modified: branches/ntvdm/subsystems/ntvdm/emulator.c URL: http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/emulator.... ============================================================================== --- branches/ntvdm/subsystems/ntvdm/emulator.c [iso-8859-1] (original) +++ branches/ntvdm/subsystems/ntvdm/emulator.c [iso-8859-1] Sat Sep 21 00:41:41 2013 @@ -429,7 +429,7 @@ /* Call the softx86 API */ softx86_set_stack_ptr(&EmulatorContext, Segment, Offset); #else - // TODO: NOT IMPLEMENTED + Soft386SetStack(&EmulatorContext, Segment, Offset); #endif }