about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-05-02 22:24:26 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-05-02 22:24:26 +0200
commitefd182971a1f5b1de20912c6b61c84aac598dd2d (patch)
tree0eaab0f09bee2e78fac077006302d9cf9a216bf9 /src
parent40c5125a92471bf5a604893e7556257a5d7c88ec (diff)
downloadbox64-efd182971a1f5b1de20912c6b61c84aac598dd2d.tar.gz
box64-efd182971a1f5b1de20912c6b61c84aac598dd2d.zip
[LA64_DYNAREC] Fixed some lock assembly helper
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__