aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/runtime/internal/atomic/atomic_arm64.s8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/runtime/internal/atomic/atomic_arm64.s b/src/runtime/internal/atomic/atomic_arm64.s
index d95689fe2d..a2eb7568d2 100644
--- a/src/runtime/internal/atomic/atomic_arm64.s
+++ b/src/runtime/internal/atomic/atomic_arm64.s
@@ -61,9 +61,9 @@ TEXT runtime∕internal∕atomic·Store64(SB), NOSPLIT, $0-16
RET
TEXT runtime∕internal∕atomic·Xchg(SB), NOSPLIT, $0-20
-again:
MOVD ptr+0(FP), R0
MOVW new+8(FP), R1
+again:
LDAXRW (R0), R2
STLXRW R1, (R0), R3
CBNZ R3, again
@@ -71,9 +71,9 @@ again:
RET
TEXT runtime∕internal∕atomic·Xchg64(SB), NOSPLIT, $0-24
-again:
MOVD ptr+0(FP), R0
MOVD new+8(FP), R1
+again:
LDAXR (R0), R2
STLXR R1, (R0), R3
CBNZ R3, again
@@ -108,9 +108,9 @@ ok:
// *val += delta;
// return *val;
TEXT runtime∕internal∕atomic·Xadd(SB), NOSPLIT, $0-20
-again:
MOVD ptr+0(FP), R0
MOVW delta+8(FP), R1
+again:
LDAXRW (R0), R2
ADDW R2, R1, R2
STLXRW R2, (R0), R3
@@ -119,9 +119,9 @@ again:
RET
TEXT runtime∕internal∕atomic·Xadd64(SB), NOSPLIT, $0-24
-again:
MOVD ptr+0(FP), R0
MOVD delta+8(FP), R1
+again:
LDAXR (R0), R2
ADD R2, R1, R2
STLXR R2, (R0), R3