Module: wine Branch: master Commit: cf66a1f0eed0d71ad45a365c5c51a8a35df2c591 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf66a1f0eed0d71ad45a365c5c...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jan 16 12:34:51 2013 +0100
libport: Implemented the interlocked_cmpxchg128 function for ARM64.
---
libs/port/interlocked.c | 44 ++++++++++++++++++++++---------------------- 1 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/libs/port/interlocked.c b/libs/port/interlocked.c index 143d226..135bfc1 100644 --- a/libs/port/interlocked.c +++ b/libs/port/interlocked.c @@ -313,28 +313,6 @@ __int64 interlocked_cmpxchg64( __int64 *dest, __int64 xchg, __int64 compare ) return compare; }
-#ifdef __aarch64__ -int interlocked_cmpxchg128( __int64 *dest, __int64 xchg_high, __int64 xchg_low, __int64 *compare ) -{ - int retv; - pthread_mutex_lock( &interlocked_mutex ); - if (dest[0] == compare[0] && dest[1] == compare[1]) - { - dest[0] = xchg_low; - dest[1] = xchg_high; - retv = 1; - } - else - { - compare[0] = dest[0]; - compare[1] = dest[1]; - retv = 0; - } - pthread_mutex_unlock( &interlocked_mutex ); - return retv; -} -#endif - int interlocked_xchg( int *dest, int val ) { int retv; @@ -365,4 +343,26 @@ int interlocked_xchg_add( int *dest, int incr ) return retv; }
+#ifdef _WIN64 +int interlocked_cmpxchg128( __int64 *dest, __int64 xchg_high, __int64 xchg_low, __int64 *compare ) +{ + int retv; + pthread_mutex_lock( &interlocked_mutex ); + if (dest[0] == compare[0] && dest[1] == compare[1]) + { + dest[0] = xchg_low; + dest[1] = xchg_high; + retv = 1; + } + else + { + compare[0] = dest[0]; + compare[1] = dest[1]; + retv = 0; + } + pthread_mutex_unlock( &interlocked_mutex ); + return retv; +} +#endif + #endif