[Vm-dev] [commit][3683] And get the inline asm version of sqCompareAndSwap to compile under gcc 3. x

commits at squeakvm.org commits at squeakvm.org
Sat Apr 23 04:24:29 UTC 2016


Revision: 3683
Author:   eliot
Date:     2016-04-22 21:24:29 -0700 (Fri, 22 Apr 2016)
Log Message:
-----------
And get the inline asm version of sqCompareAndSwap to compile under gcc 3.x

Modified Paths:
--------------
    branches/Cog/platforms/Cross/vm/sqAtomicOps.h

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/platforms/Cross/vm/sqAtomicOps.h
===================================================================
--- branches/Cog/platforms/Cross/vm/sqAtomicOps.h	2016-04-23 03:23:49 UTC (rev 3682)
+++ branches/Cog/platforms/Cross/vm/sqAtomicOps.h	2016-04-23 04:24:29 UTC (rev 3683)
@@ -244,12 +244,13 @@
 			sete %%al;movzbl %%al,%%eax
 	 * can be used to set al based on the condition code & extend it to 32-bits.
 	 */
-#	define sqCompareAndSwap(var,old,new) \
-	(assert(sizeof(var) == 4), \
-	 asm volatile ("movl %1, %%eax; lock cmpxchg %2, %0"\
+#	define sqCompareAndSwap(var,old,new) do { \
+	assert(sizeof(var) == 4); \
+	asm volatile ("movl %1, %%eax; lock cmpxchg %2, %0"\
 						: "=m"(var) \
 						: "g"(old), "r"(new), "m"(var) \
-						: "memory", "%eax"))
+						: "memory", "%eax"); \
+	} while (0)
 # endif
 
 #else


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Fri Apr 22 20:22:44 PDT 2016
   + Fri Apr 22 21:23:28 PDT 2016



More information about the Vm-dev mailing list