Module: wine Branch: master Commit: 7f3b1daaf2d21a553aadc37a04968defcaaed916 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f3b1daaf2d21a553aadc37a04...
Author: Alexander Morozov amorozov@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