diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-02 22:24:26 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-02 22:24:26 +0200 |
| commit | efd182971a1f5b1de20912c6b61c84aac598dd2d (patch) | |
| tree | 0eaab0f09bee2e78fac077006302d9cf9a216bf9 /src | |
| parent | 40c5125a92471bf5a604893e7556257a5d7c88ec (diff) | |
| download | box64-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.S | 14 | ||||
| -rw-r--r-- | src/dynarec/native_lock.h | 2 |
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__ |