Converted all the kernel32 register functions to the

DEFINE_REGS_ENTRYPOINT mechanism.
This commit is contained in:
Alexandre Julliard 2005-05-07 18:25:51 +00:00
parent 84e00d4804
commit 2c7a248055
7 changed files with 263 additions and 277 deletions

View File

@ -980,7 +980,7 @@ BOOL WINAPI LocalUnlock(
* *
* The SEGPTR is used by the caller! * The SEGPTR is used by the caller!
*/ */
void AllocMappedBuffer( CONTEXT86 *context ) void WINAPI __regs_AllocMappedBuffer( CONTEXT86 *context )
{ {
HGLOBAL handle = GlobalAlloc(0, context->Edi + 8); HGLOBAL handle = GlobalAlloc(0, context->Edi + 8);
DWORD *buffer = (DWORD *)GlobalLock(handle); DWORD *buffer = (DWORD *)GlobalLock(handle);
@ -1004,7 +1004,9 @@ void AllocMappedBuffer( CONTEXT86 *context )
context->Edi = (DWORD)(buffer + 2); context->Edi = (DWORD)(buffer + 2);
} }
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( AllocMappedBuffer, 0, 0 );
#endif
/********************************************************************** /**********************************************************************
* FreeMappedBuffer (KERNEL32.39) * FreeMappedBuffer (KERNEL32.39)
@ -1013,7 +1015,7 @@ void AllocMappedBuffer( CONTEXT86 *context )
* *
* Input: EDI register: pointer to buffer * Input: EDI register: pointer to buffer
*/ */
void FreeMappedBuffer( CONTEXT86 *context ) void WINAPI __regs_FreeMappedBuffer( CONTEXT86 *context )
{ {
if (context->Edi) if (context->Edi)
{ {
@ -1025,6 +1027,9 @@ void FreeMappedBuffer( CONTEXT86 *context )
GlobalFree((HGLOBAL)buffer[0]); GlobalFree((HGLOBAL)buffer[0]);
} }
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FreeMappedBuffer, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* GlobalMemoryStatusEx (KERNEL32.@) * GlobalMemoryStatusEx (KERNEL32.@)

View File

@ -8,15 +8,15 @@
# - code generated by the MS Thunk Compiler # - code generated by the MS Thunk Compiler
# - symbols exported by the Oct 94 beta version of kernel32.dll # - symbols exported by the Oct 94 beta version of kernel32.dll
1 stdcall -register -i386 VxDCall0(long) VxDCall 1 stdcall -i386 VxDCall0(long) VxDCall
2 stdcall -register -i386 VxDCall1(long) VxDCall 2 stdcall -i386 VxDCall1(long) VxDCall
3 stdcall -register -i386 VxDCall2(long) VxDCall 3 stdcall -i386 VxDCall2(long) VxDCall
4 stdcall -register -i386 VxDCall3(long) VxDCall 4 stdcall -i386 VxDCall3(long) VxDCall
5 stdcall -register -i386 VxDCall4(long) VxDCall 5 stdcall -i386 VxDCall4(long) VxDCall
6 stdcall -register -i386 VxDCall5(long) VxDCall 6 stdcall -i386 VxDCall5(long) VxDCall
7 stdcall -register -i386 VxDCall6(long) VxDCall 7 stdcall -i386 VxDCall6(long) VxDCall
8 stdcall -register -i386 VxDCall7(long) VxDCall 8 stdcall -i386 VxDCall7(long) VxDCall
9 stdcall -register -i386 VxDCall8(long) VxDCall 9 stdcall -i386 VxDCall8(long) VxDCall
10 stdcall k32CharToOemA(str ptr) 10 stdcall k32CharToOemA(str ptr)
11 stdcall k32CharToOemBuffA(str ptr long) 11 stdcall k32CharToOemBuffA(str ptr long)
12 stdcall k32OemToCharA(ptr ptr) 12 stdcall k32OemToCharA(ptr ptr)
@ -24,7 +24,7 @@
14 stdcall k32LoadStringA(long long ptr long) 14 stdcall k32LoadStringA(long long ptr long)
15 varargs k32wsprintfA(str str) 15 varargs k32wsprintfA(str str)
16 stdcall k32wvsprintfA(ptr str ptr) 16 stdcall k32wvsprintfA(ptr str ptr)
17 stdcall -register -i386 CommonUnimpStub() 17 stdcall -i386 CommonUnimpStub()
18 stdcall GetProcessDword(long long) 18 stdcall GetProcessDword(long long)
19 stub ThunkTheTemplateHandle 19 stub ThunkTheTemplateHandle
20 stdcall DosFileHandleToWin32Handle(long) 20 stdcall DosFileHandleToWin32Handle(long)
@ -45,20 +45,20 @@
35 stdcall LoadLibrary16(str) 35 stdcall LoadLibrary16(str)
36 stdcall FreeLibrary16(long) 36 stdcall FreeLibrary16(long)
37 stdcall GetProcAddress16(long str) WIN32_GetProcAddress16 37 stdcall GetProcAddress16(long str) WIN32_GetProcAddress16
38 stdcall -register -i386 AllocMappedBuffer() 38 stdcall -i386 AllocMappedBuffer()
39 stdcall -register -i386 FreeMappedBuffer() 39 stdcall -i386 FreeMappedBuffer()
40 stdcall -register -i386 OT_32ThkLSF() 40 stdcall -i386 OT_32ThkLSF()
41 stdcall ThunkInitLSF(long str long str str) 41 stdcall ThunkInitLSF(long str long str str)
42 stdcall -register -i386 LogApiThkLSF(str) 42 stdcall -i386 LogApiThkLSF(str)
43 stdcall ThunkInitLS(long str long str str) 43 stdcall ThunkInitLS(long str long str str)
44 stdcall -register -i386 LogApiThkSL(str) 44 stdcall -i386 LogApiThkSL(str)
45 stdcall -register -i386 Common32ThkLS() 45 stdcall -i386 Common32ThkLS()
46 stdcall ThunkInitSL(long str long str str) 46 stdcall ThunkInitSL(long str long str str)
47 stdcall -register -i386 LogCBThkSL(str) 47 stdcall -i386 LogCBThkSL(str)
48 stdcall ReleaseThunkLock(ptr) 48 stdcall ReleaseThunkLock(ptr)
49 stdcall RestoreThunkLock(long) 49 stdcall RestoreThunkLock(long)
51 stdcall -register -i386 W32S_BackTo32() 51 stdcall -i386 W32S_BackTo32()
52 stdcall GetThunkBuff() 52 stdcall GetThunkBuff()
53 stdcall GetThunkStuff(str str) 53 stdcall GetThunkStuff(str str)
54 stdcall K32WOWCallback16(long long) 54 stdcall K32WOWCallback16(long long)
@ -96,8 +96,8 @@
86 stdcall @(ptr) _KERNEL32_86 86 stdcall @(ptr) _KERNEL32_86
87 stdcall SSOnBigStack() 87 stdcall SSOnBigStack()
88 varargs SSCall(long long ptr) 88 varargs SSCall(long long ptr)
89 stdcall -register -i386 FT_PrologPrime() 89 stdcall -i386 FT_PrologPrime()
90 stdcall -register -i386 QT_ThunkPrime() 90 stdcall -i386 QT_ThunkPrime()
91 stdcall PK16FNF(ptr) 91 stdcall PK16FNF(ptr)
92 stdcall GetPK16SysVar() 92 stdcall GetPK16SysVar()
93 stdcall GetpWin16Lock(ptr) 93 stdcall GetpWin16Lock(ptr)
@ -278,23 +278,23 @@
@ stdcall ExitThread(long) @ stdcall ExitThread(long)
@ stdcall ExpandEnvironmentStringsA(str ptr long) @ stdcall ExpandEnvironmentStringsA(str ptr long)
@ stdcall ExpandEnvironmentStringsW(wstr ptr long) @ stdcall ExpandEnvironmentStringsW(wstr ptr long)
@ stdcall -register -i386 FT_Exit0() @ stdcall -i386 FT_Exit0()
@ stdcall -register -i386 FT_Exit12() @ stdcall -i386 FT_Exit12()
@ stdcall -register -i386 FT_Exit16() @ stdcall -i386 FT_Exit16()
@ stdcall -register -i386 FT_Exit20() @ stdcall -i386 FT_Exit20()
@ stdcall -register -i386 FT_Exit24() @ stdcall -i386 FT_Exit24()
@ stdcall -register -i386 FT_Exit28() @ stdcall -i386 FT_Exit28()
@ stdcall -register -i386 FT_Exit32() @ stdcall -i386 FT_Exit32()
@ stdcall -register -i386 FT_Exit36() @ stdcall -i386 FT_Exit36()
@ stdcall -register -i386 FT_Exit40() @ stdcall -i386 FT_Exit40()
@ stdcall -register -i386 FT_Exit44() @ stdcall -i386 FT_Exit44()
@ stdcall -register -i386 FT_Exit48() @ stdcall -i386 FT_Exit48()
@ stdcall -register -i386 FT_Exit4() @ stdcall -i386 FT_Exit4()
@ stdcall -register -i386 FT_Exit52() @ stdcall -i386 FT_Exit52()
@ stdcall -register -i386 FT_Exit56() @ stdcall -i386 FT_Exit56()
@ stdcall -register -i386 FT_Exit8() @ stdcall -i386 FT_Exit8()
@ stdcall -register -i386 FT_Prolog() @ stdcall -i386 FT_Prolog()
@ stdcall -register -i386 FT_Thunk() @ stdcall -i386 FT_Thunk()
@ stdcall FatalAppExitA(long str) @ stdcall FatalAppExitA(long str)
@ stdcall FatalAppExitW(long wstr) @ stdcall FatalAppExitW(long wstr)
@ stdcall FatalExit(long) @ stdcall FatalExit(long)
@ -590,8 +590,8 @@
@ stdcall IsValidCodePage(long) @ stdcall IsValidCodePage(long)
@ stdcall IsValidLanguageGroup(long long) @ stdcall IsValidLanguageGroup(long long)
@ stdcall IsValidLocale(long long) @ stdcall IsValidLocale(long long)
@ stdcall -register -i386 K32Thk1632Epilog() @ stdcall -i386 K32Thk1632Epilog()
@ stdcall -register -i386 K32Thk1632Prolog() @ stdcall -i386 K32Thk1632Prolog()
@ stdcall LCMapStringA(long long str long ptr long) @ stdcall LCMapStringA(long long str long ptr long)
@ stdcall LCMapStringW(long long wstr long ptr long) @ stdcall LCMapStringW(long long wstr long ptr long)
@ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection @ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection
@ -616,10 +616,10 @@
@ stdcall LockFileEx(long long long long long ptr) @ stdcall LockFileEx(long long long long long ptr)
@ stdcall LockResource(long) @ stdcall LockResource(long)
@ stdcall MakeCriticalSectionGlobal(ptr) @ stdcall MakeCriticalSectionGlobal(ptr)
@ stdcall -register -i386 MapHInstLS() @ stdcall -i386 MapHInstLS()
@ stdcall -register -i386 MapHInstLS_PN() @ stdcall -i386 MapHInstLS_PN()
@ stdcall -register -i386 MapHInstSL() @ stdcall -i386 MapHInstSL()
@ stdcall -register -i386 MapHInstSL_PN() @ stdcall -i386 MapHInstSL_PN()
@ stdcall MapHModuleLS(long) @ stdcall MapHModuleLS(long)
@ stdcall MapHModuleSL(long) @ stdcall MapHModuleSL(long)
@ stdcall MapLS(ptr) @ stdcall MapLS(ptr)
@ -666,7 +666,7 @@
@ stdcall Process32NextW (ptr ptr) @ stdcall Process32NextW (ptr ptr)
@ stdcall PulseEvent(long) @ stdcall PulseEvent(long)
@ stdcall PurgeComm(long long) @ stdcall PurgeComm(long long)
@ stdcall -register -i386 QT_Thunk() @ stdcall -i386 QT_Thunk()
@ stdcall QueryDosDeviceA(str ptr long) @ stdcall QueryDosDeviceA(str ptr long)
@ stdcall QueryDosDeviceW(wstr ptr long) @ stdcall QueryDosDeviceW(wstr ptr long)
@ stub QueryInformationJobObject @ stub QueryInformationJobObject
@ -713,26 +713,26 @@
@ stdcall RtlMoveMemory(ptr ptr long) ntdll.RtlMoveMemory @ stdcall RtlMoveMemory(ptr ptr long) ntdll.RtlMoveMemory
@ stdcall RtlUnwind(ptr ptr ptr long) ntdll.RtlUnwind @ stdcall RtlUnwind(ptr ptr ptr long) ntdll.RtlUnwind
@ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory @ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory
@ stdcall -register -i386 SMapLS() @ stdcall -i386 SMapLS()
@ stdcall -register -i386 SMapLS_IP_EBP_12() @ stdcall -i386 SMapLS_IP_EBP_8()
@ stdcall -register -i386 SMapLS_IP_EBP_16() @ stdcall -i386 SMapLS_IP_EBP_12()
@ stdcall -register -i386 SMapLS_IP_EBP_20() @ stdcall -i386 SMapLS_IP_EBP_16()
@ stdcall -register -i386 SMapLS_IP_EBP_24() @ stdcall -i386 SMapLS_IP_EBP_20()
@ stdcall -register -i386 SMapLS_IP_EBP_28() @ stdcall -i386 SMapLS_IP_EBP_24()
@ stdcall -register -i386 SMapLS_IP_EBP_32() @ stdcall -i386 SMapLS_IP_EBP_28()
@ stdcall -register -i386 SMapLS_IP_EBP_36() @ stdcall -i386 SMapLS_IP_EBP_32()
@ stdcall -register -i386 SMapLS_IP_EBP_40() @ stdcall -i386 SMapLS_IP_EBP_36()
@ stdcall -register -i386 SMapLS_IP_EBP_8() @ stdcall -i386 SMapLS_IP_EBP_40()
@ stdcall -register -i386 SUnMapLS() @ stdcall -i386 SUnMapLS()
@ stdcall -register -i386 SUnMapLS_IP_EBP_12() @ stdcall -i386 SUnMapLS_IP_EBP_8()
@ stdcall -register -i386 SUnMapLS_IP_EBP_16() @ stdcall -i386 SUnMapLS_IP_EBP_12()
@ stdcall -register -i386 SUnMapLS_IP_EBP_20() @ stdcall -i386 SUnMapLS_IP_EBP_16()
@ stdcall -register -i386 SUnMapLS_IP_EBP_24() @ stdcall -i386 SUnMapLS_IP_EBP_20()
@ stdcall -register -i386 SUnMapLS_IP_EBP_28() @ stdcall -i386 SUnMapLS_IP_EBP_24()
@ stdcall -register -i386 SUnMapLS_IP_EBP_32() @ stdcall -i386 SUnMapLS_IP_EBP_28()
@ stdcall -register -i386 SUnMapLS_IP_EBP_36() @ stdcall -i386 SUnMapLS_IP_EBP_32()
@ stdcall -register -i386 SUnMapLS_IP_EBP_40() @ stdcall -i386 SUnMapLS_IP_EBP_36()
@ stdcall -register -i386 SUnMapLS_IP_EBP_8() @ stdcall -i386 SUnMapLS_IP_EBP_40()
@ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr) @ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr)
@ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr) @ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr)
@ stdcall SearchPathA(str str str long ptr ptr) @ stdcall SearchPathA(str str str long ptr ptr)
@ -838,7 +838,7 @@
@ stdcall UTRegister(long str str str ptr ptr ptr) @ stdcall UTRegister(long str str str ptr ptr ptr)
@ stdcall UTUnRegister(long) @ stdcall UTUnRegister(long)
@ stdcall UnMapLS(long) @ stdcall UnMapLS(long)
@ stdcall -register -i386 UnMapSLFixArray(long long) @ stdcall -i386 UnMapSLFixArray(long long)
@ stdcall UnhandledExceptionFilter(ptr) @ stdcall UnhandledExceptionFilter(ptr)
@ stdcall UninitializeCriticalSection(ptr) @ stdcall UninitializeCriticalSection(ptr)
@ stdcall UnlockFile(long long long long long) @ stdcall UnlockFile(long long long long long)

View File

@ -374,8 +374,8 @@
469 stub WOAGimmeTitle 469 stub WOAGimmeTitle
470 stub WOADestroyConsole 470 stub WOADestroyConsole
471 pascal GetCurrentProcessId() GetCurrentProcessId 471 pascal GetCurrentProcessId() GetCurrentProcessId
472 pascal -register MapHInstLS() MapHInstLS 472 pascal -register MapHInstLS() __regs_MapHInstLS
473 pascal -register MapHInstSL() MapHInstSL 473 pascal -register MapHInstSL() __regs_MapHInstSL
474 pascal CloseW32Handle(long) CloseHandle 474 pascal CloseW32Handle(long) CloseHandle
475 pascal -ret16 GetTEBSelectorFS() GetTEBSelectorFS16 475 pascal -ret16 GetTEBSelectorFS() GetTEBSelectorFS16
476 pascal ConvertToGlobalHandle(long) ConvertToGlobalHandle 476 pascal ConvertToGlobalHandle(long) ConvertToGlobalHandle

View File

@ -2263,32 +2263,44 @@ HMODULE WINAPI MapHModuleSL(HMODULE16 hmod)
* MapHInstLS (KERNEL32.@) * MapHInstLS (KERNEL32.@)
* MapHInstLS (KERNEL.472) * MapHInstLS (KERNEL.472)
*/ */
void MapHInstLS( CONTEXT86 *context ) void WINAPI __regs_MapHInstLS( CONTEXT86 *context )
{ {
context->Eax = MapHModuleLS( (HMODULE)context->Eax ); context->Eax = MapHModuleLS( (HMODULE)context->Eax );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( MapHInstLS, 0, 0 );
#endif
/*************************************************************************** /***************************************************************************
* MapHInstSL (KERNEL32.@) * MapHInstSL (KERNEL32.@)
* MapHInstSL (KERNEL.473) * MapHInstSL (KERNEL.473)
*/ */
void MapHInstSL( CONTEXT86 *context ) void WINAPI __regs_MapHInstSL( CONTEXT86 *context )
{ {
context->Eax = (DWORD)MapHModuleSL( context->Eax ); context->Eax = (DWORD)MapHModuleSL( context->Eax );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( MapHInstSL, 0, 0 );
#endif
/*************************************************************************** /***************************************************************************
* MapHInstLS_PN (KERNEL32.@) * MapHInstLS_PN (KERNEL32.@)
*/ */
void MapHInstLS_PN( CONTEXT86 *context ) void WINAPI __regs_MapHInstLS_PN( CONTEXT86 *context )
{ {
if (context->Eax) context->Eax = MapHModuleLS( (HMODULE)context->Eax ); if (context->Eax) context->Eax = MapHModuleLS( (HMODULE)context->Eax );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( MapHInstLS_PN, 0, 0 );
#endif
/*************************************************************************** /***************************************************************************
* MapHInstSL_PN (KERNEL32.@) * MapHInstSL_PN (KERNEL32.@)
*/ */
void MapHInstSL_PN( CONTEXT86 *context ) void WINAPI __regs_MapHInstSL_PN( CONTEXT86 *context )
{ {
if (context->Eax) context->Eax = (DWORD)MapHModuleSL( context->Eax ); if (context->Eax) context->Eax = (DWORD)MapHModuleSL( context->Eax );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( MapHInstSL_PN, 0, 0 );
#endif

View File

@ -564,11 +564,13 @@ LPVOID WINAPI MapSLFix( SEGPTR sptr )
/*********************************************************************** /***********************************************************************
* UnMapSLFixArray (KERNEL32.@) * UnMapSLFixArray (KERNEL32.@)
*/ */
void WINAPI __regs_UnMapSLFixArray( SEGPTR sptr[], INT length, CONTEXT86 *context )
void UnMapSLFixArray( SEGPTR sptr[], INT length, CONTEXT86 *context )
{ {
/* Must not change EAX, hence defined as 'register' function */ /* Must not change EAX, hence defined as 'register' function */
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( UnMapSLFixArray, 8, 8 );
#endif
/*********************************************************************** /***********************************************************************
* GetThreadSelectorEntry (KERNEL32.@) * GetThreadSelectorEntry (KERNEL32.@)
@ -637,77 +639,12 @@ BOOL WINAPI GetThreadSelectorEntry( HANDLE hthread, DWORD sel, LPLDT_ENTRY ldten
} }
/********************************************************************** #ifdef DEFINE_REGS_ENTRYPOINT
* SMapLS* (KERNEL32)
* These functions map linear pointers at [EBP+xxx] to segmented pointers
* and return them.
* Win95 uses some kind of alias structs, which it stores in [EBP+x] to
* unravel them at SUnMapLS. We just store the segmented pointer there.
*/
static void x_SMapLS_IP_EBP_x(CONTEXT86 *context,int argoff)
{
DWORD val,ptr;
val =*(DWORD*)(context->Ebp + argoff);
if (val<0x10000) {
ptr=val;
*(DWORD*)(context->Ebp + argoff) = 0;
} else {
ptr = MapLS((LPVOID)val);
*(DWORD*)(context->Ebp + argoff) = ptr;
}
context->Eax = ptr;
}
/***********************************************************************
* SMapLS_IP_EBP_8 (KERNEL32.@)
*/
void SMapLS_IP_EBP_8 (CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context, 8);}
/***********************************************************************
* SMapLS_IP_EBP_12 (KERNEL32.@)
*/
void SMapLS_IP_EBP_12(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,12);}
/***********************************************************************
* SMapLS_IP_EBP_16 (KERNEL32.@)
*/
void SMapLS_IP_EBP_16(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,16);}
/***********************************************************************
* SMapLS_IP_EBP_20 (KERNEL32.@)
*/
void SMapLS_IP_EBP_20(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,20);}
/***********************************************************************
* SMapLS_IP_EBP_24 (KERNEL32.@)
*/
void SMapLS_IP_EBP_24(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,24);}
/***********************************************************************
* SMapLS_IP_EBP_28 (KERNEL32.@)
*/
void SMapLS_IP_EBP_28(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,28);}
/***********************************************************************
* SMapLS_IP_EBP_32 (KERNEL32.@)
*/
void SMapLS_IP_EBP_32(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,32);}
/***********************************************************************
* SMapLS_IP_EBP_36 (KERNEL32.@)
*/
void SMapLS_IP_EBP_36(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,36);}
/***********************************************************************
* SMapLS_IP_EBP_40 (KERNEL32.@)
*/
void SMapLS_IP_EBP_40(CONTEXT86 *context) {x_SMapLS_IP_EBP_x(context,40);}
/*********************************************************************** /***********************************************************************
* SMapLS (KERNEL32.@) * SMapLS (KERNEL32.@)
*/ */
void SMapLS( CONTEXT86 *context ) void WINAPI __regs_SMapLS( CONTEXT86 *context )
{ {
if (HIWORD(context->Eax)) if (HIWORD(context->Eax))
{ {
@ -717,67 +654,87 @@ void SMapLS( CONTEXT86 *context )
context->Edx = 0; context->Edx = 0;
} }
} }
DEFINE_REGS_ENTRYPOINT( SMapLS, 0, 0 );
/*********************************************************************** /***********************************************************************
* SUnMapLS (KERNEL32.@) * SUnMapLS (KERNEL32.@)
*/ */
void WINAPI __regs_SUnMapLS( CONTEXT86 *context )
void SUnMapLS( CONTEXT86 *context )
{ {
if (HIWORD(context->Eax)) UnMapLS( (SEGPTR)context->Eax ); if (HIWORD(context->Eax)) UnMapLS( (SEGPTR)context->Eax );
} }
DEFINE_REGS_ENTRYPOINT( SUnMapLS, 0, 0 );
/***********************************************************************
* SMapLS_IP_EBP_8 (KERNEL32.@)
* SMapLS_IP_EBP_12 (KERNEL32.@)
* SMapLS_IP_EBP_16 (KERNEL32.@)
* SMapLS_IP_EBP_20 (KERNEL32.@)
* SMapLS_IP_EBP_24 (KERNEL32.@)
* SMapLS_IP_EBP_28 (KERNEL32.@)
* SMapLS_IP_EBP_32 (KERNEL32.@)
* SMapLS_IP_EBP_36 (KERNEL32.@)
* SMapLS_IP_EBP_40 (KERNEL32.@)
*
* These functions map linear pointers at [EBP+xxx] to segmented pointers
* and return them.
* Win95 uses some kind of alias structs, which it stores in [EBP+x] to
* unravel them at SUnMapLS. We just store the segmented pointer there.
*/
#define DEFINE_SMapLS(n) \
void WINAPI __regs_SMapLS_IP_EBP_ ## n (CONTEXT86 *context) \
{ \
SEGPTR *ptr = (SEGPTR *)(context->Ebp + n); \
if (!HIWORD(*ptr)) \
{ \
context->Eax = *ptr; \
*ptr = 0; \
} \
else *ptr = context->Eax = MapLS((LPVOID)*ptr); \
} \
DEFINE_REGS_ENTRYPOINT( SMapLS_IP_EBP_ ## n, 0, 0 )
DEFINE_SMapLS(8);
DEFINE_SMapLS(12);
DEFINE_SMapLS(16);
DEFINE_SMapLS(20);
DEFINE_SMapLS(24);
DEFINE_SMapLS(28);
DEFINE_SMapLS(32);
DEFINE_SMapLS(36);
DEFINE_SMapLS(40);
inline static void x_SUnMapLS_IP_EBP_x(CONTEXT86 *context,int argoff)
{
SEGPTR *ptr = (SEGPTR *)(context->Ebp + argoff);
if (*ptr)
{
UnMapLS( *ptr );
*ptr = 0;
}
}
/*********************************************************************** /***********************************************************************
* SUnMapLS_IP_EBP_8 (KERNEL32.@) * SUnMapLS_IP_EBP_8 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_8 (CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context, 8); }
/***********************************************************************
* SUnMapLS_IP_EBP_12 (KERNEL32.@) * SUnMapLS_IP_EBP_12 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_12(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,12); }
/***********************************************************************
* SUnMapLS_IP_EBP_16 (KERNEL32.@) * SUnMapLS_IP_EBP_16 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_16(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,16); }
/***********************************************************************
* SUnMapLS_IP_EBP_20 (KERNEL32.@) * SUnMapLS_IP_EBP_20 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_20(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,20); }
/***********************************************************************
* SUnMapLS_IP_EBP_24 (KERNEL32.@) * SUnMapLS_IP_EBP_24 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_24(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,24); }
/***********************************************************************
* SUnMapLS_IP_EBP_28 (KERNEL32.@) * SUnMapLS_IP_EBP_28 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_28(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,28); }
/***********************************************************************
* SUnMapLS_IP_EBP_32 (KERNEL32.@) * SUnMapLS_IP_EBP_32 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_32(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,32); }
/***********************************************************************
* SUnMapLS_IP_EBP_36 (KERNEL32.@) * SUnMapLS_IP_EBP_36 (KERNEL32.@)
*/
void SUnMapLS_IP_EBP_36(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,36); }
/***********************************************************************
* SUnMapLS_IP_EBP_40 (KERNEL32.@) * SUnMapLS_IP_EBP_40 (KERNEL32.@)
*/ */
void SUnMapLS_IP_EBP_40(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,40); }
#define DEFINE_SUnMapLS(n) \
void WINAPI __regs_SUnMapLS_IP_EBP_ ## n (CONTEXT86 *context) \
{ \
SEGPTR *ptr = (SEGPTR *)(context->Ebp + n); \
UnMapLS( *ptr ); \
*ptr = 0; \
} \
DEFINE_REGS_ENTRYPOINT( SUnMapLS_IP_EBP_ ## n, 0, 0 )
DEFINE_SUnMapLS(8);
DEFINE_SUnMapLS(12);
DEFINE_SUnMapLS(16);
DEFINE_SUnMapLS(20);
DEFINE_SUnMapLS(24);
DEFINE_SUnMapLS(28);
DEFINE_SUnMapLS(32);
DEFINE_SUnMapLS(36);
DEFINE_SUnMapLS(40);
#endif /* DEFINE_REGS_ENTRYPOINT */

View File

@ -21,6 +21,7 @@
*/ */
#include "config.h" #include "config.h"
#include "wine/port.h"
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
@ -185,30 +186,39 @@ void WINAPI LogApiThk( LPSTR func )
* *
* NOTE: needs to preserve all registers! * NOTE: needs to preserve all registers!
*/ */
void LogApiThkLSF( LPSTR func, CONTEXT86 *context ) void WINAPI __regs_LogApiThkLSF( LPSTR func, CONTEXT86 *context )
{ {
TRACE( "%s\n", debugstr_a(func) ); TRACE( "%s\n", debugstr_a(func) );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogApiThkLSF, 4, 4 );
#endif
/*********************************************************************** /***********************************************************************
* LogApiThkSL (KERNEL32.44) * LogApiThkSL (KERNEL32.44)
* *
* NOTE: needs to preserve all registers! * NOTE: needs to preserve all registers!
*/ */
void LogApiThkSL( LPSTR func, CONTEXT86 *context ) void WINAPI __regs_LogApiThkSL( LPSTR func, CONTEXT86 *context )
{ {
TRACE( "%s\n", debugstr_a(func) ); TRACE( "%s\n", debugstr_a(func) );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogApiThkSL, 4, 4 );
#endif
/*********************************************************************** /***********************************************************************
* LogCBThkSL (KERNEL32.47) * LogCBThkSL (KERNEL32.47)
* *
* NOTE: needs to preserve all registers! * NOTE: needs to preserve all registers!
*/ */
void LogCBThkSL( LPSTR func, CONTEXT86 *context ) void WINAPI __regs_LogCBThkSL( LPSTR func, CONTEXT86 *context )
{ {
TRACE( "%s\n", debugstr_a(func) ); TRACE( "%s\n", debugstr_a(func) );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogCBThkSL, 4, 4 );
#endif
/*********************************************************************** /***********************************************************************
* Generates a FT_Prolog call. * Generates a FT_Prolog call.
@ -438,7 +448,7 @@ UINT WINAPI ThunkConnect32(
* FIXME: DDJ talks of certain register usage rules; I'm not sure * FIXME: DDJ talks of certain register usage rules; I'm not sure
* whether we cover this 100%. * whether we cover this 100%.
*/ */
void QT_Thunk( CONTEXT86 *context ) void WINAPI __regs_QT_Thunk( CONTEXT86 *context )
{ {
CONTEXT86 context16; CONTEXT86 context16;
DWORD argsize; DWORD argsize;
@ -476,6 +486,9 @@ void QT_Thunk( CONTEXT86 *context )
context->Esp += LOWORD(context16.Esp) - context->Esp += LOWORD(context16.Esp) -
( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize ); ( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( QT_Thunk, 0, 0 );
#endif
/********************************************************************** /**********************************************************************
@ -521,7 +534,7 @@ void QT_Thunk( CONTEXT86 *context )
* ESP is EBP-64 after return. * ESP is EBP-64 after return.
* *
*/ */
void FT_Prolog( CONTEXT86 *context ) void WINAPI __regs_FT_Prolog( CONTEXT86 *context )
{ {
/* Build stack frame */ /* Build stack frame */
stack32_push(context, context->Ebp); stack32_push(context, context->Ebp);
@ -541,6 +554,9 @@ void FT_Prolog( CONTEXT86 *context )
*(DWORD *)(context->Ebp - 48) = context->Eax; *(DWORD *)(context->Ebp - 48) = context->Eax;
*(DWORD *)(context->Ebp - 52) = context->Edx; *(DWORD *)(context->Ebp - 52) = context->Edx;
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_Prolog, 0, 0 );
#endif
/********************************************************************** /**********************************************************************
* FT_Thunk (KERNEL32.@) * FT_Thunk (KERNEL32.@)
@ -562,7 +578,7 @@ void FT_Prolog( CONTEXT86 *context )
* of arguments, so that the single DWORD bitmap is no longer * of arguments, so that the single DWORD bitmap is no longer
* sufficient ... * sufficient ...
*/ */
void FT_Thunk( CONTEXT86 *context ) void WINAPI __regs_FT_Thunk( CONTEXT86 *context )
{ {
DWORD mapESPrelative = *(DWORD *)(context->Ebp - 20); DWORD mapESPrelative = *(DWORD *)(context->Ebp - 20);
DWORD callTarget = *(DWORD *)(context->Ebp - 52); DWORD callTarget = *(DWORD *)(context->Ebp - 52);
@ -607,9 +623,26 @@ void FT_Thunk( CONTEXT86 *context )
/* Copy modified buffers back to 32-bit stack */ /* Copy modified buffers back to 32-bit stack */
memcpy( oldstack, newstack, argsize ); memcpy( oldstack, newstack, argsize );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_Thunk, 0, 0 );
#endif
/********************************************************************** /***********************************************************************
* FT_ExitNN (KERNEL32.218 - 232) * FT_Exit0 (KERNEL32.@)
* FT_Exit4 (KERNEL32.@)
* FT_Exit8 (KERNEL32.@)
* FT_Exit12 (KERNEL32.@)
* FT_Exit16 (KERNEL32.@)
* FT_Exit20 (KERNEL32.@)
* FT_Exit24 (KERNEL32.@)
* FT_Exit28 (KERNEL32.@)
* FT_Exit32 (KERNEL32.@)
* FT_Exit36 (KERNEL32.@)
* FT_Exit40 (KERNEL32.@)
* FT_Exit44 (KERNEL32.@)
* FT_Exit48 (KERNEL32.@)
* FT_Exit52 (KERNEL32.@)
* FT_Exit56 (KERNEL32.@)
* *
* One of the FT_ExitNN functions is called at the end of the thunk code. * One of the FT_ExitNN functions is called at the end of the thunk code.
* It removes the stack frame created by FT_Prolog, moves the function * It removes the stack frame created by FT_Prolog, moves the function
@ -619,7 +652,7 @@ void FT_Thunk( CONTEXT86 *context )
* and perform a return to the CALLER of the thunk code (while removing * and perform a return to the CALLER of the thunk code (while removing
* the given number of arguments from the caller's stack). * the given number of arguments from the caller's stack).
*/ */
static void FT_Exit(CONTEXT86 *context, int nPopArgs) static inline void FT_Exit(CONTEXT86 *context)
{ {
/* Return value is in EBX */ /* Return value is in EBX */
context->Eax = context->Ebx; context->Eax = context->Ebx;
@ -635,84 +668,36 @@ static void FT_Exit(CONTEXT86 *context, int nPopArgs)
/* Pop return address to CALLER of thunk code */ /* Pop return address to CALLER of thunk code */
context->Eip = stack32_pop(context); context->Eip = stack32_pop(context);
/* Remove arguments */
context->Esp += nPopArgs;
} }
/*********************************************************************** #ifdef DEFINE_REGS_ENTRYPOINT
* FT_Exit0 (KERNEL32.@)
*/
void FT_Exit0(CONTEXT86 *context) { FT_Exit(context, 0); }
/*********************************************************************** #define DEFINE_FT_Exit(n) \
* FT_Exit4 (KERNEL32.@) void WINAPI __regs_FT_Exit ## n(CONTEXT86 *context) \
*/ { \
void FT_Exit4(CONTEXT86 *context) { FT_Exit(context, 4); } FT_Exit(context); \
context->Esp += n; \
} \
DEFINE_REGS_ENTRYPOINT( FT_Exit ## n, 0, 0 )
/*********************************************************************** DEFINE_FT_Exit(0);
* FT_Exit8 (KERNEL32.@) DEFINE_FT_Exit(4);
*/ DEFINE_FT_Exit(8);
void FT_Exit8(CONTEXT86 *context) { FT_Exit(context, 8); } DEFINE_FT_Exit(12);
DEFINE_FT_Exit(16);
DEFINE_FT_Exit(20);
DEFINE_FT_Exit(24);
DEFINE_FT_Exit(28);
DEFINE_FT_Exit(32);
DEFINE_FT_Exit(36);
DEFINE_FT_Exit(40);
DEFINE_FT_Exit(44);
DEFINE_FT_Exit(48);
DEFINE_FT_Exit(52);
DEFINE_FT_Exit(56);
/*********************************************************************** #endif /* DEFINE_REGS_ENTRYPOINT */
* FT_Exit12 (KERNEL32.@)
*/
void FT_Exit12(CONTEXT86 *context) { FT_Exit(context, 12); }
/***********************************************************************
* FT_Exit16 (KERNEL32.@)
*/
void FT_Exit16(CONTEXT86 *context) { FT_Exit(context, 16); }
/***********************************************************************
* FT_Exit20 (KERNEL32.@)
*/
void FT_Exit20(CONTEXT86 *context) { FT_Exit(context, 20); }
/***********************************************************************
* FT_Exit24 (KERNEL32.@)
*/
void FT_Exit24(CONTEXT86 *context) { FT_Exit(context, 24); }
/***********************************************************************
* FT_Exit28 (KERNEL32.@)
*/
void FT_Exit28(CONTEXT86 *context) { FT_Exit(context, 28); }
/***********************************************************************
* FT_Exit32 (KERNEL32.@)
*/
void FT_Exit32(CONTEXT86 *context) { FT_Exit(context, 32); }
/***********************************************************************
* FT_Exit36 (KERNEL32.@)
*/
void FT_Exit36(CONTEXT86 *context) { FT_Exit(context, 36); }
/***********************************************************************
* FT_Exit40 (KERNEL32.@)
*/
void FT_Exit40(CONTEXT86 *context) { FT_Exit(context, 40); }
/***********************************************************************
* FT_Exit44 (KERNEL32.@)
*/
void FT_Exit44(CONTEXT86 *context) { FT_Exit(context, 44); }
/***********************************************************************
* FT_Exit48 (KERNEL32.@)
*/
void FT_Exit48(CONTEXT86 *context) { FT_Exit(context, 48); }
/***********************************************************************
* FT_Exit52 (KERNEL32.@)
*/
void FT_Exit52(CONTEXT86 *context) { FT_Exit(context, 52); }
/***********************************************************************
* FT_Exit56 (KERNEL32.@)
*/
void FT_Exit56(CONTEXT86 *context) { FT_Exit(context, 56); }
/*********************************************************************** /***********************************************************************
* ThunkInitLS (KERNEL32.43) * ThunkInitLS (KERNEL32.43)
@ -780,7 +765,7 @@ DWORD WINAPI ThunkInitLS(
* in the BL register by the called 16-bit routine. * in the BL register by the called 16-bit routine.
* *
*/ */
void Common32ThkLS( CONTEXT86 *context ) void WINAPI __regs_Common32ThkLS( CONTEXT86 *context )
{ {
CONTEXT86 context16; CONTEXT86 context16;
DWORD argsize; DWORD argsize;
@ -811,6 +796,9 @@ void Common32ThkLS( CONTEXT86 *context )
/* Clean up caller's stack frame */ /* Clean up caller's stack frame */
context->Esp += LOBYTE(context16.Ebx); context->Esp += LOBYTE(context16.Ebx);
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( Common32ThkLS, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* OT_32ThkLSF (KERNEL32.40) * OT_32ThkLSF (KERNEL32.40)
@ -839,7 +827,7 @@ void Common32ThkLS( CONTEXT86 *context )
* (Note that this function seems only to be used for * (Note that this function seems only to be used for
* OLECLI32 -> OLECLI and OLESVR32 -> OLESVR thunking.) * OLECLI32 -> OLECLI and OLESVR32 -> OLESVR thunking.)
*/ */
void OT_32ThkLSF( CONTEXT86 *context ) void WINAPI __regs_OT_32ThkLSF( CONTEXT86 *context )
{ {
CONTEXT86 context16; CONTEXT86 context16;
DWORD argsize; DWORD argsize;
@ -866,6 +854,9 @@ void OT_32ThkLSF( CONTEXT86 *context )
context->Esp += LOWORD(context16.Esp) - context->Esp += LOWORD(context16.Esp) -
( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize ); ( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize );
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( OT_32ThkLSF, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* ThunkInitLSF (KERNEL32.41) * ThunkInitLSF (KERNEL32.41)
@ -948,7 +939,7 @@ LPVOID WINAPI ThunkInitLSF(
* Note: The two DWORD arguments get popped off the stack. * Note: The two DWORD arguments get popped off the stack.
* *
*/ */
void FT_PrologPrime( CONTEXT86 *context ) void WINAPI __regs_FT_PrologPrime( CONTEXT86 *context )
{ {
DWORD targetTableOffset; DWORD targetTableOffset;
LPBYTE relayCode; LPBYTE relayCode;
@ -965,6 +956,9 @@ void FT_PrologPrime( CONTEXT86 *context )
/* Jump to the call stub just created */ /* Jump to the call stub just created */
context->Eip = (DWORD)relayCode; context->Eip = (DWORD)relayCode;
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_PrologPrime, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* QT_ThunkPrime (KERNEL32.90) * QT_ThunkPrime (KERNEL32.90)
@ -977,7 +971,7 @@ void FT_PrologPrime( CONTEXT86 *context )
* EAX start of relay code * EAX start of relay code
* *
*/ */
void QT_ThunkPrime( CONTEXT86 *context ) void WINAPI __regs_QT_ThunkPrime( CONTEXT86 *context )
{ {
DWORD targetTableOffset; DWORD targetTableOffset;
LPBYTE relayCode; LPBYTE relayCode;
@ -994,6 +988,9 @@ void QT_ThunkPrime( CONTEXT86 *context )
/* Jump to the call stub just created */ /* Jump to the call stub just created */
context->Eip = (DWORD)relayCode; context->Eip = (DWORD)relayCode;
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( QT_ThunkPrime, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* ThunkInitSL (KERNEL32.46) * ThunkInitSL (KERNEL32.46)
@ -1118,7 +1115,7 @@ DWORD WINAPIV SSCall(
/********************************************************************** /**********************************************************************
* W32S_BackTo32 (KERNEL32.51) * W32S_BackTo32 (KERNEL32.51)
*/ */
void W32S_BackTo32( CONTEXT86 *context ) void WINAPI __regs_W32S_BackTo32( CONTEXT86 *context )
{ {
LPDWORD stack = (LPDWORD)context->Esp; LPDWORD stack = (LPDWORD)context->Esp;
FARPROC proc = (FARPROC)context->Eip; FARPROC proc = (FARPROC)context->Eip;
@ -1128,6 +1125,9 @@ void W32S_BackTo32( CONTEXT86 *context )
context->Eip = stack32_pop(context); context->Eip = stack32_pop(context);
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( W32S_BackTo32, 0, 0 );
#endif
/********************************************************************** /**********************************************************************
* AllocSLCallback (KERNEL32.@) * AllocSLCallback (KERNEL32.@)
@ -1241,7 +1241,7 @@ BOOL16 WINAPI IsPeFormat16(
/*********************************************************************** /***********************************************************************
* K32Thk1632Prolog (KERNEL32.@) * K32Thk1632Prolog (KERNEL32.@)
*/ */
void K32Thk1632Prolog( CONTEXT86 *context ) void WINAPI __regs_K32Thk1632Prolog( CONTEXT86 *context )
{ {
LPBYTE code = (LPBYTE)context->Eip - 5; LPBYTE code = (LPBYTE)context->Eip - 5;
@ -1298,11 +1298,14 @@ void K32Thk1632Prolog( CONTEXT86 *context )
been called. Thus we re-use it to hold the Win16Lock count */ been called. Thus we re-use it to hold the Win16Lock count */
ReleaseThunkLock(&CURRENT_STACK16->entry_point); ReleaseThunkLock(&CURRENT_STACK16->entry_point);
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( K32Thk1632Prolog, 0, 0 );
#endif
/*********************************************************************** /***********************************************************************
* K32Thk1632Epilog (KERNEL32.@) * K32Thk1632Epilog (KERNEL32.@)
*/ */
void K32Thk1632Epilog( CONTEXT86 *context ) void WINAPI __regs_K32Thk1632Epilog( CONTEXT86 *context )
{ {
LPBYTE code = (LPBYTE)context->Eip - 13; LPBYTE code = (LPBYTE)context->Eip - 13;
@ -1332,6 +1335,9 @@ void K32Thk1632Epilog( CONTEXT86 *context )
context->Ebp, context->Esp, NtCurrentTeb()->cur_stack); context->Ebp, context->Esp, NtCurrentTeb()->cur_stack);
} }
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( K32Thk1632Epilog, 0, 0 );
#endif
/********************************************************************* /*********************************************************************
* PK16FNF [KERNEL32.91] * PK16FNF [KERNEL32.91]
@ -2101,7 +2107,7 @@ LPVOID WINAPI GetPK16SysVar(void)
/********************************************************************** /**********************************************************************
* CommonUnimpStub (KERNEL32.17) * CommonUnimpStub (KERNEL32.17)
*/ */
void CommonUnimpStub( CONTEXT86 *context ) void WINAPI __regs_CommonUnimpStub( CONTEXT86 *context )
{ {
FIXME("generic stub: %s\n", ((LPSTR)context->Eax ? (LPSTR)context->Eax : "?")); FIXME("generic stub: %s\n", ((LPSTR)context->Eax ? (LPSTR)context->Eax : "?"));
@ -2116,6 +2122,9 @@ void CommonUnimpStub( CONTEXT86 *context )
context->Esp += (context->Ecx & 0x0f) * 4; context->Esp += (context->Ecx & 0x0f) * 4;
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( CommonUnimpStub, 0, 0 );
#endif
/********************************************************************** /**********************************************************************
* HouseCleanLogicallyDeadHandles (KERNEL32.33) * HouseCleanLogicallyDeadHandles (KERNEL32.33)

View File

@ -278,7 +278,7 @@ done:
* VxDCall7 (KERNEL32.8) * VxDCall7 (KERNEL32.8)
* VxDCall8 (KERNEL32.9) * VxDCall8 (KERNEL32.9)
*/ */
void VxDCall( DWORD service, CONTEXT86 *context ) void WINAPI __regs_VxDCall( DWORD service, CONTEXT86 *context )
{ {
int i; int i;
VxDCallProc proc = NULL; VxDCallProc proc = NULL;
@ -304,6 +304,9 @@ void VxDCall( DWORD service, CONTEXT86 *context )
context->Eax = 0xffffffff; /* FIXME */ context->Eax = 0xffffffff; /* FIXME */
} }
} }
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( VxDCall, 4, 4 );
#endif
/*********************************************************************** /***********************************************************************