about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/la64/la64_lock.S14
-rw-r--r--src/dynarec/native_lock.h2
2 files changed, 9 insertions, 7 deletions
diff --git a/src/dynarec/la64/la64_lock.S b/src/dynarec/la64/la64_lock.S
index 74c877d4..293036ee 100644
--- a/src/dynarec/la64/la64_lock.S
+++ b/src/dynarec/la64/la64_lock.S
@@ -161,26 +161,28 @@ la64_lock_cas_d:
     ll.w $a3, $a0, 0
     bne  $a3, $a1, 16
     sc.w $a2, $a0, 0
-    xori $a0, $a2, 1
+    li.d $a0, 0
     ret
     li.d $a0, 1
     ret
 
 la64_lock_cas_dd:
     ll.d $a3, $a0, 0
-    bne  $a3, $a1, 16
+    bne  $a3, $a1, 1f
     sc.d $a2, $a0, 0
-    xori $a0, $a2, 1
+    li.d $a0, 0
+1:
     ret
     li.d $a0, 1
     ret
 
 la64_lock_cas_dq:
     ll.d $a4, $a0, 0
-    bne  $a4, $a2, 20
+    bne  $a4, $a2, 1f
     sc.d $a1, $a0, 0
-    st.d $a3, $a0, 0
-    xori $a0, $a1, 1
+    st.d $a3, $a0, 8
+    li.d $a0, 0
     ret
+1:
     li.d $a0, 1
     ret
diff --git a/src/dynarec/native_lock.h b/src/dynarec/native_lock.h
index 1ab1da3d..b34700fe 100644
--- a/src/dynarec/native_lock.h
+++ b/src/dynarec/native_lock.h
@@ -119,4 +119,4 @@
 #error Unsupported architecture

 #endif

 

-#endif //#define __NATIVE_LOCK__H__
\ No newline at end of file
+#endif //#define __NATIVE_LOCK__H__