summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/libc/arm64/atom.s10
-rw-r--r--sys/src/libc/arm64/tas.s1
2 files changed, 7 insertions, 4 deletions
diff --git a/sys/src/libc/arm64/atom.s b/sys/src/libc/arm64/atom.s
index f1fbc522a..004ebf7d6 100644
--- a/sys/src/libc/arm64/atom.s
+++ b/sys/src/libc/arm64/atom.s
@@ -3,6 +3,12 @@
* int cas(uint *p, int ov, int nv);
* int casl(ulong *p, ulong ov, ulong nv);
*/
+TEXT cas0(SB), 1, $-4
+_cas0:
+ CLREX
+ MOVW $0, R0
+ RETURN
+
TEXT cas32(SB), 1, $-4
TEXT cas(SB), 1, $-4
TEXT casl(SB), 1, $-4
@@ -16,10 +22,6 @@ _cas1:
CBNZ R4, _cas1
MOVW $1, R0
B _barrier(SB)
-_cas0:
- CLREX
- MOVW $0, R0
- RETURN
TEXT casp(SB), 1, $-4
MOV ov+8(FP), R1
diff --git a/sys/src/libc/arm64/tas.s b/sys/src/libc/arm64/tas.s
index 090037c81..c083b1604 100644
--- a/sys/src/libc/arm64/tas.s
+++ b/sys/src/libc/arm64/tas.s
@@ -5,6 +5,7 @@ _tas1:
STXRW R2, (R0), R3
CBNZ R3, _tas1
MOVW R1, R0
+ B _barrier(SB)
TEXT _barrier(SB), 1, $-4
DMB $0xB // ISH