diff options
-rw-r--r-- | src/runtime/internal/atomic/atomic_arm64.s | 8 |
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 |