Module Name:    src
Committed By:   ryo
Date:           Fri Feb  8 06:56:56 UTC 2019

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

Log Message:
- atomic_*_{8,16}_nv() must return a new value, not an old value.
- use "dmb sy" for atomic_*{8,16}_nv() in the same way as atomic_*{32,64}_nv().


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
    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.2 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2	Wed Feb  6 05:33:14 2019
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Fri Feb  8 06:56:56 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.3 2019/02/08 06:56:56 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -49,10 +49,10 @@ 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, w0, w1		/* calc new (return) value */	;\
-	stxrb	w3, w2, [x4]		/* try to store */		;\
+	INSN	w0, w0, w1		/* calc new (return) value */	;\
+	stxrb	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st							;\
+	dmb	sy							;\
 	ret				/* return new value */		;\
 END(_atomic_##OP##_8_nv)
 
@@ -71,10 +71,10 @@ 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, w0, w1		/* calc new (return) value */	;\
-	stxrh	w3, w2, [x4]		/* try to store */		;\
+	INSN	w0, w0, w1		/* calc new (return) value */	;\
+	stxrh	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st							;\
+	dmb	sy							;\
 	ret				/* return new value */		;\
 END(_atomic_##OP##_16_nv)
 

Reply via email to