#include "config.h"
#include "wine/port.h"
+#ifdef __i386__
+
#include <stdarg.h>
#include "windef.h"
FIXME("(DosProc=%p): stub\n", DosProc);
return NULL;
}
+
+#endif /* __i386__ */
30 stdcall -noname GlobalUnWire16(long)
31 stdcall -noname GlobalFree16(long)
32 stdcall -noname GlobalSize16(long)
- 33 stdcall -noname HouseCleanLogicallyDeadHandles()
- 34 stdcall -noname GetWin16DOSEnv()
+ 33 stdcall -noname -i386 HouseCleanLogicallyDeadHandles()
+ 34 stdcall -noname -i386 GetWin16DOSEnv()
35 stdcall -noname LoadLibrary16(str)
36 stdcall -noname FreeLibrary16(long)
37 stdcall -noname GetProcAddress16(long str) WIN32_GetProcAddress16
38 stdcall -noname -i386 -register AllocMappedBuffer()
39 stdcall -noname -i386 -register FreeMappedBuffer()
40 stdcall -noname -i386 -register OT_32ThkLSF()
- 41 stdcall -noname ThunkInitLSF(long str long str str)
+ 41 stdcall -noname -i386 ThunkInitLSF(long str long str str)
42 stdcall -noname -i386 -register LogApiThkLSF(str)
- 43 stdcall -noname ThunkInitLS(long str long str str)
+ 43 stdcall -noname -i386 ThunkInitLS(long str long str str)
44 stdcall -noname -i386 -register LogApiThkSL(str)
45 stdcall -noname -i386 -register Common32ThkLS()
- 46 stdcall -noname ThunkInitSL(long str long str str)
+ 46 stdcall -noname -i386 ThunkInitSL(long str long str str)
47 stdcall -noname -i386 -register LogCBThkSL(str)
48 stdcall -noname ReleaseThunkLock(ptr)
49 stdcall -noname RestoreThunkLock(long)
51 stdcall -noname -i386 -register W32S_BackTo32()
- 52 stdcall -noname GetThunkBuff()
- 53 stdcall -noname GetThunkStuff(str str)
+ 52 stdcall -noname -i386 GetThunkBuff()
+ 53 stdcall -noname -i386 GetThunkStuff(str str)
54 stdcall -noname K32WOWCallback16(long long)
55 stdcall -noname K32WOWCallback16Ex(ptr long long ptr ptr)
56 stdcall -noname K32WOWGetVDMPointer(long long long)
84 stdcall -noname -ret64 K32RtlConvertLongToLargeInteger(long) ntdll.RtlConvertLongToLargeInteger
85 stdcall -noname -ret64 K32RtlConvertUlongToLargeInteger(long) ntdll.RtlConvertUlongToLargeInteger
86 stdcall @(ptr) _KERNEL32_86
- 87 stdcall -noname SSOnBigStack()
- 88 varargs -noname SSCall(long long ptr)
+ 87 stdcall -noname -i386 SSOnBigStack()
+ 88 varargs -noname -i386 SSCall(long long ptr)
89 stdcall -noname -i386 -register FT_PrologPrime()
90 stdcall -noname -i386 -register QT_ThunkPrime()
- 91 stdcall -noname PK16FNF(ptr)
- 92 stdcall -noname GetPK16SysVar()
+ 91 stdcall -noname -i386 PK16FNF(ptr)
+ 92 stdcall -noname -i386 GetPK16SysVar()
93 stdcall -noname GetpWin16Lock(ptr)
94 stdcall -noname _CheckNotSysLevel(ptr)
95 stdcall -noname _ConfirmSysLevel(ptr)
96 stdcall -noname _ConfirmWin16Lock()
97 stdcall -noname _EnterSysLevel(ptr)
98 stdcall -noname _LeaveSysLevel(ptr)
- 99 stdcall @(long) _KERNEL32_99
-100 stdcall @(long long long) _KERNEL32_100
+ 99 stdcall -i386 @(long) _KERNEL32_99
+100 stdcall -i386 @(long long long) _KERNEL32_100
101 stub @
102 stub @
103 stub @
@ stdcall AddRefActCtx(ptr)
@ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler
@ stdcall AllocConsole()
-@ stub AllocLSCallback
-@ stdcall AllocSLCallback(ptr ptr)
+@ stub -i386 AllocLSCallback
+@ stdcall -i386 AllocSLCallback(ptr ptr)
@ stub AllocateUserPhysicalPages
@ stdcall AreFileApisANSI()
@ stdcall AssignProcessToJobObject(ptr ptr)
@ stdcall FreeLibrary(long)
@ stdcall FreeLibraryAndExitThread(long long)
@ stdcall FreeResource(long)
-@ stdcall FreeSLCallback(long)
+@ stdcall -i386 FreeSLCallback(long)
@ stub FreeUserPhysicalPages
@ stub FreeVirtualBuffer
@ stdcall GenerateConsoleCtrlEvent(long long)
-@ stdcall Get16DLLAddress(long str)
+@ stdcall -i386 Get16DLLAddress(long str)
@ stdcall GetACP()
@ stdcall GetAtomNameA(long ptr long)
@ stdcall GetAtomNameW(long ptr long)
@ stdcall TermsrvAppInstallMode()
@ stdcall Thread32First(long ptr)
@ stdcall Thread32Next(long ptr)
-@ stdcall ThunkConnect32(ptr str str str ptr ptr)
+@ stdcall -i386 ThunkConnect32(ptr str str str ptr ptr)
@ stdcall TlsAlloc()
@ stub TlsAllocInternal
@ stdcall TlsFree(long)
@ stub TrimVirtualBuffer
@ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection
@ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr)
-@ stdcall UTRegister(long str str str ptr ptr ptr)
-@ stdcall UTUnRegister(long)
+@ stdcall -i386 UTRegister(long str str str ptr ptr ptr)
+@ stdcall -i386 UTUnRegister(long)
@ stdcall UnMapLS(long)
@ stdcall -i386 -norelay UnMapSLFixArray(long long)
@ stdcall UnhandledExceptionFilter(ptr)
# or 'wine_' (for user-visible functions) to avoid namespace conflicts.
# 16-bit relays
-@ cdecl __wine_dll_register_16(ptr str)
-@ cdecl __wine_dll_unregister_16(ptr)
-@ varargs -private __wine_call_from_16_regs()
-@ cdecl __wine_emulate_instruction(ptr ptr)
+@ cdecl -i386 __wine_dll_register_16(ptr str)
+@ cdecl -i386 __wine_dll_unregister_16(ptr)
+@ varargs -i386 -private __wine_call_from_16_regs()
+@ cdecl -i386 __wine_emulate_instruction(ptr ptr)
# Unix files
@ cdecl wine_get_unix_file_name(wstr)
#include "config.h"
#include "wine/port.h"
+#ifdef __i386__
+
#include <assert.h>
#include <stdlib.h>
#include <string.h>
WINE_DEFAULT_DEBUG_CHANNEL(relay);
-#ifdef __i386__
-
static const WCHAR **debug_relay_excludelist;
static const WCHAR **debug_relay_includelist;
static const WCHAR **debug_snoop_excludelist;
return ret_val;
}
-#else /* __i386__ */
-
-/*
- * Stubs for the CallTo16/CallFrom16 routines on non-Intel architectures
- * (these will never be called but need to be present to satisfy the linker ...)
- */
-
-/***********************************************************************
- * __wine_call_from_16_regs (KERNEL32.@)
- */
-void __wine_call_from_16_regs(void)
-{
- assert( FALSE );
-}
-
-DWORD WINAPI CALL32_CBClient( FARPROC proc, LPWORD args, DWORD *esi )
-{ assert( FALSE ); }
-
-DWORD WINAPI CALL32_CBClientEx( FARPROC proc, LPWORD args, DWORD *esi, INT *nArgs )
-{ assert( FALSE ); }
-
#endif /* __i386__ */
# include <unistd.h>
#endif
+#ifdef __i386__
+
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
SEGPTR CALL32_CBClient_RetAddr = 0;
SEGPTR CALL32_CBClientEx_RetAddr = 0;
-#ifdef __i386__
extern void __wine_call_from_16_thunk();
-#else
-static void __wine_call_from_16_thunk() { }
-#endif
/* Push a DWORD on the 32-bit stack */
static inline void stack32_push( CONTEXT86 *context, DWORD val )
{
TRACE( "%s\n", debugstr_a(func) );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogApiThkLSF, 1 )
-#endif
/***********************************************************************
* LogApiThkSL (KERNEL32.44)
{
TRACE( "%s\n", debugstr_a(func) );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogApiThkSL, 1 )
-#endif
/***********************************************************************
* LogCBThkSL (KERNEL32.47)
{
TRACE( "%s\n", debugstr_a(func) );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( LogCBThkSL, 1 )
-#endif
/***********************************************************************
* Generates a FT_Prolog call.
context->Esp += LOWORD(context16.Esp) -
( OFFSETOF(NtCurrentTeb()->WOW32Reserved) - argsize );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( QT_Thunk, 0 )
-#endif
/**********************************************************************
*(DWORD *)(context->Ebp - 48) = context->Eax;
*(DWORD *)(context->Ebp - 52) = context->Edx;
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_Prolog, 0 )
-#endif
/**********************************************************************
* FT_Thunk (KERNEL32.@)
/* Copy modified buffers back to 32-bit stack */
memcpy( oldstack, newstack, argsize );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_Thunk, 0 )
-#endif
-
-#ifdef __i386__
/***********************************************************************
* FT_Exit0 (KERNEL32.@)
DEFINE_FT_Exit(52)
DEFINE_FT_Exit(56)
-#endif /* __i386__ */
-
/***********************************************************************
* ThunkInitLS (KERNEL32.43)
/* Clean up caller's stack frame */
context->Esp += LOBYTE(context16.Ebx);
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( Common32ThkLS, 0 )
-#endif
/***********************************************************************
* OT_32ThkLSF (KERNEL32.40)
context->Esp += LOWORD(context16.Esp) -
( OFFSETOF(NtCurrentTeb()->WOW32Reserved) - argsize );
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( OT_32ThkLSF, 0 )
-#endif
/***********************************************************************
* ThunkInitLSF (KERNEL32.41)
/* Jump to the call stub just created */
context->Eip = (DWORD)relayCode;
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FT_PrologPrime, 0 )
-#endif
/***********************************************************************
* QT_ThunkPrime (KERNEL32.90)
/* Jump to the call stub just created */
context->Eip = (DWORD)relayCode;
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( QT_ThunkPrime, 0 )
-#endif
/***********************************************************************
* ThunkInitSL (KERNEL32.46)
context->Eip = stack32_pop(context);
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( W32S_BackTo32, 0 )
-#endif
/**********************************************************************
* AllocSLCallback (KERNEL32.@)
context->Edi = (DWORD)(buffer + 2);
}
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( AllocMappedBuffer, 0 )
-#endif
/**********************************************************************
* FreeMappedBuffer (KERNEL32.39)
GlobalFree((HGLOBAL)buffer[0]);
}
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( FreeMappedBuffer, 0 )
-#endif
/**********************************************************************
* GetTEBSelectorFS (KERNEL.475)
been called. Thus we re-use it to hold the Win16Lock count */
ReleaseThunkLock(&CURRENT_STACK16->entry_point);
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( K32Thk1632Prolog, 0 )
-#endif
/***********************************************************************
* K32Thk1632Epilog (KERNEL32.@)
context->Ebp, context->Esp, NtCurrentTeb()->WOW32Reserved);
}
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( K32Thk1632Epilog, 0 )
-#endif
/*********************************************************************
* PK16FNF [KERNEL32.91]
context->Esp += (context->Ecx & 0x0f) * 4;
}
-#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT( CommonUnimpStub, 0 )
-#endif
/**********************************************************************
* HouseCleanLogicallyDeadHandles (KERNEL32.33)
DPRINTF(") calling address was 0x%08x\n",calladdr);
return 0;
}
+
+#endif /* __i386__ */
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#ifdef __i386__
+
#include <stdarg.h>
#include "wine/winbase16.h"
FIXME("(%08x, %08x, %08x, %08x): stub\n", x1, x2, x3, x4 );
return 0;
}
+
+#endif /* __i386__ */
/* exception handler for emulation of privileged instructions */
static LONG CALLBACK vectored_handler( EXCEPTION_POINTERS *ptrs )
{
- extern DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT86 *context );
-
EXCEPTION_RECORD *record = ptrs->ExceptionRecord;
- CONTEXT86 *context = ptrs->ContextRecord;
+ CONTEXT *context = ptrs->ContextRecord;
if (record->ExceptionCode == EXCEPTION_ACCESS_VIOLATION ||
record->ExceptionCode == EXCEPTION_PRIV_INSTRUCTION)
{
+#ifdef __i386__
+ extern DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context );
+
if (__wine_emulate_instruction( record, context ) == ExceptionContinueExecution)
return EXCEPTION_CONTINUE_EXECUTION;
+#else
+ FIXME( "Privileged instruction emulation not implemented on this CPU\n" );
+#endif
}
return EXCEPTION_CONTINUE_SEARCH;
}