* src/vm/jit/x86_64/asmpart.S (asm_compare_and_swap): New function.
authortwisti <none@none>
Wed, 7 Mar 2007 12:37:34 +0000 (12:37 +0000)
committertwisti <none@none>
Wed, 7 Mar 2007 12:37:34 +0000 (12:37 +0000)
(asm_memory_barrier): Likewise.

src/vm/jit/x86_64/asmpart.S

index d48e9a00afcd29632344b1319230053f1d32f4aa..0cac95447e6b37dbf00fa41ef461992f643b73bd 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: asmpart.S 7217 2007-01-16 12:52:48Z twisti $
+   $Id: asmpart.S 7475 2007-03-07 12:37:34Z twisti $
 
 */
 
@@ -69,6 +69,9 @@
        .globl asm_builtin_d2i
        .globl asm_builtin_d2l
 
+       .globl asm_compare_and_swap
+       .globl asm_memory_barrier
+
        .globl asm_criticalsections
        .globl asm_getclassvalues_atomic
 
@@ -777,6 +780,30 @@ asm_builtin_d2l:
        ret
 
 
+/* asm_compare_and_swap ********************************************************
+
+   Does an atomic compare and swap.  Required for the lock
+   implementation.
+
+*******************************************************************************/
+
+asm_compare_and_swap:
+       mov     a1,v0                       /* v0 is %rax                         */
+       lock cmpxchg a2,(a0)
+       ret
+
+
+/* asm_memory_barrier **********************************************************
+
+   A memory barrier for the Java Memory Model.
+
+*******************************************************************************/
+
+asm_memory_barrier:
+       mfence
+       ret
+
+
 asm_getclassvalues_atomic:
 _crit_restart:
 _crit_begin: