CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-28 Thread Simon Burge
Module Name:src
Committed By:   simonb
Date:   Wed Jul 28 08:01:10 UTC 2021

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

Log Message:
#define consistency.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.9 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.10
--- src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.9	Wed Jul 28 07:32:20 2021
+++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h	Wed Jul 28 08:01:10 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_op_asm.h,v 1.9 2021/07/28 07:32:20 skrll Exp $	*/
+/*	$NetBSD: atomic_op_asm.h,v 1.10 2021/07/28 08:01:10 simonb Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -75,11 +75,11 @@
 #endif
 
 #ifdef _ARM_ARCH_7
-#define DMB	dmb	ish
+#define	DMB	dmb	ish
 #define	DMBST	dmb	ishst
 #else
-#define DMB	mcr	p15, 0, r0, c7, c10, 5	/* Data Memory Barrier */
-#define DMBST	DMB
+#define	DMB	mcr	p15, 0, r0, c7, c10, 5	/* Data Memory Barrier */
+#define	DMBST	DMB
 #endif
 
 #endif /* _ATOMIC_OP_ASM_H_ */



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-28 Thread Simon Burge
Module Name:src
Committed By:   simonb
Date:   Wed Jul 28 08:01:10 UTC 2021

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

Log Message:
#define consistency.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jul 28 07:32:20 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S
atomic_and_64.S atomic_and_8.S atomic_cas_16.S atomic_cas_32.S
atomic_cas_64.S atomic_cas_8.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S atomic_op_asm.h atomic_or_16.S
atomic_or_32.S atomic_or_64.S atomic_or_8.S atomic_sub_64.S
atomic_swap.S atomic_swap_16.S atomic_swap_64.S atomic_xor_16.S
atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S membar_ops.S
sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S
sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S
sync_fetch_and_add_8.S sync_fetch_and_and_8.S
sync_fetch_and_nand_8.S sync_fetch_and_or_8.S
sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S

Log Message:
Remove memory barriers from the atomic_ops(3) atomic operations.  They're
not needed for correctness.

Add the correct memory barriers to the gcc legacy __sync built-in
functions for atomic memory access.  From the gcc documentation:

In most cases, these built-in functions are considered a full barrier.
That is, no memory operand is moved across the operation, either forward
or backward. Further, instructions are issued as necessary to prevent the
processor from speculating loads across the operation and from queuing
stores after the operation.

type __sync_lock_test_and_set (type *ptr, type value, ...)

   This built-in function is not a full barrier, but rather an acquire
   barrier. This means that references after the operation cannot move to
   (or be speculated to) before the operation, but previous memory stores
   may not be globally visible yet, and previous memory loads may not yet
   be satisfied.

void __sync_lock_release (type *ptr, ...)

   This built-in function is not a full barrier, but rather a release
   barrier. This means that all previous memory stores are globally
   visible, and all previous memory loads have been satisfied, but
   following memory reads are not prevented from being speculated to
   before the barrier.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.13 -r1.14 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h \
src/common/lib/libc/arch/arm/atomic/membar_ops.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S
cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S
cvs rdiff -u -r1.5 -r1.6 \

CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jul 28 07:32:20 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S
atomic_and_64.S atomic_and_8.S atomic_cas_16.S atomic_cas_32.S
atomic_cas_64.S atomic_cas_8.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S atomic_op_asm.h atomic_or_16.S
atomic_or_32.S atomic_or_64.S atomic_or_8.S atomic_sub_64.S
atomic_swap.S atomic_swap_16.S atomic_swap_64.S atomic_xor_16.S
atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S membar_ops.S
sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S
sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S
sync_fetch_and_add_8.S sync_fetch_and_and_8.S
sync_fetch_and_nand_8.S sync_fetch_and_or_8.S
sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S

Log Message:
Remove memory barriers from the atomic_ops(3) atomic operations.  They're
not needed for correctness.

Add the correct memory barriers to the gcc legacy __sync built-in
functions for atomic memory access.  From the gcc documentation:

In most cases, these built-in functions are considered a full barrier.
That is, no memory operand is moved across the operation, either forward
or backward. Further, instructions are issued as necessary to prevent the
processor from speculating loads across the operation and from queuing
stores after the operation.

type __sync_lock_test_and_set (type *ptr, type value, ...)

   This built-in function is not a full barrier, but rather an acquire
   barrier. This means that references after the operation cannot move to
   (or be speculated to) before the operation, but previous memory stores
   may not be globally visible yet, and previous memory loads may not yet
   be satisfied.

void __sync_lock_release (type *ptr, ...)

   This built-in function is not a full barrier, but rather a release
   barrier. This means that all previous memory stores are globally
   visible, and all previous memory loads have been satisfied, but
   following memory reads are not prevented from being speculated to
   before the barrier.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.13 -r1.14 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h \
src/common/lib/libc/arch/arm/atomic/membar_ops.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S
cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S
cvs rdiff -u -r1.5 -r1.6 \

CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jul 10 06:53:40 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S
atomic_and_64.S atomic_and_8.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S atomic_or_16.S atomic_or_32.S
atomic_or_64.S atomic_or_8.S atomic_sub_64.S atomic_swap.S
atomic_swap_16.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S
atomic_xor_8.S membar_ops.S

Log Message:
s/ifdef _ARM_ARCH_6/if defined(_ARM_ARCH_6)/ for consistency.  NFCI.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/membar_ops.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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/arm/atomic/atomic_add_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.3	Mon Jun 23 21:53:45 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S	Sat Jul 10 06:53:40 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_16.S,v 1.3 2014/06/23 21:53:45 joerg Exp $	*/
+/*	$NetBSD: atomic_add_16.S,v 1.4 2021/07/10 06:53:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include "atomic_op_asm.h"
 
-#ifdef _ARM_ARCH_6
+#if defined(_ARM_ARCH_6)
 
 ENTRY_NP(_atomic_sub_16)
 	negs	r1, r1
Index: src/common/lib/libc/arch/arm/atomic/atomic_add_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.3	Mon Jun 23 21:53:45 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S	Sat Jul 10 06:53:40 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_8.S,v 1.3 2014/06/23 21:53:45 joerg Exp $	*/
+/*	$NetBSD: atomic_add_8.S,v 1.4 2021/07/10 06:53:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include "atomic_op_asm.h"
 
-#ifdef _ARM_ARCH_6
+#if defined(_ARM_ARCH_6)
 
 ENTRY_NP(_atomic_sub_8)
 	negs	r1, r1
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.3	Mon Jun 23 21:53:45 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S	Sat Jul 10 06:53:40 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_16.S,v 1.3 2014/06/23 21:53:45 joerg Exp $	*/
+/*	$NetBSD: atomic_and_16.S,v 1.4 2021/07/10 06:53:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include "atomic_op_asm.h"
 
-#ifdef _ARM_ARCH_6
+#if defined(_ARM_ARCH_6)
 
 ENTRY_NP(_atomic_and_16)
 	mov	ip, r0
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.4
--- 

CVS commit: src/common/lib/libc/arch/arm/atomic

2021-07-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Jul 10 06:53:40 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S
atomic_and_64.S atomic_and_8.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S atomic_or_16.S atomic_or_32.S
atomic_or_64.S atomic_or_8.S atomic_sub_64.S atomic_swap.S
atomic_swap_16.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S
atomic_xor_8.S membar_ops.S

Log Message:
s/ifdef _ARM_ARCH_6/if defined(_ARM_ARCH_6)/ for consistency.  NFCI.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/membar_ops.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-06-29 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Jun 29 06:28:07 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_8.S

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S

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/arm/atomic/atomic_cas_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.8
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.7	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S	Tue Jun 29 06:28:07 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_8.S,v 1.7 2014/03/04 16:15:28 matt Exp $ */
+/* $NetBSD: atomic_cas_8.S,v 1.8 2021/06/29 06:28:07 skrll Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,7 +55,7 @@ ENTRY_NP(_atomic_cas_8)
 	mcr	p15, 0, r3, c7, c10, 4	/* data synchronization barrier */
 #endif
 2:	RET/* return. */
-	END(_atomic_cas_8)
+END(_atomic_cas_8)
 
 ATOMIC_OP_ALIAS(atomic_cas_8,_atomic_cas_8)
 STRONG_ALIAS(_atomic_cas_char,_atomic_cas_8)



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-06-29 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Jun 29 06:28:07 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_8.S

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-06-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Jun 28 09:00:45 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_nand_64.S atomic_or_64.S atomic_sub_64.S atomic_swap_64.S
atomic_xor_64.S

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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/arm/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.12
--- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.11	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S	Mon Jun 28 09:00:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.11 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.12 2021/06/28 09:00:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_add_64_nv)
-	push	{r3,r4}			/* save temporary */
+	push	{r3, r4}		/* save temporary */
 	mov	ip, r0			/* need r0 for return value */
 #ifndef __ARM_EABI__
 	mov	r3, r2
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_add_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r3,r4}			/* restore temporary */
+	pop	{r3, r4}		/* restore temporary */
 	RET/* return new value */
 END(_atomic_add_64_nv)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.12
--- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.11	Sun Sep 15 14:55:04 2019
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S	Mon Jun 28 09:00:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64.S,v 1.11 2019/09/15 14:55:04 skrll Exp $	*/
+/*	$NetBSD: atomic_or_64.S,v 1.12 2021/06/28 09:00:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_or_64_nv)
-	push	{r3,r4}			/* save temporary */
+	push	{r3, r4}		/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_or_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r3,r4}			/* restore temporary */
+	pop	{r3, r4}		/* restore temporary */
 	RET/* return new value */
 END(_atomic_or_64_nv)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.11
--- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.10	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S	Mon Jun 28 09:00:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64.S,v 1.10 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_and_64.S,v 1.11 2021/06/28 09:00:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_and_64_nv)
-	push	{r3,r4}			/* save temporary */
+	push	{r3, r4}		/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_and_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r3,r4}			/* restore temporary */
+	pop	{r3, r4}		/* restore temporary */
 	RET/* return new value */
 END(_atomic_and_64_nv)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.4	Fri Dec 11 12:41:10 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S	Mon Jun 28 09:00:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_64.S,v 1.4 2015/12/11 12:41:10 skrll Exp $	*/
+/*	$NetBSD: atomic_nand_64.S,v 1.5 2021/06/28 09:00:45 skrll Exp $	*/
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_nand_64_nv)
-	push	{r3,r4}			/* save temporary */
+	push	{r3, r4}		/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -52,7 +52,7 @@ ENTRY_NP(_atomic_nand_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* 

CVS commit: src/common/lib/libc/arch/arm/atomic

2021-06-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Jun 28 09:00:45 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_nand_64.S atomic_or_64.S atomic_sub_64.S atomic_swap_64.S
atomic_xor_64.S

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S
cvs rdiff -u -r1.12 -r1.13 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Apr 27 05:40:29 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: membar_ops.S

Log Message:
Improve the membar_ops barriers - no need to use dsb and wait for
completion.  Also, we only to act on the inner shareability domain.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/membar_ops.S

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/arm/atomic/membar_ops.S
diff -u src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6 src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.7
--- src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6	Fri Mar 28 21:32:41 2014
+++ src/common/lib/libc/arch/arm/atomic/membar_ops.S	Tue Apr 27 05:40:29 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops.S,v 1.6 2014/03/28 21:32:41 skrll Exp $	*/
+/*	$NetBSD: membar_ops.S,v 1.7 2021/04/27 05:40:29 skrll Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -34,10 +34,10 @@
 
 ENTRY_NP(_membar_producer)
 #ifdef _ARM_ARCH_7
-	dsb
+	dmb	ishst
 #else
 	mov	r0, #0
-	mcr	p15, 0, r0, c7, c10, 4	 /* Data Synchronization Barrier */
+	mcr	p15, 0, r0, c7, c10, 5	/* Data Memory Barrier */
 #endif
 	RET
 END(_membar_producer)
@@ -47,7 +47,7 @@ STRONG_ALIAS(_membar_write,_membar_produ
 
 ENTRY_NP(_membar_sync)
 #ifdef _ARM_ARCH_7
-	dmb
+	dmb	ish
 #else
 	mov	r0, #0
 	mcr	p15, 0, r0, c7, c10, 5	/* Data Memory Barrier */



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Apr 27 05:40:29 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: membar_ops.S

Log Message:
Improve the membar_ops barriers - no need to use dsb and wait for
completion.  Also, we only to act on the inner shareability domain.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/membar_ops.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Apr 26 21:40:21 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_16.S
atomic_swap_64.S

Log Message:
Add the appropriate memory barrier before the lock is cleared in
__sync_lock_release_{1,2,4,8}.  That is, all reads and write for in inner
shareability domain before the lock clear store.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.17
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16	Sat Apr 24 20:34:34 2021
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Mon Apr 26 21:40:21 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.16 2021/04/24 20:34:34 skrll Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.17 2021/04/26 21:40:21 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -88,7 +88,7 @@ STRONG_ALIAS(_atomic_swap_ptr,_atomic_sw
 ENTRY_NP(__sync_lock_release_4)
 	mov	r1, #0
 #ifdef _ARM_ARCH_7
-	dmb
+	dmb	ishst
 #else
 	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
 #endif
@@ -129,7 +129,7 @@ STRONG_ALIAS(_atomic_swap_uchar,_atomic_
 ENTRY_NP(__sync_lock_release_1)
 	mov	r1, #0
 #ifdef _ARM_ARCH_7
-	dmb
+	dmb	ishst
 #else
 	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
 #endif

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.4	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S	Mon Apr 26 21:40:21 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_16.S,v 1.4 2015/05/17 20:57:11 justin Exp $ */
+/*	$NetBSD: atomic_swap_16.S,v 1.5 2021/04/26 21:40:21 skrll Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -58,6 +58,11 @@ STRONG_ALIAS(_atomic_swap_ushort,_atomic
 #if (!defined(_KERNEL) || !defined(_RUMPKERNEL)) && !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_2)
 	mov	r1, #0
+#ifdef _ARM_ARCH_7
+	dmb	ishst
+#else
+	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
+#endif
 	strh	r1, [r0]
 	RET
 END(__sync_lock_release_2)

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.12
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.11	Sat Apr 24 20:34:34 2021
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S	Mon Apr 26 21:40:21 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64.S,v 1.11 2021/04/24 20:34:34 skrll Exp $	*/
+/*	$NetBSD: atomic_swap_64.S,v 1.12 2021/04/26 21:40:21 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -57,6 +57,11 @@ CRT_ALIAS(__atomic_exchange_8,_atomic_sw
 ENTRY_NP(__sync_lock_release_8)
 	mov	r2, #0
 	mov	r3, #0
+#ifdef _ARM_ARCH_7
+	dmb	ishst
+#else
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
+#endif
 	strd	r2, r3, [r0]
 	RET
 END(__sync_lock_release_8)



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Apr 26 21:40:21 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_16.S
atomic_swap_64.S

Log Message:
Add the appropriate memory barrier before the lock is cleared in
__sync_lock_release_{1,2,4,8}.  That is, all reads and write for in inner
shareability domain before the lock clear store.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S
cvs rdiff -u -r1.11 -r1.12 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 24 20:34:34 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_64.S

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 24 20:34:34 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_64.S

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15	Sat Apr 24 20:29:04 2021
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Sat Apr 24 20:34:34 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.15 2021/04/24 20:29:04 skrll Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.16 2021/04/24 20:34:34 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -15,7 +15,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *notice, this list of conditions and the following disclaimer in the
  *documentation and/or other materials provided with the distribution.
- *  
+ *
  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.11
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.10	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S	Sat Apr 24 20:34:34 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64.S,v 1.10 2015/05/17 20:57:11 justin Exp $	*/
+/*	$NetBSD: atomic_swap_64.S,v 1.11 2021/04/24 20:34:34 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -14,7 +14,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *notice, this list of conditions and the following disclaimer in the
  *documentation and/or other materials provided with the distribution.
- *  
+ *
  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 24 20:29:04 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
Fix __sync_lock_release_4 to actually zeroise the whole 4bytes/32bits.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Sat Apr 24 20:29:04 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.14 2015/05/17 20:57:11 justin Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.15 2021/04/24 20:29:04 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -92,7 +92,7 @@ ENTRY_NP(__sync_lock_release_4)
 #else
 	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
 #endif
-	strb	r1, [r0]
+	str	r1, [r0]
 	RET
 END(__sync_lock_release_4)
 #endif



CVS commit: src/common/lib/libc/arch/arm/atomic

2021-04-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Apr 24 20:29:04 UTC 2021

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
Fix __sync_lock_release_4 to actually zeroise the whole 4bytes/32bits.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2020-03-09 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Mar  9 11:21:54 UTC 2020

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Give the thumb atomic ops a chance of working


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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/arm/atomic/atomic_cas_up.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.8
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.7	Tue Mar  4 03:36:24 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S	Mon Mar  9 11:21:54 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_up.S,v 1.7 2014/03/04 03:36:24 matt Exp $	*/
+/*	$NetBSD: atomic_cas_up.S,v 1.8 2020/03/09 11:21:54 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -41,6 +41,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas)
 	cmp	r0, r1
 #if defined(__thumb__)
 	beq	1f
+	str	r2, [r3]
 #else
 	streq	r2, [r3]
 #endif
@@ -75,6 +76,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas_16)
 	cmp	r0, r1
 #if defined(__thumb__)
 	beq	1f
+	strh	r2, [r3]
 #else
 	strheq	r2, [r3]
 #endif
@@ -91,6 +93,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas_8)
 	cmp	r0, r1
 #if defined(__thumb__)
 	beq	1f
+	strb	r2, [r3]
 #else
 	strbeq	r2, [r3]
 #endif



CVS commit: src/common/lib/libc/arch/arm/atomic

2020-03-09 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Mar  9 11:21:54 UTC 2020

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Give the thumb atomic ops a chance of working


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2019-09-16 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Sep 16 12:40:40 UTC 2019

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

Log Message:
Traiing whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.7 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.8
--- src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.7	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h	Mon Sep 16 12:40:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_op_asm.h,v 1.7 2015/05/17 20:57:11 justin Exp $	*/
+/*	$NetBSD: atomic_op_asm.h,v 1.8 2019/09/16 12:40:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -22,7 +22,7 @@
  * 4. Neither the name of The NetBSD Foundation nor the names of its
  *contributors may be used to endorse or promote products derived
  *from this software without specific prior written permission.
- *  
+ *
  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR



CVS commit: src/common/lib/libc/arch/arm/atomic

2019-09-16 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Sep 16 12:40:40 UTC 2019

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

Log Message:
Traiing whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2019-09-15 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Sep 15 14:55:04 UTC 2019

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_or_64.S atomic_xor_64.S

Log Message:
__sync_{,x}or_and_fetch_8 should return new value... make it so.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2019-09-15 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Sep 15 14:55:04 UTC 2019

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_or_64.S atomic_xor_64.S

Log Message:
__sync_{,x}or_and_fetch_8 should return new value... make it so.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S

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/arm/atomic/atomic_or_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.11
--- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.10	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S	Sun Sep 15 14:55:04 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64.S,v 1.10 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_or_64.S,v 1.11 2019/09/15 14:55:04 skrll Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -57,6 +57,6 @@ END(_atomic_or_64_nv)
 STRONG_ALIAS(_atomic_or_64,_atomic_or_64_nv)
 ATOMIC_OP_ALIAS(atomic_or_64_nv,_atomic_or_64_nv)
 ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64)
-CRT_ALIAS(__sync_or_and_fetch_8,_atomic_or_64)
+CRT_ALIAS(__sync_or_and_fetch_8,_atomic_or_64_nv)
 
 #endif /* _ARM_ARCH_6 */

Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.3	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S	Sun Sep 15 14:55:04 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_64.S,v 1.3 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_xor_64.S,v 1.4 2019/09/15 14:55:04 skrll Exp $	*/
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -57,6 +57,6 @@ END(_atomic_xor_64_nv)
 STRONG_ALIAS(_atomic_xor_64,_atomic_xor_64_nv)
 ATOMIC_OP_ALIAS(atomic_xor_64_nv,_atomic_xor_64_nv)
 ATOMIC_OP_ALIAS(atomic_xor_64,_atomic_xor_64)
-CRT_ALIAS(__sync_xor_and_fetch_8,_atomic_xor_64)
+CRT_ALIAS(__sync_xor_and_fetch_8,_atomic_xor_64_nv)
 
 #endif /* _ARM_ARCH_6 */



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-12-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Dec 11 12:41:10 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S sync_fetch_and_nand_8.S

Log Message:
Use gcc 4.4 and later operation for nand, i.e.
*ptr = ~(tmp & value) instead of *ptr = ~tmp & value

There was also another bug in sync_fetch_and_nand_8 which I've also fixed.

PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-12-11 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Dec 11 12:41:10 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S sync_fetch_and_nand_8.S

Log Message:
Use gcc 4.4 and later operation for nand, i.e.
*ptr = ~(tmp & value) instead of *ptr = ~tmp & value

There was also another bug in sync_fetch_and_nand_8 which I've also fixed.

PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S

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/arm/atomic/atomic_nand_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S	Fri Dec 11 12:41:10 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_nand_16.S,v 1.3 2015/12/11 12:41:10 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -36,8 +36,8 @@
 ENTRY_NP(_atomic_nand_16)
 	mov	ip, r0
 1:	ldrexh	r0, [ip]		/* load old value (to be returned) */
-	mvns	r3, r0			/* complement source */
-	ands	r3, r3, r1		/* calculate new value */
+	ands	r3, r0, r1		/* calculate new value step 1 */
+	mvns	r3, r3			/* ... complement for new value */
 	strexh	r2, r3, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -57,8 +57,8 @@ STRONG_ALIAS(_atomic_nand_ushort,_atomic
 ENTRY_NP(_atomic_nand_16_nv)
 	mov	ip, r0			/* need r0 for return value */
 1:	ldrexh	r0, [ip]		/* load old value */
-	mvns	r0, r0			/* complement source */
-	ands	r0, r0, r1		/* calculate new value (return value) */
+	ands	r0, r0, r1		/* calculate new value step 1 */
+	mvns	r0, r0			/* ... complement for new value */
 	strexh	r2, r0, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S	Fri Dec 11 12:41:10 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_32.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_nand_32.S,v 1.3 2015/12/11 12:41:10 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -36,8 +36,8 @@
 ENTRY_NP(_atomic_nand_32)
 	mov	ip, r0
 1:	ldrex	r0, [ip]		/* load old value (to be returned) */
-	mvns	r3, r0			/* complement source */
-	ands	r3, r3, r1		/* calculate new value */
+	ands	r3, r0, r1		/* calculate new value step 1 */
+	mvns	r3, r3			/* ... complement for new value */
 	strex	r2, r3, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -59,8 +59,8 @@ STRONG_ALIAS(_atomic_nand_ulong,_atomic_
 ENTRY_NP(_atomic_nand_32_nv)
 	mov	ip, r0			/* need r0 for return value */
 1:	ldrex	r0, [ip]		/* load old value */
-	mvns	r0, r0			/* complement source */
-	ands	r0, r0, r1		/* calculate new value (return value) */
+	ands	r0, r0, r1		/* calculate new value step 1 */
+	mvns	r0, r0			/* ... complement for new value */
 	strex	r2, r0, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.2	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S	Fri Dec 11 12:41:10 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_nand_8.S,v 1.3 2015/12/11 12:41:10 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -36,8 +36,8 @@
 ENTRY_NP(_atomic_nand_8)
 	mov	ip, r0
 1:	ldrexb	r0, [ip]		/* load old value (to be returned) */
-	mvns	r3, r0			/* complement source */
-	ands	r3, r3, r1		/* calculate new value */
+	ands	r3, r0, r1		/* calculate new value step 1 */
+	mvns	r3, r3			/* ... complement for new value */
 	strexb	r2, r3, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -57,8 +57,8 @@ STRONG_ALIAS(_atomic_nand_uchar,_atomic_
 

CVS commit: src/common/lib/libc/arch/arm/atomic

2015-06-07 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sun Jun  7 11:46:56 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Require ARMv5TE to assemble.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.27 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.28
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.27	Sun May 17 22:08:24 2015
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sun Jun  7 11:46:56 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.27 2015/05/17 22:08:24 justin Exp $
+#	$NetBSD: Makefile.inc,v 1.28 2015/06/07 11:46:56 joerg Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -68,6 +68,7 @@ CPUFLAGS.atomic_simplelock.c+=	-marm
 .if ${FEAT_LDREX} == no
 SRCS.atomic+=	atomic_init_testset.c
 SRCS.atomic+=	atomic_cas_up.S
+AFLAGS.atomic_cas_up.S+=	-march=armv5te
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-06-07 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sun Jun  7 11:46:56 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Require ARMv5TE to assemble.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-06-07 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Jun  7 15:06:24 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Back out last change; fixed in the correct place.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.28 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.29
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.28	Sun Jun  7 11:46:56 2015
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sun Jun  7 15:06:24 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.28 2015/06/07 11:46:56 joerg Exp $
+#	$NetBSD: Makefile.inc,v 1.29 2015/06/07 15:06:24 matt Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -68,7 +68,6 @@ CPUFLAGS.atomic_simplelock.c+=	-marm
 .if ${FEAT_LDREX} == no
 SRCS.atomic+=	atomic_init_testset.c
 SRCS.atomic+=	atomic_cas_up.S
-AFLAGS.atomic_cas_up.S+=	-march=armv5te
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-06-07 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Jun  7 15:06:24 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Back out last change; fixed in the correct place.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-05-17 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Sun May 17 22:08:24 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc
sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S
sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S
sync_fetch_and_add_8.S sync_fetch_and_and_8.S
sync_fetch_and_nand_8.S sync_fetch_and_or_8.S
sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S

Log Message:
Move arm sync_* changes to Makefile.inc


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.26 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.27
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.26	Tue Oct 14 07:25:05 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sun May 17 22:08:24 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.26 2014/10/14 07:25:05 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.27 2015/05/17 22:08:24 justin Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -42,7 +42,7 @@ SRCS.atomic+=	atomic_inc_32.S atomic_inc
 SRCS.atomic+=	atomic_sub_64.S
 SRCS.atomic+=	atomic_swap.S atomic_swap_16.S atomic_swap_64.S
 SRCS.atomic+=	membar_ops.S
-.if defined(LIB)  ${LIB} != kern
+.if defined(LIB)  ${LIB} != kern  ${LIB} != rump
 .for op in add and nand or sub xor
 SRCS.atomic+=	sync_fetch_and_${op}_8.S
 .endfor

Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.3
--- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.2	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S	Sun May 17 22:08:24 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: sync_bool_compare_and_swap_1.S,v 1.2 2015/05/17 20:57:11 justin Exp $ */
+/* $NetBSD: sync_bool_compare_and_swap_1.S,v 1.3 2015/05/17 22:08:24 justin Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include atomic_op_asm.h
 
-#if defined(_ARM_ARCH_6)  !defined(_RUMPKERNEL)
+#if defined(_ARM_ARCH_6)
 /*
  * ARMv6 has load-exclusive/store-exclusive which works for both user
  * and kernel.
Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.3
--- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.2	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S	Sun May 17 22:08:24 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: sync_bool_compare_and_swap_2.S,v 1.2 2015/05/17 20:57:11 justin Exp $ */
+/* $NetBSD: sync_bool_compare_and_swap_2.S,v 1.3 2015/05/17 22:08:24 justin Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -30,7 +30,7 @@
 
 #include atomic_op_asm.h
 
-#if defined(_ARM_ARCH_6)  !defined(_RUMPKERNEL)
+#if defined(_ARM_ARCH_6)
 /*
  * ARMv6 has load-exclusive/store-exclusive which works for both user
  * and kernel.
Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S
diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.3
--- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.2	Sun May 17 20:57:11 2015
+++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S	Sun May 17 22:08:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: sync_bool_compare_and_swap_4.S,v 1.2 2015/05/17 20:57:11 justin Exp $	*/
+/*	$NetBSD: sync_bool_compare_and_swap_4.S,v 1.3 2015/05/17 22:08:24 justin Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -30,7 +30,7 @@
 
 #include atomic_op_asm.h
 
-#if defined(_ARM_ARCH_6)  

CVS commit: src/common/lib/libc/arch/arm/atomic

2015-05-17 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Sun May 17 22:08:24 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc
sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S
sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S
sync_fetch_and_add_8.S sync_fetch_and_and_8.S
sync_fetch_and_nand_8.S sync_fetch_and_or_8.S
sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S

Log Message:
Move arm sync_* changes to Makefile.inc


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-04-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 17 07:03:40 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
ARM ARM D7.3.2 - ensure all previous accesses are observed before
the lock is cleared


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-04-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 17 07:15:03 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
Use the right register in previous.  Spotted by matt@


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-04-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 17 07:15:03 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
Use the right register in previous.  Spotted by matt@


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12	Fri Apr 17 07:03:40 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Fri Apr 17 07:15:02 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.12 2015/04/17 07:03:40 skrll Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.13 2015/04/17 07:15:02 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@ ENTRY_NP(__sync_lock_release_4)
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, r3, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
 #endif
 	strb	r1, [r0]
 	RET
@@ -131,7 +131,7 @@ ENTRY_NP(__sync_lock_release_1)
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, r3, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r1, c7, c10, 5	/* data memory barrier */
 #endif
 	strb	r1, [r0]
 	RET



CVS commit: src/common/lib/libc/arch/arm/atomic

2015-04-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Apr 17 07:03:40 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
ARM ARM D7.3.2 - ensure all previous accesses are observed before
the lock is cleared


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.11	Sat Jun 28 20:18:55 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Fri Apr 17 07:03:40 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.11 2014/06/28 20:18:55 joerg Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.12 2015/04/17 07:03:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -87,6 +87,11 @@ STRONG_ALIAS(_atomic_swap_ptr,_atomic_sw
 #if (!defined(_KERNEL) || defined(_RUMPKERNEL))  !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_4)
 	mov	r1, #0
+#ifdef _ARM_ARCH_7
+	dmb
+#else
+	mcr	p15, 0, r3, c7, c10, 5	/* data memory barrier */
+#endif
 	strb	r1, [r0]
 	RET
 END(__sync_lock_release_4)
@@ -123,6 +128,11 @@ STRONG_ALIAS(_atomic_swap_uchar,_atomic_
 #if (!defined(_KERNEL) || defined(_RUMPKERNEL))  !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_1)
 	mov	r1, #0
+#ifdef _ARM_ARCH_7
+	dmb
+#else
+	mcr	p15, 0, r3, c7, c10, 5	/* data memory barrier */
+#endif
 	strb	r1, [r0]
 	RET
 END(__sync_lock_release_1)



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-10-13 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Oct 13 12:49:59 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Move the and_{16,8}_nv sources into the right (libc only) block.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.24 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.25
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.24	Mon Oct 13 07:31:12 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Mon Oct 13 12:49:59 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.24 2014/10/13 07:31:12 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.25 2014/10/13 12:49:59 martin Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -13,8 +13,7 @@ SRCS.atomic+=	atomic_add_32_cas.c atomic
 		atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \
 		atomic_inc_32_cas.c atomic_inc_32_nv_cas.c \
 		atomic_or_32_cas.c atomic_or_32_nv_cas.c \
-		atomic_swap_32_cas.c membar_ops_nop.c \
-		atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c
+		atomic_swap_32_cas.c membar_ops_nop.c
 
 .if ${LIB} == c
 SRCS.atomic+=	atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \
@@ -25,7 +24,8 @@ SRCS.atomic+=	atomic_xor_32_cas.c atomic
 		atomic_add_16_cas.c atomic_add_8_cas.c \
 		atomic_swap_16_cas.c atomic_swap_8_cas.c \
 		atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \
-		atomic_load.c atomic_store.c
+		atomic_load.c atomic_store.c \
+		atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c
 .endif
 
 .else



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-10-13 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Oct 13 12:49:59 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Move the and_{16,8}_nv sources into the right (libc only) block.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Mar 28 21:32:41 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: membar_ops.S

Log Message:
Ensure SBZ register is zero


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/membar_ops.S

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/arm/atomic/membar_ops.S
diff -u src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.5 src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6
--- src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.5	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/membar_ops.S	Fri Mar 28 21:32:41 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops.S,v 1.5 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: membar_ops.S,v 1.6 2014/03/28 21:32:41 skrll Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,6 +36,7 @@ ENTRY_NP(_membar_producer)
 #ifdef _ARM_ARCH_7
 	dsb
 #else
+	mov	r0, #0
 	mcr	p15, 0, r0, c7, c10, 4	 /* Data Synchronization Barrier */
 #endif
 	RET
@@ -48,6 +49,7 @@ ENTRY_NP(_membar_sync)
 #ifdef _ARM_ARCH_7
 	dmb
 #else
+	mov	r0, #0
 	mcr	p15, 0, r0, c7, c10, 5	/* Data Memory Barrier */
 #endif
 	RET



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Mar  5 17:20:48 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
apcs-gnu only passes one register on the stack.
ldrd always loads little endian (low address, low register).


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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/arm/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.10
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.9	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S	Wed Mar  5 17:20:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_64.S,v 1.9 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_cas_64.S,v 1.10 2014/03/05 17:20:48 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -41,13 +41,8 @@ ENTRY_NP(_atomic_cas_64)
 #ifdef __ARM_EABI__
 	ldrd	r4, r5, [sp, #16]	/* fetch new value */
 #else
-#if __ARMEB__
-	ldr	r5, [sp, #16]		/* fetch new value */
-	ldr	r4, [sp, #20]		/* fetch new value */
-#else
-	ldr	r4, [sp, #16]		/* fetch new value */
-	ldr	r5, [sp, #20]		/* fetch new value */
-#endif
+	ldr	r5, [sp, #16]		/* second word third argument */
+	mov	r4, r3			/* first word third argument */
 	mov	r3, r2			/* r2 will be overwritten by r1 which ... */
 	mov	r2, r1			/* r1 will be overwritten by ldrexd */
 #endif



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Mar  5 17:20:48 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
apcs-gnu only passes one register on the stack.
ldrd always loads little endian (low address, low register).


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-04 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 16:15:28 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_add_16.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_64.S
atomic_and_8.S atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S
atomic_cas_8.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S
atomic_nand_8.S atomic_op_asm.h atomic_or_16.S atomic_or_64.S
atomic_or_8.S atomic_sub_64.S atomic_swap.S atomic_swap_16.S
atomic_swap_64.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S
atomic_xor_8.S membar_ops.S

Log Message:
Don't export __sync* if _KERNEL || _STANDALONE are defined.
(except if _RUMPKERNEL is defined)


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/membar_ops.S

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21	Tue Mar  4 06:36:41 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Tue Mar  4 16:15:28 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.21 2014/03/04 06:36:41 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.22 2014/03/04 16:15:28 matt Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -37,6 +37,7 @@ SRCS.atomic+=	atomic_inc_32.S atomic_inc
 SRCS.atomic+=	atomic_sub_64.S
 SRCS.atomic+=	atomic_swap.S atomic_swap_16.S atomic_swap_64.S
 SRCS.atomic+=	membar_ops.S
+.if defined(LIB)  ${LIB} != kern
 .for op in add and nand or sub xor
 SRCS.atomic+=	sync_fetch_and_${op}_8.S
 .endfor
@@ -44,6 +45,7 @@ SRCS.atomic+=	sync_fetch_and_${op}_8.S
 SRCS.atomic+=	sync_bool_compare_and_swap_${sz}.S
 .endfor
 .endif
+.endif
 
 .endif
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_add_16.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.1 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2
--- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.1	Fri Nov  8 22:42:52 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S	Tue Mar  4 16:15:28 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_16.S,v 1.1 2013/11/08 22:42:52 matt Exp $	*/
+/*	$NetBSD: atomic_add_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,14 +55,14 @@ END(_atomic_sub_16)
 ATOMIC_OP_ALIAS(atomic_add_16,_atomic_add_16)
 ATOMIC_OP_ALIAS(atomic_add_short,_atomic_add_16)
 ATOMIC_OP_ALIAS(atomic_add_ushort,_atomic_add_16)
-STRONG_ALIAS(__sync_fetch_and_add_2,_atomic_add_16)
+CRT_ALIAS(__sync_fetch_and_add_2,_atomic_add_16)
 STRONG_ALIAS(_atomic_add_short,_atomic_add_16)
 STRONG_ALIAS(_atomic_add_ushort,_atomic_add_16)
 
 ATOMIC_OP_ALIAS(atomic_sub_16,_atomic_sub_16)
 ATOMIC_OP_ALIAS(atomic_sub_short,_atomic_sub_16)
 ATOMIC_OP_ALIAS(atomic_sub_ushort,_atomic_sub_16)
-STRONG_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16)
+CRT_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16)
 

CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-04 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 16:15:28 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_add_16.S
atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_64.S
atomic_and_8.S atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S
atomic_cas_8.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S
atomic_nand_8.S atomic_op_asm.h atomic_or_16.S atomic_or_64.S
atomic_or_8.S atomic_sub_64.S atomic_swap.S atomic_swap_16.S
atomic_swap_64.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S
atomic_xor_8.S membar_ops.S

Log Message:
Don't export __sync* if _KERNEL || _STANDALONE are defined.
(except if _RUMPKERNEL is defined)


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S
cvs rdiff -u -r1.10 -r1.11 \
src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/membar_ops.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:34:22 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fetch value from correct stack location.  Push an even number of registers
so ldrd won't fail.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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/arm/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.5 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.5	Sat Nov 30 21:09:11 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S	Tue Mar  4 03:34:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_64.S,v 1.5 2013/11/30 21:09:11 joerg Exp $	*/
+/*	$NetBSD: atomic_cas_64.S,v 1.6 2014/03/04 03:34:22 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,10 +36,10 @@
  * and kernel.
  */
 ENTRY_NP(_atomic_cas_64)
-	push	{r4, r5, r6}		/* save temporaries */
+	push	{r4-r7}			/* save temporaries */
 	mov	ip, r0			/* we need r0 for return value */
 #ifdef __ARM_EABI__
-	ldrd	r4, r5, [sp]		/* fetch new value */
+	ldrd	r4, r5, [sp, #16]	/* fetch new value */
 #else
 	ldr	r4, [sp, #0]		/* fetch new value */
 	ldr	r5, [sp, #4]		/* fetch new value */
@@ -65,7 +65,7 @@ ENTRY_NP(_atomic_cas_64)
 	mcr	p15, 0, ip, c7, c10, 4	/* data synchronization barrier */
 #endif
 2:
-	pop	{r4, r5, r6}		/* restore temporaries */
+	pop	{r4-r7}			/* restore temporaries */
 	RET/* return. */
 END(_atomic_cas_64)
 



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:36:24 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Load new value from correct stack location in _atomic_cas_64_up


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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/arm/atomic/atomic_cas_up.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.7
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.6	Thu Feb 27 09:39:00 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S	Tue Mar  4 03:36:24 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_up.S,v 1.6 2014/02/27 09:39:00 matt Exp $	*/
+/*	$NetBSD: atomic_cas_up.S,v 1.7 2014/03/04 03:36:24 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -53,7 +53,7 @@ END(_atomic_cas_up)
 ARM_ENTRY(_atomic_cas_64_up)
 	push	{r4-r5}
 	mov	ip, r0
-	ldrd	r4, r5, [sp]
+	ldrd	r4, r5, [sp, #8]
 	.align	0
 RAS_START_ASM_HIDDEN(_atomic_cas_64)
 	ldrd	r0, r1, [ip]



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:49:07 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Add atomic_sub_64.S


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.19 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.20
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.19	Thu Feb 27 09:39:00 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Tue Mar  4 03:49:07 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.19 2014/02/27 09:39:00 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.20 2014/03/04 03:49:07 matt Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -34,6 +34,7 @@ SRCS.atomic+=	atomic_${op}_${sz}.S
 .endfor
 SRCS.atomic+=	atomic_dec_32.S atomic_dec_64.S
 SRCS.atomic+=	atomic_inc_32.S atomic_inc_64.S
+SRCS.atomic+=	atomic_sub_32.S
 SRCS.atomic+=	atomic_swap.S atomic_swap_16.S atomic_swap_64.S
 SRCS.atomic+=	membar_ops.S
 .for op in add and nand or sub xor



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:50:37 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fix non-EABI loading of argument.  Deal with endian issues.
Fixes PR/48635


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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/arm/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6	Tue Mar  4 03:34:22 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S	Tue Mar  4 03:50:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_64.S,v 1.6 2014/03/04 03:34:22 matt Exp $	*/
+/*	$NetBSD: atomic_cas_64.S,v 1.7 2014/03/04 03:50:37 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,9 +40,13 @@ ENTRY_NP(_atomic_cas_64)
 	mov	ip, r0			/* we need r0 for return value */
 #ifdef __ARM_EABI__
 	ldrd	r4, r5, [sp, #16]	/* fetch new value */
+#elif __ARMEB__
+	ldr	r5, [sp, #16]		/* fetch new value */
+	ldr	r4, [sp, #20]		/* fetch new value */
 #else
-	ldr	r4, [sp, #0]		/* fetch new value */
-	ldr	r5, [sp, #4]		/* fetch new value */
+	ldr	r4, [sp, #16]		/* fetch new value */
+	ldr	r5, [sp, #20]		/* fetch new value */
+#endif
 	mov	r3, r2			/* r2 will be overwritten by r1 which ... */
 	mov	r2, r1			/* r1 will be overwritten by ldrexd */
 #endif



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 06:36:41 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
fix typo.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.20 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.20	Tue Mar  4 03:49:07 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Tue Mar  4 06:36:41 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.20 2014/03/04 03:49:07 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.21 2014/03/04 06:36:41 matt Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -34,7 +34,7 @@ SRCS.atomic+=	atomic_${op}_${sz}.S
 .endfor
 SRCS.atomic+=	atomic_dec_32.S atomic_dec_64.S
 SRCS.atomic+=	atomic_inc_32.S atomic_inc_64.S
-SRCS.atomic+=	atomic_sub_32.S
+SRCS.atomic+=	atomic_sub_64.S
 SRCS.atomic+=	atomic_swap.S atomic_swap_16.S atomic_swap_64.S
 SRCS.atomic+=	membar_ops.S
 .for op in add and nand or sub xor



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 07:01:26 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fix #if/#endif nesting


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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/arm/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.8
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7	Tue Mar  4 03:50:37 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S	Tue Mar  4 07:01:26 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_64.S,v 1.7 2014/03/04 03:50:37 matt Exp $	*/
+/*	$NetBSD: atomic_cas_64.S,v 1.8 2014/03/04 07:01:26 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,7 +40,8 @@ ENTRY_NP(_atomic_cas_64)
 	mov	ip, r0			/* we need r0 for return value */
 #ifdef __ARM_EABI__
 	ldrd	r4, r5, [sp, #16]	/* fetch new value */
-#elif __ARMEB__
+#else
+#if __ARMEB__
 	ldr	r5, [sp, #16]		/* fetch new value */
 	ldr	r4, [sp, #20]		/* fetch new value */
 #else



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:34:22 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fetch value from correct stack location.  Push an even number of registers
so ldrd won't fail.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:36:24 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Load new value from correct stack location in _atomic_cas_64_up


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:49:07 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Add atomic_sub_64.S


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 03:50:37 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fix non-EABI loading of argument.  Deal with endian issues.
Fixes PR/48635


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 06:36:41 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
fix typo.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-03-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Mar  4 07:01:26 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S

Log Message:
Fix #if/#endif nesting


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Feb 22 08:08:56 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Move the __sync_* ops added in the previous change to a libc-only section


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.16 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.17
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.16	Fri Feb 21 21:54:38 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sat Feb 22 08:08:56 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2014/02/21 21:54:38 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.17 2014/02/22 08:08:56 martin Exp $
 
 ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
 ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*}
@@ -22,14 +22,18 @@ SRCS.atomic+=	atomic_add_32_cas.c atomic
 		atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \
 		atomic_inc_32_cas.c atomic_inc_32_nv_cas.c \
 		atomic_or_32_cas.c atomic_or_32_nv_cas.c \
-		atomic_swap_32_cas.c membar_ops_nop.c \
-		atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \
+		atomic_swap_32_cas.c membar_ops_nop.c
+
+.if ${LIB} == c
+SRCS.atomic+=	atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \
 		atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \
 		atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \
 		atomic_or_16_cas.c atomic_or_8_cas.c \
 		atomic_and_16_cas.c atomic_and_8_cas.c \
 		atomic_add_16_cas.c atomic_add_8_cas.c \
 		atomic_swap_16_cas.c atomic_swap_8_cas.c
+.endif
+
 .else
 .for op in add and cas nand or xor
 .for sz in 8 16 32 64



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Feb 22 17:16:12 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?)


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.17 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.18
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.17	Sat Feb 22 08:08:56 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Sat Feb 22 17:16:12 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.17 2014/02/22 08:08:56 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.18 2014/02/22 17:16:12 martin Exp $
 
 ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
 ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*}
@@ -31,7 +31,8 @@ SRCS.atomic+=	atomic_xor_32_cas.c atomic
 		atomic_or_16_cas.c atomic_or_8_cas.c \
 		atomic_and_16_cas.c atomic_and_8_cas.c \
 		atomic_add_16_cas.c atomic_add_8_cas.c \
-		atomic_swap_16_cas.c atomic_swap_8_cas.c
+		atomic_swap_16_cas.c atomic_swap_8_cas.c \
+		atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c
 .endif
 
 .else



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Feb 22 08:08:56 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Move the __sync_* ops added in the previous change to a libc-only section


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Feb 22 17:16:12 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?)


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-21 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Feb 21 21:54:38 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Provide the missing __sync_* ops for earlier arm versions


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.16
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.15	Mon Jan 27 18:05:24 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Fri Feb 21 21:54:38 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.15 2014/01/27 18:05:24 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.16 2014/02/21 21:54:38 martin Exp $
 
 ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
 ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*}
@@ -22,7 +22,14 @@ SRCS.atomic+=	atomic_add_32_cas.c atomic
 		atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \
 		atomic_inc_32_cas.c atomic_inc_32_nv_cas.c \
 		atomic_or_32_cas.c atomic_or_32_nv_cas.c \
-		atomic_swap_32_cas.c membar_ops_nop.c
+		atomic_swap_32_cas.c membar_ops_nop.c \
+		atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \
+		atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \
+		atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \
+		atomic_or_16_cas.c atomic_or_8_cas.c \
+		atomic_and_16_cas.c atomic_and_8_cas.c \
+		atomic_add_16_cas.c atomic_add_8_cas.c \
+		atomic_swap_16_cas.c atomic_swap_8_cas.c
 .else
 .for op in add and cas nand or xor
 .for sz in 8 16 32 64



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-02-21 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Feb 21 21:54:38 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Provide the missing __sync_* ops for earlier arm versions


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-01-29 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jan 30 06:39:16 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
switch to unified syntax


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.9
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.8	Fri Nov  8 22:42:52 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Thu Jan 30 06:39:16 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.8 2013/11/08 22:42:52 matt Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.9 2014/01/30 06:39:16 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@ ENTRY_NP(_atomic_swap_32)
 #else
 	swp	r0, r1, [ip]
 	cmp	r0, r1
-	movnes	r3, #0
+	movsne	r3, #0
 	cmpne	r3, #0
 #endif
 	bne	1b



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-01-29 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jan 30 06:39:16 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap.S

Log Message:
switch to unified syntax


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_swap.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-01-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 27 18:05:25 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_cas_up.S

Log Message:
Add _atomic_cas_16_up and _atomic_cas_8_up


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.15
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.14	Fri Nov  8 22:42:52 2013
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Mon Jan 27 18:05:24 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.14 2013/11/08 22:42:52 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.15 2014/01/27 18:05:24 matt Exp $
 
 ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
 ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*}
@@ -58,6 +58,8 @@ CPUFLAGS.atomic_simplelock.c+=	-marm
 SRCS.atomic+=	atomic_init_testset.c
 SRCS.atomic+=	atomic_cas_up.S
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
+CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP
+CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP
 .else
 SRCS.atomic+=	atomic_init_cas.c
 .endif

Index: src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.4	Mon Aug 19 00:35:06 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S	Mon Jan 27 18:05:24 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_up.S,v 1.4 2013/08/19 00:35:06 matt Exp $	*/
+/*	$NetBSD: atomic_cas_up.S,v 1.5 2014/01/27 18:05:24 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -48,3 +48,35 @@ RAS_START_ASM_HIDDEN(_atomic_cas)
 RAS_END_ASM_HIDDEN(_atomic_cas)
 1:	RET
 END(_atomic_cas_up)
+
+ENTRY(_atomic_cas_16_up)
+	mov	r3, r0
+	.align	0
+RAS_START_ASM_HIDDEN(_atomic_cas_16)
+	ldrh	r0, [r3]
+	cmp	r0, r1
+#if defined(__thumb__)
+	beq	1f
+#else
+	strheq	r2, [r3]
+#endif
+	.align	0
+RAS_END_ASM_HIDDEN(_atomic_cas_16)
+1:	RET
+END(_atomic_cas_16_up)
+
+ENTRY(_atomic_cas_8_up)
+	mov	r3, r0
+	.align	0
+RAS_START_ASM_HIDDEN(_atomic_cas_8)
+	ldrb	r0, [r3]
+	cmp	r0, r1
+#if defined(__thumb__)
+	beq	1f
+#else
+	strbeq	r2, [r3]
+#endif
+	.align	0
+RAS_END_ASM_HIDDEN(_atomic_cas_8)
+1:	RET
+END(_atomic_cas_8_up)



CVS commit: src/common/lib/libc/arch/arm/atomic

2014-01-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 27 18:05:25 UTC 2014

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_cas_up.S

Log Message:
Add _atomic_cas_16_up and _atomic_cas_8_up


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-11-30 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Nov 30 20:43:53 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S

Log Message:
Explicitly name the register pairs.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S

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/arm/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.9 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.10
--- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.9	Fri Nov  8 22:42:52 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S	Sat Nov 30 20:43:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.9 2013/11/08 22:42:52 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.10 2013/11/30 20:43:53 joerg Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -39,10 +39,10 @@ ENTRY_NP(_atomic_add_64_nv)
 	mov	r3, r2
 	mov	r2, r1
 #endif
-1:	ldrexd	r0, [ip]		/* load old value */
+1:	ldrexd	r0, r1, [ip]		/* load old value */
 	adds	LO, LO, NLO		/* calculate new value lo */
 	adcs	HI, HI, NHI		/* calculate new value hi */
-	strexd	r4, r0, [ip]		/* try to store */
+	strexd	r4, r0, r1, [ip]	/* try to store */
 	cmp	r4, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-11-30 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Nov 30 20:43:53 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S

Log Message:
Explicitly name the register pairs.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S

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



Re: CVS commit: src/common/lib/libc/arch/arm/atomic

2013-11-09 Thread Jukka Ruohonen
On Fri, Nov 08, 2013 at 10:42:52PM +, Matt Thomas wrote:
 Log Message:
 Add support for the gcc __sync builtins.

A stupid but important question: what is __sync?

- Jukka.


CVS commit: src/common/lib/libc/arch/arm/atomic

2013-11-08 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Nov  8 22:42:52 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_add_32.S
atomic_add_64.S atomic_and_32.S atomic_and_64.S atomic_cas_32.S
atomic_cas_64.S atomic_cas_8.S atomic_inc_32.S atomic_op_asm.h
atomic_or_32.S atomic_or_64.S atomic_swap.S atomic_swap_64.S
membar_ops.S
Added Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_8.S
atomic_and_16.S atomic_and_8.S atomic_cas_16.S atomic_nand_16.S
atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_or_16.S
atomic_or_8.S atomic_sub_64.S atomic_swap_16.S atomic_xor_16.S
atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S
sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S
sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S
sync_fetch_and_add_8.S sync_fetch_and_and_8.S
sync_fetch_and_nand_8.S sync_fetch_and_or_8.S
sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S

Log Message:
Add support for the gcc __sync builtins.
Note that these need earmv6 or later to get the ldrex/strex instructions


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S \
src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S \
src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h \
src/common/lib/libc/arch/arm/atomic/membar_ops.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Aug 20 07:52:31 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_or_64.S atomic_swap_64.S

Log Message:
Push two registers to keep stack aligned.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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/arm/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.8
--- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.7	Sun Aug 11 04:41:17 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S	Tue Aug 20 07:52:31 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.7 2013/08/11 04:41:17 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.8 2013/08/20 07:52:31 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_add_64_nv)
-	push	{r4}			/* save temporary */
+	push	{r3,r4}			/* save temporary */
 	mov	ip, r0			/* need r0 for return value */
 #ifndef __ARM_EABI__
 	mov	r3, r2
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_add_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r4}			/* restore temporary */
+	pop	{r3,r4}			/* restore temporary */
 	RET/* return new value */
 END(_atomic_add_64_nv)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.7
--- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.6	Sun Aug 11 04:41:17 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S	Tue Aug 20 07:52:31 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $	*/
+/*	$NetBSD: atomic_and_64.S,v 1.7 2013/08/20 07:52:31 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_and_64_nv)
-	push	{r4}			/* save temporary */
+	push	{r3,r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_and_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r4}			/* restore temporary */
+	pop	{r3,r4}			/* restore temporary */
 	RET/* return new value */
 END(_atomic_and_64_nv)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.7
--- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.6	Sun Aug 11 04:41:17 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S	Tue Aug 20 07:52:31 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $	*/
+/*	$NetBSD: atomic_or_64.S,v 1.7 2013/08/20 07:52:31 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,7 +33,7 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_or_64_nv)
-	push	{r4}			/* save temporary */
+	push	{r3,r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -50,7 +50,7 @@ ENTRY_NP(_atomic_or_64_nv)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r4}			/* restore temporary */
+	pop	{r3,r4}			/* restore temporary */
 	RET/* return new value */
 END(_atomic_or_64_nv)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.4	Sat Aug 10 19:59:21 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S	Tue Aug 20 07:52:31 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
+/*	$NetBSD: atomic_swap_64.S,v 1.5 2013/08/20 07:52:31 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -31,7 +31,7 @@
 #include atomic_op_asm.h
 
 ENTRY_NP(_atomic_swap_64)
-	push	{r4}			/* save temporary */
+	push	{r3,r4}			/* save temporary */
 	mov	ip, r0			/* return value will be in r0 */
 #ifndef __ARM_EABI__
 	mov	r3, r2			/* r2 will be overwriten by r1 */
@@ -46,7 +46,7 @@ ENTRY_NP(_atomic_swap_64)
 #else
 	mcr	p15, 0, r4, c7, c10, 5	/* data memory barrier */
 #endif
-	pop	{r4}			/* restore temporary */
+	pop	{r3,r4}			/* restore temporary */
 	RET
 	END(_atomic_swap_64)
 ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Aug 20 07:52:31 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_or_64.S atomic_swap_64.S

Log Message:
Push two registers to keep stack aligned.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 00:35:07 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Thumbify


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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/arm/atomic/atomic_cas_up.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.3	Sat Aug 10 19:59:21 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S	Mon Aug 19 00:35:06 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_up.S,v 1.3 2013/08/10 19:59:21 matt Exp $	*/
+/*	$NetBSD: atomic_cas_up.S,v 1.4 2013/08/19 00:35:06 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -35,10 +35,16 @@
 ENTRY(_atomic_cas_up)
 	.hidden	_C_LABEL(_atomic_cas_up)
 	mov	r3, r0
+	.align	0
 RAS_START_ASM_HIDDEN(_atomic_cas)
 	ldr	r0, [r3]
 	cmp	r0, r1
+#if defined(__thumb__)
+	beq	1f
+#else
 	streq	r2, [r3]
+#endif
+	.align	0
 RAS_END_ASM_HIDDEN(_atomic_cas)
-	RET
+1:	RET
 END(_atomic_cas_up)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:55:12 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Rework to allow thumb armv7 compilation.
Add atomic_simplelock.c for thumb


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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/arm/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.12 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.13
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.12	Tue Aug  6 20:49:15 2013
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Mon Aug 19 03:55:12 2013
@@ -1,22 +1,23 @@
-#	$NetBSD: Makefile.inc,v 1.12 2013/08/06 20:49:15 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.13 2013/08/19 03:55:12 matt Exp $
 
-ARMV6= ${CPUFLAGS:M-march=armv7*} ${CPUFLAGS:M-mcpu=cortex*}
-ARMV6+= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
-ARMV6+= ${CFLAGS:M-march=armv7*:} ${CFLAGS:M-mcpu=cortex*}
+ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*}
 ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*}
-ARMV6+= ${CPPFLAGS:M-march=armv7*:} ${CPPFLAGS:M-mcpu=cortex*}
 ARMV6+= ${CPPFLAGS:M-march=armv6*:} ${CPPFLAGS:M-mcpu=arm11*}
+ARMV7= ${CPUFLAGS:M-march=armv7*} ${CPUFLAGS:M-mcpu=cortex*}
+ARMV7+= ${CFLAGS:M-march=armv7*:} ${CFLAGS:M-mcpu=cortex*}
+ARMV7+= ${CPPFLAGS:M-march=armv7*:} ${CPPFLAGS:M-mcpu=cortex*}
 .if empty(CPPFLAGS:M-D_STANDALONE) \
  empty(CFLAGS:M-march=*)  empty(CFLAGS:M-mcpu=*) \
  empty(CPPFLAGS:M-march=*)  empty(CPPFLAGS:M-mcpu=*) \
  empty(CPUFLAGS:M-march=*)  empty(CPUFLAGS:M-mcpu=*)
-ARMV6+= ${MACHINE_ARCH:Mearmv[67]*}
+ARMV6+= ${MACHINE_ARCH:Mearmv6*}
+ARMV7+= ${MACHINE_ARCH:Mearmv7*}
 .endif
 
 .if defined(LIB)  (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \
 	|| ${LIB} == rump)
 
-.if empty(ARMV6)
+.if empty(ARMV6)  empty(ARMV7)
 SRCS.atomic+=	atomic_add_32_cas.c atomic_add_32_nv_cas.c \
 		atomic_and_32_cas.c atomic_and_32_nv_cas.c \
 		atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \
@@ -34,9 +35,18 @@ SRCS.atomic+=	atomic_swap_64.S
 
 .endif
 
+.if defined(LIB)  (${LIB} == c || ${LIB} == pthread || ${LIB} == rump)
+
+SRCS.atomic+=	atomic_simplelock.c
+.if empty(ARMV7)
+CPUFLAGS.atomic_simplelock.c+=	-marm
+.endif
+
+.endif
+
 .if defined(LIB)  (${LIB} == c || ${LIB} == pthread)
 
-.if empty(ARMV6)
+.if empty(ARMV6)  empty(ARMV7)
 SRCS.atomic+=	atomic_init_testset.c
 SRCS.atomic+=	atomic_cas_up.S
 CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
@@ -46,4 +56,10 @@ SRCS.atomic+=	atomic_init_cas.c
 
 .endif
 
+.if !empty(ARMV6)
+.for f in ${SRCS.atomic:M*.S}
+CPUFLAGS.$f+=	-marm
+.endfor
+.endif
+
 SRCS+=	${SRCS.atomic}



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 00:35:07 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S

Log Message:
Thumbify


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Aug 19 03:55:12 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: Makefile.inc

Log Message:
Rework to allow thumb armv7 compilation.
Add atomic_simplelock.c for thumb


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/arm/atomic/Makefile.inc

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-15 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Aug 15 22:42:50 UTC 2013

Added Files:
src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c

Log Message:
When compiling for Thumb1, the swp instruction is not availble.  So this
stub is added to provide __cpu_simple_lock and __cpu_simple_lock_try via
thumb interwork support.  It is compiled with -mno-thumb.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 \
src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c

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

Added files:

Index: src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c
diff -u /dev/null src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1
--- /dev/null	Thu Aug 15 22:42:50 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c	Thu Aug 15 22:42:50 2013
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include sys/cdefs.h
+__RCSID($NetBSD: atomic_simplelock.c,v 1.1 2013/08/15 22:42:50 matt Exp $);
+
+#include sys/types.h
+/*
+ * We need to use the inlines so redefine out of the way.
+ */
+#define	__cpu_simple_lock	__arm_simple_lock
+#define	__cpu_simple_lock_try	__arm_simple_lock_try
+#include arm/lock.h
+/*
+ * Now get rid of them.
+ */
+#undef __cpu_simple_lock
+#undef __cpu_simple_lock_try
+
+#if !defined(_ARM_ARCH_T2)
+/*
+ * Since we overrode lock.h we have to provide these ourselves.
+ */
+__dso_hidden void __cpu_simple_lock(__cpu_simple_lock_t *);
+__dso_hidden int __cpu_simple_lock_try(__cpu_simple_lock_t *);
+
+void
+__cpu_simple_lock(__cpu_simple_lock_t *alp)
+{
+
+	__arm_simple_lock(alp);
+}
+
+int
+__cpu_simple_lock_try(__cpu_simple_lock_t *alp)
+{
+
+	return __arm_simple_lock_try(alp);
+}
+#endif



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-15 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 16 01:47:41 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c

Log Message:
Add a hidden version for libpthread.


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

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/arm/atomic/atomic_simplelock.c
diff -u src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1 src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.2
--- src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1	Thu Aug 15 22:42:50 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c	Fri Aug 16 01:47:41 2013
@@ -28,9 +28,11 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_simplelock.c,v 1.1 2013/08/15 22:42:50 matt Exp $);
+__RCSID($NetBSD: atomic_simplelock.c,v 1.2 2013/08/16 01:47:41 matt Exp $);
 
 #include sys/types.h
+
+#if !defined(_ARM_ARCH_T2)
 /*
  * We need to use the inlines so redefine out of the way.
  */
@@ -43,12 +45,16 @@ __RCSID($NetBSD: atomic_simplelock.c,v 
 #undef __cpu_simple_lock
 #undef __cpu_simple_lock_try
 
-#if !defined(_ARM_ARCH_T2)
 /*
  * Since we overrode lock.h we have to provide these ourselves.
  */
+#ifdef __LIBPTHREAD_SOURCE__
 __dso_hidden void __cpu_simple_lock(__cpu_simple_lock_t *);
 __dso_hidden int __cpu_simple_lock_try(__cpu_simple_lock_t *);
+#else
+void __cpu_simple_lock(__cpu_simple_lock_t *);
+int __cpu_simple_lock_try(__cpu_simple_lock_t *);
+#endif
 
 void
 __cpu_simple_lock(__cpu_simple_lock_t *alp)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-15 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Aug 15 22:42:50 UTC 2013

Added Files:
src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c

Log Message:
When compiling for Thumb1, the swp instruction is not availble.  So this
stub is added to provide __cpu_simple_lock and __cpu_simple_lock_try via
thumb interwork support.  It is compiled with -mno-thumb.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 \
src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-15 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 16 01:47:41 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c

Log Message:
Add a hidden version for libpthread.


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

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:28:15 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S

Log Message:
Fix add - adds


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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/arm/atomic/atomic_inc_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.3	Mon Oct 29 14:09:38 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S	Sat Aug 10 18:28:15 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_inc_64.S,v 1.3 2012/10/29 14:09:38 chs Exp $	*/
+/*	$NetBSD: atomic_inc_64.S,v 1.4 2013/08/10 18:28:15 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -55,7 +55,7 @@ ATOMIC_OP_ALIAS(atomic_inc_64,_atomic_in
 ENTRY_NP(_atomic_inc_64_nv)
 	mov	r3, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r3]		/* load old value */
-	add	LO, LO, #1		/* calculate new value (return value) */
+	adds	LO, LO, #1		/* calculate new value (return value) */
 	adc	HI, HI, #0		/* fold carry into high */
 	strexd	ip, r0, [r3]		/* try to store */
 	cmp	ip, #0			/*   succeed? */



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:32:06 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S

Log Message:
Don't adjust return of atomic_inc_64 since it's void and doesn't return
anything.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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/arm/atomic/atomic_inc_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4	Sat Aug 10 18:28:15 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S	Sat Aug 10 18:32:06 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_inc_64.S,v 1.4 2013/08/10 18:28:15 matt Exp $	*/
+/*	$NetBSD: atomic_inc_64.S,v 1.5 2013/08/10 18:32:06 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -45,10 +45,7 @@ ENTRY_NP(_atomic_inc_64)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	mvn	r2, #0			/* r2 = -1 */
-	adds	LO, LO, r2		/* add it */
-	adc	HI, HI, r2		/* add with carry */
-	RET/* return orig value */
+	RET
 	END(_atomic_inc_64)
 ATOMIC_OP_ALIAS(atomic_inc_64,_atomic_inc_64)
 



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:38:33 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap_64.S

Log Message:
cmpne - cmp
Use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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/arm/atomic/atomic_swap_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.2	Thu Sep 13 00:36:12 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S	Sat Aug 10 18:38:33 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $	*/
+/*	$NetBSD: atomic_swap_64.S,v 1.3 2013/08/10 18:38:33 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -31,7 +31,7 @@
 #include atomic_op_asm.h
 
 ENTRY_NP(_atomic_swap_64)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 	mov	r4, r0			/* return value will be in r0 */
 #ifndef __ARM_EABI__
 	mov	r3, r2			/* r2 will be overwriten by r1 */
@@ -40,14 +40,14 @@ ENTRY_NP(_atomic_swap_64)
 1:
 	ldrexd	r0, [r4]		/* load old value */
 	strexd	ip, r2, [r4]		/* store new value */
-	cmpne	ip, #0			/*succeed? */
+	cmp	ip, #0			/*succeed? */
 	bne	1b			/*no, try again */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET
 	END(_atomic_swap_64)
 ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:07 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_or_64.S

Log Message:
use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S

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/arm/atomic/atomic_or_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.2	Thu Sep 13 00:36:12 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S	Sat Aug 10 18:39:07 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $	*/
+/*	$NetBSD: atomic_or_64.S,v 1.3 2013/08/10 18:39:07 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,15 +33,15 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_or_64)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
 #endif
 	mov	r4, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	orr	r2, r0, r2		/* calculate new value */
-	orr	r3, r1, r3		/* calculate new value */
+	orr	r2, r2, r0		/* calculate new value */
+	orr	r3, r3, r1		/* calculate new value */
 	strexd	ip, r2, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -50,13 +50,13 @@ ENTRY_NP(_atomic_or_64)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return old value */
 	END(_atomic_or_64)
 ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64)
 
 ENTRY_NP(_atomic_or_64_nv)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -73,7 +73,7 @@ ENTRY_NP(_atomic_or_64_nv)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return new value */
 	END(_atomic_or_64_nv)
 ATOMIC_OP_ALIAS(atomic_or_64_nv,_atomic_or_64_nv)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:25 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_and_64.S

Log Message:
Use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S

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/arm/atomic/atomic_and_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.2	Thu Sep 13 00:36:12 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S	Sat Aug 10 18:39:25 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $	*/
+/*	$NetBSD: atomic_and_64.S,v 1.3 2013/08/10 18:39:25 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,15 +33,15 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_and_64)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
 #endif
 	mov	r4, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	and	r2, r0, r2		/* calculate new value */
-	and	r3, r1, r3		/* calculate new value */
+	and	r2, r2, r0		/* calculate new value */
+	and	r3, r3, r1		/* calculate new value */
 	strexd	ip, r2, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -50,13 +50,13 @@ ENTRY_NP(_atomic_and_64)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return old value */
 	END(_atomic_and_64)
 ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64)
 
 ENTRY_NP(_atomic_and_64_nv)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
@@ -73,7 +73,7 @@ ENTRY_NP(_atomic_and_64_nv)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return new value */
 	END(_atomic_and_64_nv)
 ATOMIC_OP_ALIAS(atomic_and_64_nv,_atomic_and_64_nv)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:48 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S

Log Message:
use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S

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/arm/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.3	Thu Sep 13 00:36:12 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S	Sat Aug 10 18:39:48 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.3 2012/09/13 00:36:12 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.4 2013/08/10 18:39:48 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,15 +33,15 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_add_64)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 	mov	r4, r0			/* need r0 for return value */
 #ifndef __ARM_EABI__
 	mov	r3, r2
 	mov	r2, r1
 #endif
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	adds	NLO, LO, NLO		/* calculate new value */
-	adc	NHI, HI, NHI		/* calculate new value */
+	adds	NLO, NLO, LO		/* calculate new value */
+	adc	NHI, NHI, HI		/* calculate new value */
 	strexd	ip, r2, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -50,13 +50,13 @@ ENTRY_NP(_atomic_add_64)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return old value */
 	END(_atomic_add_64)
 ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64)
 
 ENTRY_NP(_atomic_add_64_nv)
-	str	r4, [sp, #-4]!		/* save temporary */
+	push	{r4}			/* save temporary */
 	mov	r4, r0			/* need r0 for return value */
 #ifndef __ARM_EABI__
 	mov	r3, r2
@@ -73,7 +73,7 @@ ENTRY_NP(_atomic_add_64_nv)
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	ldr	r4, [sp], #4		/* restore temporary */
+	pop	{r4}			/* restore temporary */
 	RET/* return new value */
 	END(_atomic_add_64_nv)
 ATOMIC_OP_ALIAS(atomic_add_64_nv,_atomic_add_64_nv)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:40:19 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S

Log Message:
Use subs/sbc
Use push/pop
Don't adjust return for atomic_dec_64 since it's void and returns nothing


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S

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/arm/atomic/atomic_dec_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3
--- src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.2	Thu Sep 13 00:36:12 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S	Sat Aug 10 18:40:19 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_dec_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $	*/
+/*	$NetBSD: atomic_dec_64.S,v 1.3 2013/08/10 18:40:19 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -33,33 +33,29 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_dec_64)
-	mvn	r2, #0
 	mov	r3, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r3]		/* load old value (return value) */
-	adds	LO, LO, r2		/* calculate new value */
-	adc	HI, HI, r2		/* calculate new value */
-	strexd	ip, r0, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+	subs	LO, LO, #1		/* calculate new value */
+	sbc	HI, HI, #0		/* calculate new value */
+	strexd	r2, r0, [r3]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
-	adds	LO, LO, #1
-	adc	HI, HI, #0
-	RET/* return old value */
+	RET
 	END(_atomic_dec_64)
 ATOMIC_OP_ALIAS(atomic_dec_64,_atomic_dec_64)
 
 ENTRY_NP(_atomic_dec_64_nv)
-	mvn	r2, #0
 	mov	r3, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r3]		/* load old value */
-	adds	LO, LO, r2		/* calculate new value */
-	adc	HI, HI, r2		/* calculate new value */
-	strexd	ip, r0, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+	subs	LO, LO, #1		/* calculate new value */
+	sbc	HI, HI, #0		/* calculate new value */
+	strexd	r2, r0, [r3]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
 	dmb



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:45:12 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S atomic_inc_64.S

Log Message:
Use r2 instead of ip


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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/arm/atomic/atomic_dec_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3	Sat Aug 10 18:40:19 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S	Sat Aug 10 18:45:12 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_dec_64.S,v 1.3 2013/08/10 18:40:19 matt Exp $	*/
+/*	$NetBSD: atomic_dec_64.S,v 1.4 2013/08/10 18:45:12 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -43,7 +43,7 @@ ENTRY_NP(_atomic_dec_64)
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET
 	END(_atomic_dec_64)
@@ -60,7 +60,7 @@ ENTRY_NP(_atomic_dec_64_nv)
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET/* return new value */
 	END(_atomic_dec_64_nv)

Index: src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.6
--- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5	Sat Aug 10 18:32:06 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S	Sat Aug 10 18:45:12 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_inc_64.S,v 1.5 2013/08/10 18:32:06 matt Exp $	*/
+/*	$NetBSD: atomic_inc_64.S,v 1.6 2013/08/10 18:45:12 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -37,13 +37,13 @@ ENTRY_NP(_atomic_inc_64)
 1:	ldrexd	r0, [r3]		/* load old value (return value) */
 	adds	LO, LO, #1		/* calculate new value */
 	adc	HI, HI, #0		/* zero means we carried */
-	strexd	ip, r0, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+	strexd	r2, r0, [r3]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET
 	END(_atomic_inc_64)
@@ -54,13 +54,13 @@ ENTRY_NP(_atomic_inc_64_nv)
 1:	ldrexd	r0, [r3]		/* load old value */
 	adds	LO, LO, #1		/* calculate new value (return value) */
 	adc	HI, HI, #0		/* fold carry into high */
-	strexd	ip, r0, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+	strexd	r2, r0, [r3]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET/* return new value */
 	END(_atomic_inc_64_nv)



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 19:02:22 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_or_64.S

Log Message:
Never modify NLO/NHI (r2,r3) only LO/HI (r0,r1) so subsequent loops will work.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S

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/arm/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4	Sat Aug 10 18:39:48 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S	Sat Aug 10 19:02:22 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.4 2013/08/10 18:39:48 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.5 2013/08/10 19:02:22 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,9 +40,9 @@ ENTRY_NP(_atomic_add_64)
 	mov	r2, r1
 #endif
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	adds	NLO, NLO, LO		/* calculate new value */
-	adc	NHI, NHI, HI		/* calculate new value */
-	strexd	ip, r2, [r4]		/* try to store */
+	adds	LO, LO, NLO		/* calculate new value */
+	adc	HI, HI, NHI		/* calculate new value */
+	strexd	ip, r0, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
 #ifdef _ARM_ARCH_7
@@ -51,7 +51,7 @@ ENTRY_NP(_atomic_add_64)
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
 	pop	{r4}			/* restore temporary */
-	RET/* return old value */
+	RET
 	END(_atomic_add_64)
 ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64)
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_and_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.3	Sat Aug 10 18:39:25 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S	Sat Aug 10 19:02:22 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64.S,v 1.3 2013/08/10 18:39:25 matt Exp $	*/
+/*	$NetBSD: atomic_and_64.S,v 1.4 2013/08/10 19:02:22 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,9 +40,9 @@ ENTRY_NP(_atomic_and_64)
 #endif
 	mov	r4, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	and	r2, r2, r0		/* calculate new value */
-	and	r3, r3, r1		/* calculate new value */
-	strexd	ip, r2, [r4]		/* try to store */
+	and	r0, r0, r2		/* calculate new value */
+	and	r1, r1, r3		/* calculate new value */
+	strexd	ip, r0, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
 #ifdef _ARM_ARCH_7
@@ -51,7 +51,7 @@ ENTRY_NP(_atomic_and_64)
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
 	pop	{r4}			/* restore temporary */
-	RET/* return old value */
+	RET
 	END(_atomic_and_64)
 ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64)
 
Index: src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.3	Sat Aug 10 18:39:07 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S	Sat Aug 10 19:02:22 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64.S,v 1.3 2013/08/10 18:39:07 matt Exp $	*/
+/*	$NetBSD: atomic_or_64.S,v 1.4 2013/08/10 19:02:22 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,9 +40,9 @@ ENTRY_NP(_atomic_or_64)
 #endif
 	mov	r4, r0			/* need r0 for return value */
 1:	ldrexd	r0, [r4]		/* load old value (to be returned) */
-	orr	r2, r2, r0		/* calculate new value */
-	orr	r3, r3, r1		/* calculate new value */
-	strexd	ip, r2, [r4]		/* try to store */
+	orr	r0, r0, r2		/* calculate new value */
+	orr	r1, r1, r3		/* calculate new value */
+	strexd	ip, r0, [r4]		/* try to store */
 	cmp	ip, #0			/*   succeed? */
 	bne	1b			/* no, try again */
 #ifdef _ARM_ARCH_7
@@ -51,7 +51,7 @@ ENTRY_NP(_atomic_or_64)
 	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
 #endif
 	pop	{r4}			/* restore temporary */
-	RET/* return old value */
+	RET
 	END(_atomic_or_64)
 ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64)
 



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 19:59:21 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_32.S atomic_add_64.S
atomic_and_32.S atomic_and_64.S atomic_cas_32.S atomic_cas_64.S
atomic_cas_8.S atomic_cas_up.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S
atomic_swap.S atomic_swap_64.S

Log Message:
Make these under Thumb2


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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/arm/atomic/atomic_add_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.3	Fri Aug 31 23:41:52 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S	Sat Aug 10 19:59:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32.S,v 1.3 2012/08/31 23:41:52 matt Exp $	*/
+/*	$NetBSD: atomic_add_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,19 +34,19 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_add_32)
-	mov	r3, r0			/* need r0 for return value */
-1:	ldrex	r0, [r3]		/* load old value (to be returned) */
-	add	r2, r0, r1		/* calculate new value */
-	strex	ip, r2, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+1:	ldrex	r3, [r0]		/* load old value */
+	add	r3, r3, r1		/* calculate new value */
+	strex	r2, r3, [r0]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET/* return old value */
-	END(_atomic_add_32)
+END(_atomic_add_32)
+
 ATOMIC_OP_ALIAS(atomic_add_32,_atomic_add_32)
 ATOMIC_OP_ALIAS(atomic_add_int,_atomic_add_32)
 ATOMIC_OP_ALIAS(atomic_add_long,_atomic_add_32)
@@ -56,16 +56,16 @@ STRONG_ALIAS(_atomic_add_long,_atomic_ad
 STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32)
 
 ENTRY_NP(_atomic_add_32_nv)
-	mov	r3, r0			/* need r0 for return value */
-1:	ldrex	r0, [r3]		/* load old value */
+	mov	ip, r0			/* need r0 for return value */
+1:	ldrex	r0, [ip]		/* load old value */
 	add	r0, r0, r1		/* calculate new value (return value) */
-	strex	r2, r0, [r3]		/* try to store */
+	strex	r2, r0, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data memory barrier */
 #endif
 	RET/* return new value */
 	END(_atomic_add_32_nv)
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4
--- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.3	Fri Aug 31 23:41:52 2012
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S	Sat Aug 10 19:59:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32.S,v 1.3 2012/08/31 23:41:52 matt Exp $	*/
+/*	$NetBSD: atomic_and_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,19 +34,19 @@
 #ifdef _ARM_ARCH_6
 
 ENTRY_NP(_atomic_and_32)
-	mov	r3, r0			/* need r0 for return value */
-1:	ldrex	r0, [r3]		/* load old value (to be returned) */
-	and	r2, r0, r1		/* calculate new value */
-	strex	ip, r2, [r3]		/* try to store */
-	cmp	ip, #0			/*   succeed? */
+1:	ldrex	r3, [r0]		/* load old value (to be returned) */
+	and	r3, r3, r1		/* calculate new value */
+	strex	r2, r3, [r0]		/* try to store */
+	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
 #ifdef _ARM_ARCH_7
 	dmb
 #else
-	mcr	p15, 0, ip, c7, c10, 5	/* data memory barrier */
+	mcr	p15, 0, r2, c7, c10, 5	/* data 

CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Aug 11 04:41:17 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_32.S atomic_add_64.S
atomic_and_32.S atomic_and_64.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S
atomic_swap.S

Log Message:
Use foo{s} since it reduces the ifdefs for thumb


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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/arm/atomic/atomic_add_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4	Sat Aug 10 19:59:21 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S	Sun Aug 11 04:41:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
+/*	$NetBSD: atomic_add_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 ENTRY_NP(_atomic_add_32)
 1:	ldrex	r3, [r0]		/* load old value */
-	add	r3, r3, r1		/* calculate new value */
+	adds	r3, r3, r1		/* calculate new value */
 	strex	r2, r3, [r0]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -58,7 +58,7 @@ STRONG_ALIAS(_atomic_add_ptr,_atomic_add
 ENTRY_NP(_atomic_add_32_nv)
 	mov	ip, r0			/* need r0 for return value */
 1:	ldrex	r0, [ip]		/* load old value */
-	add	r0, r0, r1		/* calculate new value (return value) */
+	adds	r0, r0, r1		/* calculate new value (return value) */
 	strex	r2, r0, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
Index: src/common/lib/libc/arch/arm/atomic/atomic_and_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4	Sat Aug 10 19:59:21 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S	Sun Aug 11 04:41:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
+/*	$NetBSD: atomic_and_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 ENTRY_NP(_atomic_and_32)
 1:	ldrex	r3, [r0]		/* load old value (to be returned) */
-	and	r3, r3, r1		/* calculate new value */
+	ands	r3, r3, r1		/* calculate new value */
 	strex	r2, r3, [r0]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again */
@@ -54,10 +54,10 @@ STRONG_ALIAS(_atomic_and_uint,_atomic_an
 STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32)
 
 ENTRY_NP(_atomic_and_32_nv)
-	mov	r3, r0			/* need r0 for return value */
-1:	ldrex	r0, [r3]		/* load old value */
-	and	r0, r0, r1		/* calculate new value (return value) */
-	strex	r2, r0, [r3]		/* try to store */
+	mov	ip, r0			/* need r0 for return value */
+1:	ldrex	r0, [ip]		/* load old value */
+	ands	r0, r0, r1		/* calculate new value (return value) */
+	strex	r2, r0, [ip]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
 #ifdef _ARM_ARCH_7
Index: src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.5
--- src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.4	Sat Aug 10 19:59:21 2013
+++ src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S	Sun Aug 11 04:41:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_dec_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $	*/
+/*	$NetBSD: atomic_dec_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $	*/
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -34,7 +34,7 @@
 
 ENTRY_NP(_atomic_dec_32)
 1:	ldrex	r3, [r0]		/* load old value (return value) */
-	sub	r3, r3, #1		/* calculate new value */
+	subs	r3, r3, #1		/* calculate new value */
 	strex	r2, r3, [r0]		/* try to store */
 	cmp	r2, #0			/*   succeed? */
 	bne	1b			/* no, try again? */
@@ -57,7 +57,7 @@ STRONG_ALIAS(_atomic_dec_ptr,_atomic_dec
 ENTRY_NP(_atomic_dec_32_nv)
 	mov	ip, r0			/* need r0 for 

CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:28:15 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S

Log Message:
Fix add - adds


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:32:06 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S

Log Message:
Don't adjust return of atomic_inc_64 since it's void and doesn't return
anything.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:38:33 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_swap_64.S

Log Message:
cmpne - cmp
Use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:48 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S

Log Message:
use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:07 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_or_64.S

Log Message:
use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:39:25 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_and_64.S

Log Message:
Use push/pop


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:40:19 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S

Log Message:
Use subs/sbc
Use push/pop
Don't adjust return for atomic_dec_64 since it's void and returns nothing


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 18:45:12 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S atomic_inc_64.S

Log Message:
Use r2 instead of ip


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 19:02:22 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S
atomic_or_64.S

Log Message:
Never modify NLO/NHI (r2,r3) only LO/HI (r0,r1) so subsequent loops will work.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S

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



CVS commit: src/common/lib/libc/arch/arm/atomic

2013-08-10 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 10 19:59:21 UTC 2013

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_add_32.S atomic_add_64.S
atomic_and_32.S atomic_and_64.S atomic_cas_32.S atomic_cas_64.S
atomic_cas_8.S atomic_cas_up.S atomic_dec_32.S atomic_dec_64.S
atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S
atomic_swap.S atomic_swap_64.S

Log Message:
Make these under Thumb2


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/arm/atomic/atomic_or_64.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S \
src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S

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



  1   2   >