Commit cf66a1f0 authored by Alexandre Julliard's avatar Alexandre Julliard

libport: Implemented the interlocked_cmpxchg128 function for ARM64.

parent c2ef2edf
......@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment