Replaced global Callbacks structure by appropriate glue code generation. Removed a few unused entries in the Callout structure.
diff --git a/loader/ne/.cvsignore b/loader/ne/.cvsignore index f3c7a7c..9a8a172 100644 --- a/loader/ne/.cvsignore +++ b/loader/ne/.cvsignore
@@ -1 +1,3 @@ Makefile +module.glue.c +segment.glue.c
diff --git a/loader/ne/Makefile.in b/loader/ne/Makefile.in index 6c5aefc..7eb11fc 100644 --- a/loader/ne/Makefile.in +++ b/loader/ne/Makefile.in
@@ -11,6 +11,8 @@ resource.c \ segment.c +GLUE = module.c segment.c + all: $(MODULE).o @MAKE_RULES@
diff --git a/loader/ne/module.c b/loader/ne/module.c index dcf0cb7..46e2605 100644 --- a/loader/ne/module.c +++ b/loader/ne/module.c
@@ -17,7 +17,6 @@ #include "toolhelp.h" #include "file.h" #include "ldt.h" -#include "callback.h" #include "heap.h" #include "task.h" #include "global.h" @@ -45,6 +44,10 @@ static HMODULE16 NE_GetModuleByFilename( LPCSTR name ); +/* ### start build ### */ +extern WORD CALLBACK NE_CallTo16_word_w(FARPROC16,WORD); +/* ### stop build ### */ + /*********************************************************************** * NE_GetPtr */ @@ -1176,7 +1179,7 @@ SELECTOROF(pTask->teb->cur_stack), OFFSETOF(pTask->teb->cur_stack) ); - ExitThread( Callbacks->CallRegisterShortProc( &context, 0 ) ); + ExitThread( CallTo16RegisterShort( &context, 0 ) ); } SYSLEVEL_LeaveWin16Lock(); @@ -1209,7 +1212,7 @@ WARN("module %04x doesn't have a WEP\n", hModule ); return FALSE; } - return Callbacks->CallWindowsExitProc( WEP, WEP_FREE_DLL ); + return NE_CallTo16_word_w( WEP, WEP_FREE_DLL ); }
diff --git a/loader/ne/resource.c b/loader/ne/resource.c index baf79c8..0a8cc23 100644 --- a/loader/ne/resource.c +++ b/loader/ne/resource.c
@@ -29,6 +29,9 @@ static FARPROC16 DefResourceHandlerProc = (FARPROC16)0xffffffff; +/* already defined in segment.c glue code */ +extern WORD CALLBACK NE_CallTo16_word_www(FARPROC16,WORD,WORD,WORD); + /*********************************************************************** * NE_FindNameTableId * @@ -486,7 +489,7 @@ { if ( pTypeInfo->resloader && pTypeInfo->resloader != DefResourceHandlerProc ) - pNameInfo->handle = Callbacks->CallResourceHandlerProc( + pNameInfo->handle = NE_CallTo16_word_www( pTypeInfo->resloader, pNameInfo->handle, pModule->self, hRsrc ); else pNameInfo->handle = NE_DefResourceHandler(
diff --git a/loader/ne/segment.c b/loader/ne/segment.c index 6da6371..2c89b2a 100644 --- a/loader/ne/segment.c +++ b/loader/ne/segment.c
@@ -21,7 +21,6 @@ #include "global.h" #include "task.h" #include "selectors.h" -#include "callback.h" #include "file.h" #include "module.h" #include "stackframe.h" @@ -29,15 +28,20 @@ #include "debugtools.h" #include "toolhelp.h" -DECLARE_DEBUG_CHANNEL(dll) -DECLARE_DEBUG_CHANNEL(fixup) -DECLARE_DEBUG_CHANNEL(module) -DECLARE_DEBUG_CHANNEL(segment) +DECLARE_DEBUG_CHANNEL(dll); +DECLARE_DEBUG_CHANNEL(fixup); +DECLARE_DEBUG_CHANNEL(module); +DECLARE_DEBUG_CHANNEL(segment); #define SEL(x) ((x)|1) static void NE_FixupSegmentPrologs(NE_MODULE *pModule, WORD segnum); +/* ### start build ### */ +extern WORD CALLBACK NE_CallTo16_word_ww(FARPROC16,WORD,WORD); +extern WORD CALLBACK NE_CallTo16_word_www(FARPROC16,WORD,WORD,WORD); +/* ### stop build ### */ + /*********************************************************************** * NE_GetRelocAddrName */ @@ -121,9 +125,8 @@ DuplicateHandle( GetCurrentProcess(), hf, GetCurrentProcess(), &hFile32, 0, FALSE, DUPLICATE_SAME_ACCESS ); hFile16 = FILE_AllocDosHandle( hFile32 ); - pSeg->hSeg = Callbacks->CallLoadAppSegProc( selfloadheader->LoadAppSeg, - pModule->self, hFile16, - segnum ); + pSeg->hSeg = NE_CallTo16_word_www( selfloadheader->LoadAppSeg, + pModule->self, hFile16, segnum ); TRACE_(dll)("Ret CallLoadAppSegProc: hSeg = 0x%04x\n", pSeg->hSeg); _lclose16( hFile16 ); NtCurrentTeb()->cur_stack = oldstack; @@ -420,7 +423,7 @@ hFile16 = FILE_AllocDosHandle( hf ); TRACE_(dll)("CallBootAppProc(hModule=0x%04x,hf=0x%04x)\n", pModule->self,hFile16); - Callbacks->CallBootAppProc(selfloadheader->BootApp, pModule->self,hFile16); + NE_CallTo16_word_ww(selfloadheader->BootApp, pModule->self,hFile16); TRACE_(dll)("Return from CallBootAppProc\n"); _lclose16(hf); NtCurrentTeb()->cur_stack = oldstack; @@ -627,7 +630,7 @@ TRACE_(dll)("Calling LibMain, cs:ip=%04lx:%04lx ds=%04lx di=%04x cx=%04x\n", CS_reg(&context), EIP_reg(&context), DS_reg(&context), DI_reg(&context), CX_reg(&context) ); - Callbacks->CallRegisterShortProc( &context, 0 ); + CallTo16RegisterShort( &context, 0 ); return TRUE; } @@ -712,7 +715,7 @@ *(DWORD *)(stack - 14) = 0; /* dwReserved1 */ *(WORD *) (stack - 16) = 0; /* wReserved2 */ - Callbacks->CallRegisterShortProc( &context, 16 ); + CallTo16RegisterShort( &context, 16 ); } }