summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorryo <ryo@NetBSD.org>2019-02-06 05:33:14 +0000
committerryo <ryo@NetBSD.org>2019-02-06 05:33:14 +0000
commit1b34b1ff3eb7aa34aaed37c4fc1e36c8fbedfd4d (patch)
tree2fcd40528b3b8799551ab4a60e432a439016613e /common
parent44c2fd1f40f691f0a98887aeaa1db66205716e1f (diff)
fix atomic_sub_*(). it was (delta - *ptr), should be (*ptr - delta).
changing shared macro doesn't effect other atomic_ops because (*ptr [+|^] delta) and (delta [+|^] *ptr) have same result. atomic_sub_*() haven't used because non standard API?
Diffstat (limited to 'common')
-rw-r--r--common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h b/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
index 1f092e9b322..940a8f49bcb 100644
--- a/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
+++ b/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
ENTRY_NP(_atomic_##OP##_8) ;\
mov x4, x0 ;\
1: ldxrb w0, [x4] /* load old value */ ;\
- INSN w2, w1, w0 /* calculate new value */ ;\
+ INSN w2, w0, w1 /* calculate new value */ ;\
stxrb w3, w2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\
@@ -49,7 +49,7 @@ END(_atomic_##OP##_8)
ENTRY_NP(_atomic_##OP##_8_nv) ;\
mov x4, x0 /* need r0 for return value */ ;\
1: ldxrb w0, [x4] /* load old value */ ;\
- INSN w2, w1, w0 /* calc new (return) value */ ;\
+ INSN w2, w0, w1 /* calc new (return) value */ ;\
stxrb w3, w2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\
@@ -60,7 +60,7 @@ END(_atomic_##OP##_8_nv)
ENTRY_NP(_atomic_##OP##_16) ;\
mov x4, x0 ;\
1: ldxrh w0, [x4] /* load old value */ ;\
- INSN w2, w1, w0 /* calculate new value */ ;\
+ INSN w2, w0, w1 /* calculate new value */ ;\
stxrh w3, w2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\
@@ -71,7 +71,7 @@ END(_atomic_##OP##_16)
ENTRY_NP(_atomic_##OP##_16_nv) ;\
mov x4, x0 /* need r0 for return value */ ;\
1: ldxrh w0, [x4] /* load old value */ ;\
- INSN w2, w1, w0 /* calc new (return) value */ ;\
+ INSN w2, w0, w1 /* calc new (return) value */ ;\
stxrh w3, w2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\
@@ -82,7 +82,7 @@ END(_atomic_##OP##_16_nv)
ENTRY_NP(_atomic_##OP##_32) ;\
mov x4, x0 ;\
1: ldxr w0, [x4] /* load old value */ ;\
- INSN w2, w1, w0 /* calculate new value */ ;\
+ INSN w2, w0, w1 /* calculate new value */ ;\
stxr w3, w2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\
@@ -104,7 +104,7 @@ END(_atomic_##OP##_32_nv)
ENTRY_NP(_atomic_##OP##_64) ;\
mov x4, x0 ;\
1: ldxr x0, [x4] /* load old value */ ;\
- INSN x2, x1, x0 /* calculate new value */ ;\
+ INSN x2, x0, x1 /* calculate new value */ ;\
stxr w3, x2, [x4] /* try to store */ ;\
cbnz w3, 1b /* succeed? no, try again */ ;\
dmb st ;\