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 */