kernel32: #ifdef out some code that is not needed on non-i386.
authorAlexandre Julliard <julliard@winehq.org>
Tue, 6 Jan 2009 19:29:28 +0000 (20:29 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 7 Jan 2009 10:10:16 +0000 (11:10 +0100)
dlls/kernel32/instr.c
dlls/kernel32/kernel32.spec
dlls/kernel32/relay16.c
dlls/kernel32/thunk.c
dlls/kernel32/utthunk.c
dlls/ntoskrnl.exe/ntoskrnl.c

index 73edf7b756d34acc682bb0c8e1a1891866ca874d..7fdc4cd6cab82f30a653076f7b6b2cd0f38584b3 100644 (file)
@@ -23,6 +23,8 @@
 #include "config.h"
 #include "wine/port.h"
 
+#ifdef __i386__
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -928,3 +930,5 @@ FARPROC16 WINAPI GetSetKernelDOSProc16( FARPROC16 DosProc )
     FIXME("(DosProc=%p): stub\n", DosProc);
     return NULL;
 }
+
+#endif  /* __i386__ */
index 32e352361c5f4bdc972781b0d15aef9ddb1ae810..d02f6e3b753428e8c8aa2284cc29adda426c8412 100644 (file)
  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)
index e34eb367679a7241906d8f50f10e9e970b81138b..a2a550cc23fb6291b16155da5cd7f0227d17c28b 100644 (file)
@@ -20,6 +20,8 @@
 #include "config.h"
 #include "wine/port.h"
 
+#ifdef __i386__
+
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
@@ -38,8 +40,6 @@
 
 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;
@@ -569,25 +569,4 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT86 *con
     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__ */
index 6e9b59d06d0b1a7fdc31839ff96a6f606ecabd6a..1f946979349ef21d34795f8c82b17f7c9d1944de 100644 (file)
@@ -31,6 +31,8 @@
 # include <unistd.h>
 #endif
 
+#ifdef __i386__
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -147,11 +149,7 @@ struct SLApiDB
 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 )
@@ -191,9 +189,7 @@ void WINAPI __regs_LogApiThkLSF( LPSTR func, CONTEXT86 *context )
 {
     TRACE( "%s\n", debugstr_a(func) );
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( LogApiThkLSF, 1 )
-#endif
 
 /***********************************************************************
  *           LogApiThkSL    (KERNEL32.44)
@@ -204,9 +200,7 @@ void WINAPI __regs_LogApiThkSL( LPSTR func, CONTEXT86 *context )
 {
     TRACE( "%s\n", debugstr_a(func) );
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( LogApiThkSL, 1 )
-#endif
 
 /***********************************************************************
  *           LogCBThkSL    (KERNEL32.47)
@@ -217,9 +211,7 @@ void WINAPI __regs_LogCBThkSL( LPSTR func, CONTEXT86 *context )
 {
     TRACE( "%s\n", debugstr_a(func) );
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( LogCBThkSL, 1 )
-#endif
 
 /***********************************************************************
  * Generates a FT_Prolog call.
@@ -486,9 +478,7 @@ void WINAPI __regs_QT_Thunk( CONTEXT86 *context )
     context->Esp +=   LOWORD(context16.Esp) -
                         ( OFFSETOF(NtCurrentTeb()->WOW32Reserved) - argsize );
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( QT_Thunk, 0 )
-#endif
 
 
 /**********************************************************************
@@ -554,9 +544,7 @@ void WINAPI __regs_FT_Prolog( CONTEXT86 *context )
     *(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.@)
@@ -622,11 +610,7 @@ void WINAPI __regs_FT_Thunk( CONTEXT86 *context )
     /* 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.@)
@@ -679,8 +663,6 @@ DEFINE_FT_Exit(48)
 DEFINE_FT_Exit(52)
 DEFINE_FT_Exit(56)
 
-#endif /* __i386__ */
-
 
 /***********************************************************************
  *             ThunkInitLS     (KERNEL32.43)
@@ -778,9 +760,7 @@ void WINAPI __regs_Common32ThkLS( CONTEXT86 *context )
     /* 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)
@@ -835,9 +815,7 @@ void WINAPI __regs_OT_32ThkLSF( CONTEXT86 *context )
     context->Esp +=   LOWORD(context16.Esp) -
                         ( OFFSETOF(NtCurrentTeb()->WOW32Reserved) - argsize );
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( OT_32ThkLSF, 0 )
-#endif
 
 /***********************************************************************
  *             ThunkInitLSF            (KERNEL32.41)
@@ -937,9 +915,7 @@ void WINAPI __regs_FT_PrologPrime( CONTEXT86 *context )
     /* 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)
@@ -969,9 +945,7 @@ void WINAPI __regs_QT_ThunkPrime( CONTEXT86 *context )
     /* 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)
@@ -1112,9 +1086,7 @@ void WINAPI __regs_W32S_BackTo32( CONTEXT86 *context )
 
     context->Eip = stack32_pop(context);
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( W32S_BackTo32, 0 )
-#endif
 
 /**********************************************************************
  *                     AllocSLCallback         (KERNEL32.@)
@@ -1229,9 +1201,7 @@ void WINAPI __regs_AllocMappedBuffer(
         context->Edi = (DWORD)(buffer + 2);
     }
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( AllocMappedBuffer, 0 )
-#endif
 
 /**********************************************************************
  *             FreeMappedBuffer        (KERNEL32.39)
@@ -1254,9 +1224,7 @@ void WINAPI __regs_FreeMappedBuffer(
         GlobalFree((HGLOBAL)buffer[0]);
     }
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( FreeMappedBuffer, 0 )
-#endif
 
 /**********************************************************************
  *             GetTEBSelectorFS        (KERNEL.475)
@@ -1362,9 +1330,7 @@ void WINAPI __regs_K32Thk1632Prolog( CONTEXT86 *context )
        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.@)
@@ -1399,9 +1365,7 @@ void WINAPI __regs_K32Thk1632Epilog( CONTEXT86 *context )
             context->Ebp, context->Esp, NtCurrentTeb()->WOW32Reserved);
    }
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( K32Thk1632Epilog, 0 )
-#endif
 
 /*********************************************************************
  *                   PK16FNF [KERNEL32.91]
@@ -2211,9 +2175,7 @@ void WINAPI __regs_CommonUnimpStub( CONTEXT86 *context )
 
     context->Esp += (context->Ecx & 0x0f) * 4;
 }
-#ifdef DEFINE_REGS_ENTRYPOINT
 DEFINE_REGS_ENTRYPOINT( CommonUnimpStub, 0 )
-#endif
 
 /**********************************************************************
  *           HouseCleanLogicallyDeadHandles    (KERNEL32.33)
@@ -2556,3 +2518,5 @@ DWORD WINAPIV WOW16Call(WORD x, WORD y, WORD z, VA_LIST16 args)
         DPRINTF(") calling address was 0x%08x\n",calladdr);
         return 0;
 }
+
+#endif /* __i386__ */
index a1889fa3502e6010124b2ef8f538056eb9caaa17..d3333a2225c08e5ed47fb735e557cd6a0867b9e7 100644 (file)
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#ifdef __i386__
+
 #include <stdarg.h>
 
 #include "wine/winbase16.h"
@@ -323,3 +325,5 @@ WORD WINAPI UTInit16( DWORD x1, DWORD x2, DWORD x3, DWORD x4 )
     FIXME("(%08x, %08x, %08x, %08x): stub\n", x1, x2, x3, x4 );
     return 0;
 }
+
+#endif /* __i386__ */
index f6d7d1e7011f96b4f28249ff0823dec11a157ac9..d27014f7d79d84d96410f148980c7c416033386e 100644 (file)
@@ -117,16 +117,20 @@ static HANDLE get_device_manager(void)
 /* 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;
 }