Module Name:    src
Committed By:   ryo
Date:           Wed Feb  6 05:33:14 UTC 2019

Modified Files:
        src/common/lib/libc/arch/aarch64/atomic: atomic_op_asm.h

Log Message:
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?


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
    src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Wed Feb  6 05:33:14 2019
@@ -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							;\

Reply via email to