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