Merged revisions 7797-7917 via svnmerge from
[cacao.git] / src / vm / jit / sparc64 / machine-instr.h
index c989a2a5724768140c2cb74f5716f5587ae96f15..b69caa2cdf1e372beccef0803157f755c90ef3fc 100644 (file)
@@ -1,5 +1,8 @@
 #ifndef _MACHINE_INSTR_H
 #define _MACHINE_INSTR_H
+
+#include "toolbox/logging.h"
+
 /*
 static inline void
 __attribute__ ((unused))
@@ -23,6 +26,7 @@ __attribute__ ((unused))
 compare_and_swap (volatile long *p, long oldval, long newval)
 {
   long ret;
+  /*dolog("compare_and_swap(%p [%d], %d, %d)", p, *p, oldval, newval);*/
 
   __asm__ __volatile__ (
     "mov %3,%0\n\t"
@@ -30,6 +34,7 @@ compare_and_swap (volatile long *p, long oldval, long newval)
     : "=&r"(ret), "=m"(*p) 
     : "r"(oldval), "r"(newval), "m"(*p));
 
+  /*dolog("compare_and_swap() return=%d mem=%d", ret, *p);*/
   return ret;
 }
 
@@ -37,6 +42,6 @@ compare_and_swap (volatile long *p, long oldval, long newval)
 #define MEMORY_BARRIER_BEFORE_ATOMIC() __asm__ __volatile__ ("mb" : : : "memory");
 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("mb" : : : "memory");
 #define MEMORY_BARRIER() __asm__ __volatile__ ( \
-               "mb" : : : "memory" );
+               "membar 0x0F" : : : "memory" );
 
 #endif