Alexander Morozov : ntoskrnl.exe: Change calling conventions for Interlocked* functions.
Alexandre Julliard
julliard at winehq.org
Mon Apr 28 08:00:54 CDT 2008
Module: wine
Branch: master
Commit: 7f3b1daaf2d21a553aadc37a04968defcaaed916
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f3b1daaf2d21a553aadc37a04968defcaaed916
Author: Alexander Morozov <amorozov at etersoft.ru>
Date: Fri Apr 25 18:22:24 2008 +0400
ntoskrnl.exe: Change calling conventions for Interlocked* functions.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 70 +++++++++++++++++++++++++++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 10 ++--
2 files changed, 75 insertions(+), 5 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index cf1603a..cda3476 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -427,6 +427,76 @@ void WINAPI IofCompleteRequest( IRP *irp, UCHAR priority_boost )
/***********************************************************************
+ * InterlockedCompareExchange (NTOSKRNL.EXE.@)
+ */
+#ifdef DEFINE_FASTCALL2_ENTRYPOINT
+DEFINE_FASTCALL2_ENTRYPOINT( NTOSKRNL_InterlockedCompareExchange )
+LONG WINAPI __regs_NTOSKRNL_InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
+#else
+LONG WINAPI NTOSKRNL_InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
+#endif
+{
+ return InterlockedCompareExchange( dest, xchg, compare );
+}
+
+
+/***********************************************************************
+ * InterlockedDecrement (NTOSKRNL.EXE.@)
+ */
+#ifdef DEFINE_FASTCALL1_ENTRYPOINT
+DEFINE_FASTCALL1_ENTRYPOINT( NTOSKRNL_InterlockedDecrement )
+LONG WINAPI __regs_NTOSKRNL_InterlockedDecrement( LONG volatile *dest )
+#else
+LONG WINAPI NTOSKRNL_InterlockedDecrement( LONG volatile *dest )
+#endif
+{
+ return InterlockedDecrement( dest );
+}
+
+
+/***********************************************************************
+ * InterlockedExchange (NTOSKRNL.EXE.@)
+ */
+#ifdef DEFINE_FASTCALL2_ENTRYPOINT
+DEFINE_FASTCALL2_ENTRYPOINT( NTOSKRNL_InterlockedExchange )
+LONG WINAPI __regs_NTOSKRNL_InterlockedExchange( LONG volatile *dest, LONG val )
+#else
+LONG WINAPI NTOSKRNL_InterlockedExchange( LONG volatile *dest, LONG val )
+#endif
+{
+ return InterlockedExchange( dest, val );
+}
+
+
+/***********************************************************************
+ * InterlockedExchangeAdd (NTOSKRNL.EXE.@)
+ */
+#ifdef DEFINE_FASTCALL2_ENTRYPOINT
+DEFINE_FASTCALL2_ENTRYPOINT( NTOSKRNL_InterlockedExchangeAdd )
+LONG WINAPI __regs_NTOSKRNL_InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
+#else
+LONG WINAPI NTOSKRNL_InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
+#endif
+{
+ return InterlockedExchangeAdd( dest, incr );
+}
+
+
+/***********************************************************************
+ * InterlockedIncrement (NTOSKRNL.EXE.@)
+ */
+#ifdef DEFINE_FASTCALL1_ENTRYPOINT
+DEFINE_FASTCALL1_ENTRYPOINT( NTOSKRNL_InterlockedIncrement )
+LONG WINAPI __regs_NTOSKRNL_InterlockedIncrement( LONG volatile *dest )
+#else
+LONG WINAPI NTOSKRNL_InterlockedIncrement( LONG volatile *dest )
+#endif
+{
+ return InterlockedIncrement( dest );
+}
+
+
+/***********************************************************************
* ExAllocatePool (NTOSKRNL.EXE.@)
*/
PVOID WINAPI ExAllocatePool( POOL_TYPE type, SIZE_T size )
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 3aef928..0e7b8e8 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -28,11 +28,11 @@
@ stub Exfi386InterlockedExchangeUlong
@ stub Exfi386InterlockedIncrementLong
@ stub HalExamineMBR
-@ stdcall InterlockedCompareExchange(ptr long long) kernel32.InterlockedCompareExchange
-@ stdcall InterlockedDecrement(ptr) kernel32.InterlockedDecrement
-@ stdcall InterlockedExchange(ptr long) kernel32.InterlockedExchange
-@ stdcall InterlockedExchangeAdd(ptr long ) kernel32.InterlockedExchangeAdd
-@ stdcall InterlockedIncrement(ptr) kernel32.InterlockedIncrement
+@ stdcall -norelay InterlockedCompareExchange(ptr long long) NTOSKRNL_InterlockedCompareExchange
+@ stdcall -norelay InterlockedDecrement(ptr) NTOSKRNL_InterlockedDecrement
+@ stdcall -norelay InterlockedExchange(ptr long) NTOSKRNL_InterlockedExchange
+@ stdcall -norelay InterlockedExchangeAdd(ptr long) NTOSKRNL_InterlockedExchangeAdd
+@ stdcall -norelay InterlockedIncrement(ptr) NTOSKRNL_InterlockedIncrement
@ stdcall InterlockedPopEntrySList(ptr) kernel32.InterlockedPopEntrySList
@ stdcall InterlockedPushEntrySList(ptr ptr) kernel32.InterlockedPushEntrySList
@ stub IoAssignDriveLetters
More information about the wine-cvs
mailing list