=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: libport: Implemented the interlocked_cmpxchg128 function for ARM64.
Alexandre Julliard
julliard at winehq.org
Wed Jan 16 13:47:43 CST 2013
Module: wine
Branch: master
Commit: c2ef2edf850a4cf27cae53b1664d1a40e80eb8e3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2ef2edf850a4cf27cae53b1664d1a40e80eb8e3
Author: André Hentschel <nerv at dawncrow.de>
Date: Wed Jan 16 00:42:12 2013 +0100
libport: Implemented the interlocked_cmpxchg128 function for ARM64.
---
libs/port/interlocked.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/libs/port/interlocked.c b/libs/port/interlocked.c
index eb14daa..143d226 100644
--- a/libs/port/interlocked.c
+++ b/libs/port/interlocked.c
@@ -313,6 +313,28 @@ __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;
More information about the wine-cvs
mailing list