From 0d83083f943f949cd92e8bc4de1ed5a793df9b83 Mon Sep 17 00:00:00 2001 From: rpj Date: Tue, 29 Jun 2004 07:28:39 +0000 Subject: Borland toolchain compatibilty --- ptw32_InterlockedCompareExchange.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'ptw32_InterlockedCompareExchange.c') diff --git a/ptw32_InterlockedCompareExchange.c b/ptw32_InterlockedCompareExchange.c index 0980710..299fc36 100644 --- a/ptw32_InterlockedCompareExchange.c +++ b/ptw32_InterlockedCompareExchange.c @@ -85,15 +85,32 @@ ptw32_InterlockedCompareExchange (PTW32_INTERLOCKED_LPLONG location, POP ecx } +#elif defined(__BORLANDC__) + + _asm { + PUSH ecx + PUSH edx + MOV ecx,dword ptr [location] + MOV edx,dword ptr [value] + MOV eax,dword ptr [comparand] + LOCK CMPXCHG dword ptr [ecx],edx /* if (EAX == [ECX]) */ + /* [ECX] = EDX */ + /* else */ + /* EAX = [ECX] */ + MOV dword ptr [result], eax + POP edx + POP ecx + } + #elif defined(__GNUC__) __asm__ ( "lock\n\t" - "cmpxchgl %3,(%0)" /* if (EAX == [location]), */ + "cmpxchgl %3,(%0)" /* if (EAX == [location]) */ /* [location] = value */ /* else */ - /* EAX = [location] */ + /* EAX = [location] */ :"=r" (location), "=a" (result) :"0" (location), "q" (value), "a" (comparand) : "memory" ); -- cgit v1.2.3