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/soft…
==============================================================================
--- 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
}