CVS: winex/loader/ne module.c, 1.8, 1.9 segment.c, 1.7, 1.8

[email protected] 12 Sep 2007 12:36:31 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/loader/ne module.c,1.8,1.9 segment.c,1.7,1.8Update of /var/lib/cvsd/cvsroot/winex/loader/ne
In directory agravaine:/tmp/cvs-serv12101/loader/ne

Modified Files:
	module.c segment.c 
Log Message:

- changed TEB::cur_stack to TEB::WOW32Reserved.  WOW32Reserved is now at offset 0xC0 (cur_stack was at 0x70).  The old cur_stack has been renamed to 'unknown70'.



Index: module.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/loader/ne/module.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- module.c	9 Jan 2006 18:30:51 -0000	1.8
+++ module.c	12 Sep 2007 12:36:29 -0000	1.9
@@ -1169,7 +1169,7 @@
         pTask->hPrevInstance = hPrevInstance;
 
         /* Free the previous stack selector */
-        FreeSelector16( SELECTOROF(pTask->teb->cur_stack) );
+        FreeSelector16( SELECTOROF(pTask->teb->WOW32Reserved) );
 
         /* Use DGROUP for 16-bit stack */
 
@@ -1177,7 +1177,7 @@
             sp = pSegTable[pModule->ss-1].minsize + pModule->stack_size;
         sp &= ~1;
         sp -= sizeof(STACK16FRAME);
-        pTask->teb->cur_stack = MAKESEGPTR( GlobalHandleToSel16(hInstance), sp );
+        pTask->teb->WOW32Reserved = (void *)(MAKESEGPTR( GlobalHandleToSel16(hInstance), sp ));
 
         /* Registers at initialization must be:
          * ax   zero
@@ -1205,8 +1205,8 @@
 
         TRACE("Starting main program: cs:ip=%04lx:%04lx ds=%04lx ss:sp=%04x:%04x\n",
               context.SegCs, context.Eip, context.SegDs,
-              SELECTOROF(pTask->teb->cur_stack),
-              OFFSETOF(pTask->teb->cur_stack) );
+              SELECTOROF(pTask->teb->WOW32Reserved),
+              OFFSETOF(pTask->teb->WOW32Reserved) );
 
         wine_call_to_16_regs_short( &context, 0 );
         ExitThread( LOWORD(context.Eax) );

Index: segment.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/loader/ne/segment.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- segment.c	9 Jan 2006 18:30:52 -0000	1.7
+++ segment.c	12 Sep 2007 12:36:29 -0000	1.8
@@ -145,8 +145,8 @@
         HFILE16 hFile16;
 
  	selfloadheader = MapSL( MAKESEGPTR(SEL(pSegTable->hSeg),0) );
- 	oldstack = NtCurrentTeb()->cur_stack;
- 	NtCurrentTeb()->cur_stack = MAKESEGPTR(pModule->self_loading_sel,
+ 	oldstack = NtCurrentTeb()->WOW32Reserved;
+ 	NtCurrentTeb()->WOW32Reserved = MAKESEGPTR(pModule->self_loading_sel,
                                                0xff00 - sizeof(STACK16FRAME));
 
 	TRACE_(dll)("CallLoadAppSegProc(hmodule=0x%04x,hf=0x%04x,segnum=%d\n",
@@ -158,7 +158,7 @@
                                            pModule->self, hFile16, segnum );
 	TRACE_(dll)("Ret CallLoadAppSegProc: hSeg = 0x%04x\n", pSeg->hSeg);
         _lclose16( hFile16 );
- 	NtCurrentTeb()->cur_stack = oldstack;
+ 	NtCurrentTeb()->WOW32Reserved = oldstack;
     }
     else if (!(pSeg->flags & NE_SEGFLAGS_ITERATED))
         ReadFile(hf, mem, size, &res, NULL);
@@ -447,8 +447,8 @@
         sel = GlobalAlloc16( GMEM_ZEROINIT, 0xFF00 );
         pModule->self_loading_sel = SEL(sel);
         FarSetOwner16( sel, pModule->self );
-        oldstack = NtCurrentTeb()->cur_stack;
-        NtCurrentTeb()->cur_stack = MAKESEGPTR(pModule->self_loading_sel,
+        oldstack = NtCurrentTeb()->WOW32Reserved;
+        NtCurrentTeb()->WOW32Reserved = MAKESEGPTR(pModule->self_loading_sel,
                                                0xff00 - sizeof(STACK16FRAME) );
 
         DuplicateHandle( GetCurrentProcess(), NE_OpenFile(pModule),
@@ -459,7 +459,7 @@
         NE_CallTo16_word_ww(selfloadheader->BootApp, pModule->self,hFile16);
 	TRACE_(dll)("Return from CallBootAppProc\n");
         _lclose16(hFile16);
-        NtCurrentTeb()->cur_stack = oldstack;
+        NtCurrentTeb()->WOW32Reserved = oldstack;
 
         for (i = 2; i <= pModule->seg_count; i++)
             if (!NE_LoadSegment( pModule, i )) return FALSE;
@@ -656,7 +656,7 @@
 
     context.SegCs  = SEL(pSegTable[pModule->cs-1].hSeg);
     context.Eip = pModule->ip;
-    context.Ebp = OFFSETOF(NtCurrentTeb()->cur_stack) + (WORD)&((STACK16FRAME*)0)->bp;
+    context.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + (WORD)&((STACK16FRAME*)0)->bp;
 
 
     pModule->cs = 0;  /* Don't initialize it twice */
@@ -734,7 +734,7 @@
 
         context.SegCs = HIWORD(entryPoint);
         context.Eip = LOWORD(entryPoint);
-        context.Ebp =  OFFSETOF( NtCurrentTeb()->cur_stack )
+        context.Ebp =  OFFSETOF( NtCurrentTeb()->WOW32Reserved )
                              + (WORD)&((STACK16FRAME*)0)->bp;
 
         *(DWORD *)(stack -  4) = dwReason;      /* dwReason */