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

2021-08-08 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Aug  8 07:17:18 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: __aarch64_lse.S

Log Message:
Whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.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/aarch64/atomic/__aarch64_lse.S
diff -u src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.1 src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.1	Tue Apr 27 09:14:24 2021
+++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S	Sun Aug  8 07:17:18 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: __aarch64_lse.S,v 1.1 2021/04/27 09:14:24 skrll Exp $ */
+/* $NetBSD: __aarch64_lse.S,v 1.2 2021/08/08 07:17:18 skrll Exp $ */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -204,4 +204,3 @@ ENTRY_NP(INSN_FUNC)
 2:	b	1b
 END(INSN_FUNC)
 #endif
-



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

2021-07-29 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 29 10:29:05 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/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_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_16.S atomic_sub_32.S atomic_sub_64.S atomic_sub_8.S
atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S
atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S

Log Message:
As we're providing the legacy gcc __sync built-in functions for atomic
memory access we might as well get the memory barriers right...
>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.1 -r1.2 \
src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_add_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_add_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_add_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_and_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_and_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_and_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_and_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_or_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_or_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_or_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_sub_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_sub_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_sub_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_xor_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_xor_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_xor_8.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S
cvs rdiff -u -r1.5 -r1.6 \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/aarch64/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/aarch64/atomic/atomic_add_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S	Thu Jul 29 10:29:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_add_16.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_add_16.S,v 1.2 2021/07/29 10:29:05 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -33,14 +33,16 @@
 
 ATOMIC_OP16(add, add)
 
+SYNC_FETCH_OP16(add, add)
+
 

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 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/aarch64/atomic

2021-07-06 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Jul  6 08:31:41 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: atomic_nand_16.S

Log Message:
One more s/pte/ptr/


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.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/aarch64/atomic/atomic_nand_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3	Sun Jul  4 06:55:47 2021
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S	Tue Jul  6 08:31:41 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_16.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
+/* $NetBSD: atomic_nand_16.S,v 1.4 2021/07/06 08:31:41 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_16)
 	mov	x4, x0
 1:	ldxrh	w0, [x4]		/* load old value (*ptr) */
 	and	w3, w0, w1		/* w3 =  (*ptr & value) */
-	mvn	w3, w3			/* w3 = ~(*pte & value) */
+	mvn	w3, w3			/* w3 = ~(*ptr & value) */
 	stxrh	w2, w3, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_16_nv)
 	mov	x4, x0			/* need r0 for return value */
 1:	ldxrh	w0, [x4]		/* load old value (*ptr) */
 	and	w0, w0, w1		/* w0 =  (*ptr & value) */
-	mvn	w0, w0			/* w0 = ~(*pte & value), return value */
+	mvn	w0, w0			/* w0 = ~(*ptr & value), return value */
 	stxrh	w2, w0, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again? */
 	ret/* return new value */



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

2021-07-05 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Jul  5 08:50:31 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: atomic_nand_32.S
atomic_nand_64.S atomic_nand_8.S

Log Message:
typo in comment s/pte/ptr/


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_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/aarch64/atomic/atomic_nand_32.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3	Sun Jul  4 06:55:47 2021
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S	Mon Jul  5 08:50:31 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_32.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
+/* $NetBSD: atomic_nand_32.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_32)
 	mov	x4, x0
 1:	ldxr	w0, [x4]		/* load old value (to be returned) */
 	and	w3, w0, w1		/* w3 =  (*ptr & value) */
-	mvn	w3, w3			/* x3 = ~(*pte & value) */
+	mvn	w3, w3			/* x3 = ~(*ptr & value) */
 	stxr	w2, w3, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_32_nv)
 	mov	x4, x0			/* need r0 for return value */
 1:	ldxr	w0, [x4]		/* load old value (*ptr) */
 	and	w0, w0, w1		/* x0 =  (*ptr & value) */
-	mvn	w0, w0			/* x0 = ~(*pte & value), return value */
+	mvn	w0, w0			/* x0 = ~(*ptr & value), return value */
 	stxr	w2, w0, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again? */
 	ret/* return new value */
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3	Sun Jul  4 06:55:47 2021
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S	Mon Jul  5 08:50:31 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_64.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
+/* $NetBSD: atomic_nand_64.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_64)
 	mov	x4, x0
 1:	ldxr	x0, [x4]		/* load old value (*ptr) */
 	and	x2, x0, x1		/* x2 =  (*ptr & value) */
-	mvn	x2, x2			/* x2 = ~(*pte & value) */
+	mvn	x2, x2			/* x2 = ~(*ptr & value) */
 	stxr	w3, x2, [x4]		/* try to store */
 	cbnz	w3, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_64_nv)
 	mov	x4, x0			/* need r0 for return value */
 1:	ldxr	x0, [x4]		/* load old value (*ptr) */
 	and	x0, x0, x1		/* x0 =  (*ptr & value) */
-	mvn	x0, x0			/* x0 = ~(*pte & value), return value */
+	mvn	x0, x0			/* x0 = ~(*ptr & value), return value */
 	stxr	w3, x0, [x4]		/* try to store */
 	cbnz	w3, 2f			/*   succeed? no, try again? */
 	ret/* return new value */
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.3	Sun Jul  4 06:55:47 2021
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S	Mon Jul  5 08:50:31 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_8.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
+/* $NetBSD: atomic_nand_8.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_8)
 	mov	x4, x0
 1:	ldxrb	w0, [x4]		/* load old value (*ptr) */
 	and	w3, w0, w1		/* w3 =  (*ptr & value) */
-	mvn	w3, w3			/* w3 = ~(*pte & value) */
+	mvn	w3, w3			/* w3 = ~(*ptr & value) */
 	stxrb	w2, w3, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -57,7 +57,7 @@ ENTRY_NP(_atomic_nand_8_nv)
 	mov	x4, x0			/* need r0 for return value */
 1:	ldxrb	w0, [x4]		/* load old value (*ptr) */
 	and	w0, w0, w1		/* w0 =  (*ptr & value) */
-	mvn	w0, w0			/* w0 = ~(*pte & value), return value */
+	mvn	w0, w0			/* w0 = ~(*ptr & value), return value */
 	stxrb	w2, w0, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again? */
 	ret/* return new value */



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

2021-07-04 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Jul  4 06:55:47 UTC 2021

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

Log Message:
Fix the logic operation for atomic_nand_{8,16,32,64}

>From the gcc docs the operations are as follows

 { tmp = *ptr; *ptr = ~(tmp & value); return tmp; }   // nand
 { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; }   // nand

yes, this is really rather strange.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_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/aarch64/atomic/atomic_nand_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S	Sun Jul  4 06:55:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_nand_16.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,11 +31,14 @@
 
 #include "atomic_op_asm.h"
 
+/*
+ * { tmp = *ptr; *ptr = ~(tmp & value); return tmp; }   // nand
+ */
 ENTRY_NP(_atomic_nand_16)
 	mov	x4, x0
-1:	ldxrh	w0, [x4]		/* load old value (to be returned) */
-	mvn	w3, w0			/* complement source */
-	and	w3, w3, w1		/* calculate new value */
+1:	ldxrh	w0, [x4]		/* load old value (*ptr) */
+	and	w3, w0, w1		/* w3 =  (*ptr & value) */
+	mvn	w3, w3			/* w3 = ~(*pte & value) */
 	stxrh	w2, w3, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -47,11 +50,15 @@ ATOMIC_OP_ALIAS(atomic_nand_ushort,_atom
 STRONG_ALIAS(__sync_fetch_and_nand_2,_atomic_nand_16)
 STRONG_ALIAS(_atomic_nand_ushort,_atomic_nand_16)
 
+
+/*
+ * { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; }   // nand
+ */
 ENTRY_NP(_atomic_nand_16_nv)
 	mov	x4, x0			/* need r0 for return value */
-1:	ldxrh	w0, [x4]		/* load old value */
-	mvn	w0, w0			/* complement source */
-	and	w0, w0, w1		/* calculate new value (return value) */
+1:	ldxrh	w0, [x4]		/* load old value (*ptr) */
+	and	w0, w0, w1		/* w0 =  (*ptr & value) */
+	mvn	w0, w0			/* w0 = ~(*pte & value), return value */
 	stxrh	w2, w0, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again? */
 	ret/* return new value */
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S	Sun Jul  4 06:55:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_nand_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_nand_32.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,11 +31,14 @@
 
 #include "atomic_op_asm.h"
 
+/*
+ * { tmp = *ptr; *ptr = ~(tmp & value); return tmp; }   // nand
+ */
 ENTRY_NP(_atomic_nand_32)
 	mov	x4, x0
 1:	ldxr	w0, [x4]		/* load old value (to be returned) */
-	mvn	w3, w0			/* complement source */
-	and	w3, w3, w1		/* calculate new value */
+	and	w3, w0, w1		/* w3 =  (*ptr & value) */
+	mvn	w3, w3			/* x3 = ~(*pte & value) */
 	stxr	w2, w3, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again */
 	ret/* return old value */
@@ -47,11 +50,15 @@ ATOMIC_OP_ALIAS(atomic_nand_uint,_atomic
 STRONG_ALIAS(__sync_fetch_and_nand_4,_atomic_nand_32)
 STRONG_ALIAS(_atomic_nand_uint,_atomic_nand_32)
 
+
+/*
+ * { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; }   // nand
+ */
 ENTRY_NP(_atomic_nand_32_nv)
 	mov	x4, x0			/* need r0 for return value */
-1:	ldxr	w0, [x4]		/* load old value */
-	mvn	w0, w0			/* complement source */
-	and	w0, w0, w1		/* calculate new value (return value) */
+1:	ldxr	w0, [x4]		/* load old value (*ptr) */
+	and	w0, w0, w1		/* x0 =  (*ptr & value) */
+	mvn	w0, w0			/* x0 = ~(*pte & value), return value */
 	stxr	w2, w0, [x4]		/* try to store */
 	cbnz	w2, 2f			/*   succeed? no, try again? */
 	ret/* return new value */
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.2	Wed Aug 12 12:59:57 2020
+++ 

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-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-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:   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/mips/atomic

2021-04-25 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Apr 25 22:45:16 UTC 2021

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

Log Message:
use ${MACHINE_MIPS64}


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/mips/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/mips/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.15
--- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14	Wed Feb 27 21:35:37 2019
+++ src/common/lib/libc/arch/mips/atomic/Makefile.inc	Sun Apr 25 18:45:16 2021
@@ -1,9 +1,9 @@
-#	$NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $
+#	$NetBSD: Makefile.inc,v 1.15 2021/04/25 22:45:16 christos Exp $
 
 .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
 	|| ${LIB} == "rump")
 
-.if ${MACHINE_ARCH:Mmips64*} == ""
+.if !${MACHINE_MIPS64}
 SRCS+=	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 \
@@ -30,7 +30,7 @@ SRCS+=	membar_ops.S
 
 .if defined(LIB) && (${LIB} == "c" || ${LIB} == "pthread")
 
-.if ${MACHINE_ARCH:Mmips64*} == ""
+.if !${MACHINE_MIPS64}
 SRCS+=	atomic_init_testset.c atomic_cas_up.S
 .else
 SRCS+=	atomic_cas.S atomic_init_cas.c atomic_cas_by_cas32.c



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/aarch64/atomic

2021-04-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Apr 21 16:23:47 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: Makefile.inc atomic_swap_16.S
atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S
Added Files:
src/common/lib/libc/arch/aarch64/atomic: __aarch64_swp1_acq.S
__aarch64_swp1_acq_rel.S __aarch64_swp1_rel.S
__aarch64_swp1_relax.S __aarch64_swp2_acq.S
__aarch64_swp2_acq_rel.S __aarch64_swp2_rel.S
__aarch64_swp2_relax.S __aarch64_swp4_acq.S
__aarch64_swp4_acq_rel.S __aarch64_swp4_rel.S
__aarch64_swp4_relax.S __aarch64_swp8_acq.S
__aarch64_swp8_acq_rel.S __aarch64_swp8_rel.S
__aarch64_swp8_relax.S
Removed Files:
src/common/lib/libc/arch/aarch64/atomic: atomic_swap_acq_16.S
atomic_swap_acq_32.S atomic_swap_acq_64.S atomic_swap_acq_8.S
atomic_swap_acq_rel_16.S atomic_swap_acq_rel_32.S
atomic_swap_acq_rel_64.S atomic_swap_acq_rel_8.S
atomic_swap_rel_16.S atomic_swap_rel_32.S atomic_swap_rel_64.S
atomic_swap_rel_8.S

Log Message:
Do previous differently as the API is different.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc
cvs rdiff -u -r0 -r1.1 \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S \
src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S
cvs rdiff -u -r1.1 -r0 \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_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/aarch64/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.3
--- src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2	Wed Apr 21 07:31:37 2021
+++ src/common/lib/libc/arch/aarch64/atomic/Makefile.inc	Wed Apr 21 16:23:47 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.2 2021/04/21 07:31:37 skrll Exp $
+# $NetBSD: Makefile.inc,v 1.3 2021/04/21 16:23:47 skrll Exp $
 
 .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
 	|| ${LIB} == "rump")
@@ -12,10 +12,10 @@ SRCS.atomic+=	atomic_dec_32.S atomic_dec
 SRCS.atomic+=	atomic_inc_32.S atomic_inc_64.S
 SRCS.atomic+=	membar_ops.S
 #and cas nand or sub swap xor
-.for op in swap
-.for sz in 8 16 32 64
-.for ar in acq rel acq_rel
-SRCS.atomic+=	atomic_${op}_${ar}_${sz}.S
+.for op in swp
+.for sz in 1 2 4 8
+.for ar in relax acq rel acq_rel
+SRCS.atomic+=	__aarch64_${op}${sz}_${ar}.S
 .endfor
 .endfor
 .endfor

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3	Wed Apr 21 07:31:37 2021

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

2021-04-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Apr 21 07:31:38 UTC 2021

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: Makefile.inc atomic_swap_16.S
atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S
Added Files:
src/common/lib/libc/arch/aarch64/atomic: atomic_swap_acq_16.S
atomic_swap_acq_32.S atomic_swap_acq_64.S atomic_swap_acq_8.S
atomic_swap_acq_rel_16.S atomic_swap_acq_rel_32.S
atomic_swap_acq_rel_64.S atomic_swap_acq_rel_8.S
atomic_swap_rel_16.S atomic_swap_rel_32.S atomic_swap_rel_64.S
atomic_swap_rel_8.S

Log Message:
Provide some more operations that are part of compiler lse.S.  This is
incomplete, but at least covers all the atomic_swap ops and allows the
aa64 kernel to link with gcc 10.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S
cvs rdiff -u -r0 -r1.1 \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_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/aarch64/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.1 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2
--- src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/Makefile.inc	Wed Apr 21 07:31:37 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.1 2014/08/10 05:47:35 matt Exp $
+# $NetBSD: Makefile.inc,v 1.2 2021/04/21 07:31:37 skrll Exp $
 
 .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
 	|| ${LIB} == "rump")
@@ -11,6 +11,14 @@ SRCS.atomic+=	atomic_${op}_${sz}.S
 SRCS.atomic+=	atomic_dec_32.S atomic_dec_64.S
 SRCS.atomic+=	atomic_inc_32.S atomic_inc_64.S
 SRCS.atomic+=	membar_ops.S
+#and cas nand or sub swap xor
+.for op in swap
+.for sz in 8 16 32 64
+.for ar in acq rel acq_rel
+SRCS.atomic+=	atomic_${op}_${ar}_${sz}.S
+.endfor
+.endfor
+.endfor
 #.for op in add and nand or sub xor
 #SRCS.atomic+=	sync_fetch_and_${op}_8.S
 #.endfor

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S	Wed Apr 21 07:31:37 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_swap_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_swap_16.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -43,6 +43,7 @@ END(_atomic_swap_16)
 ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16)
 ATOMIC_OP_ALIAS(atomic_swap_short,_atomic_swap_16)
 ATOMIC_OP_ALIAS(atomic_swap_ushort,_atomic_swap_16)
+ATOMIC_OP_ALIAS(__aarch64_swp2_relax,_atomic_swap_16)
 STRONG_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16)
 STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16)
 STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16)
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S	Wed Apr 21 07:31:37 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_swap_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_swap_32.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -42,6 +42,7 @@ END(_atomic_swap_32)
 
 ATOMIC_OP_ALIAS(atomic_swap_32,_atomic_swap_32)
 ATOMIC_OP_ALIAS(atomic_swap_uint,_atomic_swap_32)
+ATOMIC_OP_ALIAS(__aarch64_swp4_relax,_atomic_swap_32)
 

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

2020-12-11 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Fri Dec 11 09:02:33 UTC 2020

Modified Files:
src/common/lib/libc/arch/arm/gen: byte_swap_4.S

Log Message:
arm bswap32: fix fatal typo in thumb code (PR 55854)


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/gen/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.9
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8	Wed Dec  9 02:46:57 2020
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Fri Dec 11 09:02:33 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.9 2020/12/11 09:02:33 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@ ENTRY(FUNC)
 	eor	r0, r0, r1, lsr #8	/* a.d.c.b ^ 0.db.0.db -> a.b.c.d */
 #else
 	movs	r3, #16
-	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 /*
+	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 */
 	lsrs	r0, r0, #8		/* d.c.b.a -> 0.d.c.b */
 	rors	r1, r3			/* c.b.a.0 -> a.0.c.b */
 	rors	r0, r3			/* 0.d.c.b -> c.b.0.d */



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

2020-12-08 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Wed Dec  9 02:46:57 UTC 2020

Modified Files:
src/common/lib/libc/arch/arm/gen: byte_swap_4.S

Log Message:
arm bswap32: Improve the comments showing the byte flow.

It's confusing to use 1-4 for bytes 1-4 and then 0 for literal zero,
so use a-d for bytes 1-4.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.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/gen/byte_swap_4.S
diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8
--- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7	Mon Aug 19 03:44:47 2013
+++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S	Wed Dec  9 02:46:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_4.S,v 1.7 2013/08/19 03:44:47 matt Exp $	*/
+/*	$NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -40,21 +40,21 @@ ENTRY(FUNC)
 #ifdef _ARM_ARCH_6
 	rev	r0, r0
 #elif !defined(__thumb__)
-	eor	r1, r0, r0, ror #16	/* 4.3.2.1 -> 42.31.42.31 */
-	bic	r1, r1, #0x00FF	/* 42.31.42.31 -> 42.0.42.31 */
-	mov	r0, r0, ror #8		/* 4.3.2.1 -> 1.4.3.2 */
-	eor	r0, r0, r1, lsr #8	/* 1.4.3.2 ^ 0.42.0.42 -> 1.2.3.4 */
+	eor	r1, r0, r0, ror #16	/* d.c.b.a -> db.ca.db.ca */
+	bic	r1, r1, #0x00FF	/* db.ca.db.ca -> db.0.db.ca */
+	mov	r0, r0, ror #8		/* d.c.b.a -> a.d.c.b */
+	eor	r0, r0, r1, lsr #8	/* a.d.c.b ^ 0.db.0.db -> a.b.c.d */
 #else
 	movs	r3, #16
-	lsls	r1, r0, #8		/* 4.3.2.1 -> 3.2.1.0 /*
-	lsrs	r0, r0, #8		/* 4.3.2.1 -> 0.4.3.2 */
-	rors	r1, r3			/* 3.2.1.0 -> 1.0.3.2 */
-	rors	r0, r3			/* 0.4.3.2 -> 3.2.0.4 */
-	lsrs	r1, r1, #8		/* 1.0.3.2 -> 0.1.0.3 */
-	lsls	r1, r1, #8		/* 0.1.0.3 -> 1.0.3.0 */
-	lsls	r0, r0, #8		/* 3.2.0.4 -> 2.0.4.0 */
-	lsrs	r0, r0, #8		/* 2.0.4.0 -> 0.2.0.4 */
-	orrs	r0, r0, r1		/* 1.0.3.0 | 0.2.0.4 -> 1.2.3.4 */
+	lsls	r1, r0, #8		/* d.c.b.a -> c.b.a.0 /*
+	lsrs	r0, r0, #8		/* d.c.b.a -> 0.d.c.b */
+	rors	r1, r3			/* c.b.a.0 -> a.0.c.b */
+	rors	r0, r3			/* 0.d.c.b -> c.b.0.d */
+	lsrs	r1, r1, #8		/* a.0.c.b -> 0.a.0.c */
+	lsls	r1, r1, #8		/* 0.a.0.c -> a.0.c.0 */
+	lsls	r0, r0, #8		/* c.b.0.d -> b.0.d.0 */
+	lsrs	r0, r0, #8		/* b.0.d.0 -> 0.b.0.d */
+	orrs	r0, r0, r1		/* a.0.c.0 | 0.b.0.d -> a.b.c.d */
 #endif
 	RET
 END(FUNC)



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

2020-10-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Oct 13 21:22:12 UTC 2020

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

Log Message:
Use the correct barriers - all of membar_{sync,producer,consumer} have
less scope than before.

LGTM from riastradh


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/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/aarch64/atomic/membar_ops.S
diff -u src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.1 src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/membar_ops.S	Tue Oct 13 21:22:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: membar_ops.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: membar_ops.S,v 1.2 2020/10/13 21:22:12 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,24 +32,28 @@
 #include "atomic_op_asm.h"
 
 ENTRY_NP(_membar_producer)
-	dsb	sy
+	dmb	ishst
 	ret
 END(_membar_producer)
 ATOMIC_OP_ALIAS(membar_producer,_membar_producer)
 ATOMIC_OP_ALIAS(membar_write,_membar_producer)
 STRONG_ALIAS(_membar_write,_membar_producer)
 
+ENTRY_NP(_membar_consumer)
+	dmb	ishld
+	ret
+END(_membar_producer)
+ATOMIC_OP_ALIAS(membar_consumer,_membar_consumer)
+ATOMIC_OP_ALIAS(membar_read,_membar_consumer)
+STRONG_ALIAS(_membar_read,_membar_consumer)
+
 ENTRY_NP(_membar_sync)
-	dmb	sy
+	dmb	ish
 	ret
 END(_membar_sync)
 ATOMIC_OP_ALIAS(membar_sync,_membar_sync)
 ATOMIC_OP_ALIAS(membar_enter,_membar_sync)
 ATOMIC_OP_ALIAS(membar_exit,_membar_sync)
-ATOMIC_OP_ALIAS(membar_consumer,_membar_sync)
-ATOMIC_OP_ALIAS(membar_read,_membar_sync)
 STRONG_ALIAS(__sync_synchronize,_membar_sync)
 STRONG_ALIAS(_membar_enter,_membar_sync)
 STRONG_ALIAS(_membar_exit,_membar_sync)
-STRONG_ALIAS(_membar_consumer,_membar_sync)
-STRONG_ALIAS(_membar_read,_membar_sync)



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

2020-10-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Oct 13 21:17:35 UTC 2020

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

Log Message:
Remove memory barriers from the atomic ops macros in the same way as was
done for the other atomic ops earlier.


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

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

Modified files:

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.5
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4	Wed Oct  7 07:34:29 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Tue Oct 13 21:17:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.4 2020/10/07 07:34:29 skrll Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.5 2020/10/13 21:17:35 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -41,7 +41,6 @@ ENTRY_NP(_atomic_##OP##_8)		;\
 	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxrb	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
 	ret/* return old value */		;\
 END(_atomic_##OP##_8)
 
@@ -52,7 +51,6 @@ ENTRY_NP(_atomic_##OP##_8_nv)		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxrb	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_8_nv)
 
@@ -63,7 +61,6 @@ ENTRY_NP(_atomic_##OP##_16)		;\
 	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxrh	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
 	ret/* return old value */		;\
 END(_atomic_##OP##_16)
 
@@ -74,7 +71,6 @@ ENTRY_NP(_atomic_##OP##_16_nv)		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxrh	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_16_nv)
 
@@ -85,7 +81,6 @@ ENTRY_NP(_atomic_##OP##_32)		;\
 	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxr	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
 	ret/* return old value */		;\
 END(_atomic_##OP##_32)
 
@@ -96,7 +91,6 @@ ENTRY_NP(_atomic_##OP##_32_nv)		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxr	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again? */	;\
-	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_32_nv)
 
@@ -107,7 +101,6 @@ ENTRY_NP(_atomic_##OP##_64)		;\
 	INSN	x2, x0, x1		/* calculate new value */	;\
 	stxr	w3, x2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
 	ret/* return old value */		;\
 END(_atomic_##OP##_64)
 
@@ -118,7 +111,6 @@ ENTRY_NP(_atomic_##OP##_64_nv)		;\
 	INSN	x0, x0, x1		/* calc new (return) value */	;\
 	stxr	w3, x0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again? */	;\
-	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_64_nv)
 



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

2020-10-07 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Oct  7 07:34:30 UTC 2020

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

Log Message:
Comment nit


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

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

Modified files:

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3	Fri Feb  8 06:56:56 2019
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Wed Oct  7 07:34:29 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.3 2019/02/08 06:56:56 ryo Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.4 2020/10/07 07:34:29 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -47,7 +47,7 @@ END(_atomic_##OP##_8)
 
 #define	ATOMIC_OP8_NV(OP, INSN)		\
 ENTRY_NP(_atomic_##OP##_8_nv)		;\
-	mov	x4, x0			/* need r0 for return value */	;\
+	mov	x4, x0			/* need x0 for return value */	;\
 1:	ldxrb	w0, [x4]		/* load old value */		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxrb	w3, w0, [x4]		/* try to store */		;\
@@ -69,7 +69,7 @@ END(_atomic_##OP##_16)
 
 #define	ATOMIC_OP16_NV(OP, INSN)	\
 ENTRY_NP(_atomic_##OP##_16_nv)		;\
-	mov	x4, x0			/* need r0 for return value */	;\
+	mov	x4, x0			/* need x0 for return value */	;\
 1:	ldxrh	w0, [x4]		/* load old value */		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxrh	w3, w0, [x4]		/* try to store */		;\
@@ -91,7 +91,7 @@ END(_atomic_##OP##_32)
 
 #define	ATOMIC_OP32_NV(OP, INSN)	\
 ENTRY_NP(_atomic_##OP##_32_nv)		;\
-	mov	x4, x0			/* need r0 for return value */	;\
+	mov	x4, x0			/* need x0 for return value */	;\
 1:	ldxr	w0, [x4]		/* load old value */		;\
 	INSN	w0, w0, w1		/* calc new (return) value */	;\
 	stxr	w3, w0, [x4]		/* try to store */		;\
@@ -113,7 +113,7 @@ END(_atomic_##OP##_64)
 
 #define	ATOMIC_OP64_NV(OP, INSN)	\
 ENTRY_NP(_atomic_##OP##_64_nv)		;\
-	mov	x4, x0			/* need r0 for return value */	;\
+	mov	x4, x0			/* need x0 for return value */	;\
 1:	ldxr	x0, [x4]		/* load old value */		;\
 	INSN	x0, x0, x1		/* calc new (return) value */	;\
 	stxr	w3, x0, [x4]		/* try to store */		;\



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

2020-10-07 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Oct  7 07:31:47 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: atomic_cas_16.S
atomic_cas_32.S atomic_cas_64.S atomic_cas_8.S

Log Message:
Comment nit


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S
cvs rdiff -u -r1.4 -r1.5 \
src/common/lib/libc/arch/aarch64/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/aarch64/atomic/atomic_cas_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S	Wed Oct  7 07:31:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_cas_16.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "atomic_op_asm.h"
 
 ENTRY_NP(_atomic_cas_16)
-	mov	x4, x0			/* we need r0 for return value */
+	mov	x4, x0			/* we need x0 for return value */
 1:	ldxrh	w0, [x4]		/* load old value */
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S	Wed Oct  7 07:31:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_cas_32.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "atomic_op_asm.h"
 
 ENTRY_NP(_atomic_cas_32)
-	mov	x4, x0			/* we need r0 for return value */
+	mov	x4, x0			/* we need x0 for return value */
 1:	ldxr	w0, [x4]		/* load old value */
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f			/* return if different */
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S	Wed Oct  7 07:31:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_8.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_cas_8.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "atomic_op_asm.h"
 
 ENTRY_NP(_atomic_cas_8)
-	mov	x4, x0			/* we need r0 for return value */
+	mov	x4, x0			/* we need x0 for return value */
 1:	ldxrb	w0, [x4]		/* load old value */
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.4 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.5
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.4	Wed Aug 12 12:59:57 2020
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S	Wed Oct  7 07:31:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_64.S,v 1.4 2020/08/12 12:59:57 skrll Exp $ */
+/* $NetBSD: atomic_cas_64.S,v 1.5 2020/10/07 07:31:47 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "atomic_op_asm.h"
 
 ENTRY_NP(_atomic_cas_64)
-	mov	x4, x0			/* we need r0 for return value */
+	mov	x4, x0			/* we need x0 for return value */
 1:	ldxr	x0, [x4]		/* load old value */
 	cmp	x0, x1			/*   compare? */
 	b.ne	2f			/* return if different */



CVS commit: src/common/lib/libc/arch/aarch64/string

2020-09-09 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Wed Sep  9 14:49:27 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/string: strlen.S

Log Message:
Re-do previous aarch64eb strlen fix more simply and correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/aarch64/string/strlen.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/aarch64/string/strlen.S
diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.4 src/common/lib/libc/arch/aarch64/string/strlen.S:1.5
--- src/common/lib/libc/arch/aarch64/string/strlen.S:1.4	Sat Sep  5 20:24:43 2020
+++ src/common/lib/libc/arch/aarch64/string/strlen.S	Wed Sep  9 14:49:27 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $ */
+/* $NetBSD: strlen.S,v 1.5 2020/09/09 14:49:27 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $")
+RCSID("$NetBSD: strlen.S,v 1.5 2020/09/09 14:49:27 jakllsch Exp $")
 
 #ifdef STRNLEN
 #define FUNCNAME	strnlen
@@ -66,12 +66,11 @@ ENTRY(FUNCNAME)
 	 */
 	add	x4, x4, x0		/* make dword aligned */
 	ldr	x7, [x4], #8		/* load dword */
-	lsl	x3, x3, #3		/* convert bytes to bits */
 #ifdef __AARCH64EB__
-	lsr	x5, x11, x3		/* make mask for BE */
-#else
-	lsl	x5, x11, x3		/* make mask for LE */
+	rev	x7, x7			/* convert to LE */
 #endif
+	lsl	x3, x3, #3		/* convert bytes to bits */
+	lsl	x5, x11, x3		/* make mask for LE */
 	eor	x5, x5, x11		/* invert mask */
 	orr	x7, x7, x5		/* prevent NULs */
 	b	.Lstrlen_dword_loop_noload
@@ -82,6 +81,9 @@ ENTRY(FUNCNAME)
 	b.hs	.Lstrlen_done
 #endif
 	ldr	x7, [x4], #8		/* load dword */
+#ifdef __AARCH64EB__
+	rev	x7, x7			/* convert to LE */
+#endif
 .Lstrlen_dword_loop_noload:
 	/*
 	 * Use the formula (X - 1) & ~(X | 0x7f) to find NUL bytes.
@@ -96,14 +98,6 @@ ENTRY(FUNCNAME)
 	/*
 	 * We know there is a NUL in this dword.  Use clz to find it.
 	 */
-#ifdef __AARCH64EB__
-	/* avoid BE problem due to carry propagation if last non-NUL is \x01 */
-	ldr	x7, [x4, #-8]		/* reload dword */
-	rev	x7, x7			/* byte swap */
-	sub	x6, x7, x11		/* a = X - 1 */
-	orr	x7, x7, #MASK8_0x7f	/* b = X | 0x7f */
-	bic	x6, x6, x7		/* a & ~b */
-#endif
 	rev	x6, x6			/* convert to BE */
 	clz	x6, x6			/* find null byte */
 	add	x0, x0, x6, lsr #3	/* add offset to the length */



CVS commit: src/common/lib/libc/arch/aarch64/string

2020-09-05 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Sat Sep  5 20:24:43 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/string: strlen.S

Log Message:
Fix a broken corner case of strlen()/strnlen() on aarch64eb

Previously a string such as "\x1\x1\x1\x1\x1\x1\x1" would count as
0 instead of 7 on BE.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/aarch64/string/strlen.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/aarch64/string/strlen.S
diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.3 src/common/lib/libc/arch/aarch64/string/strlen.S:1.4
--- src/common/lib/libc/arch/aarch64/string/strlen.S:1.3	Wed Aug  1 17:09:26 2018
+++ src/common/lib/libc/arch/aarch64/string/strlen.S	Sat Sep  5 20:24:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $ */
+/* $NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $")
+RCSID("$NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $")
 
 #ifdef STRNLEN
 #define FUNCNAME	strnlen
@@ -96,9 +96,15 @@ ENTRY(FUNCNAME)
 	/*
 	 * We know there is a NUL in this dword.  Use clz to find it.
 	 */
-#ifdef __AARCH64EL__
-	rev	x6, x6			/* convert to BE */
+#ifdef __AARCH64EB__
+	/* avoid BE problem due to carry propagation if last non-NUL is \x01 */
+	ldr	x7, [x4, #-8]		/* reload dword */
+	rev	x7, x7			/* byte swap */
+	sub	x6, x7, x11		/* a = X - 1 */
+	orr	x7, x7, #MASK8_0x7f	/* b = X | 0x7f */
+	bic	x6, x6, x7		/* a & ~b */
 #endif
+	rev	x6, x6			/* convert to BE */
 	clz	x6, x6			/* find null byte */
 	add	x0, x0, x6, lsr #3	/* add offset to the length */
 



CVS commit: src/common/lib/libc/arch/aarch64/gen

2020-09-03 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Thu Sep  3 16:45:50 UTC 2020

Removed Files:
src/common/lib/libc/arch/aarch64/gen: clzdi2.S ctzdi2.S ffsdi2.S

Log Message:
Remove unused assembly source files


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r0 src/common/lib/libc/arch/aarch64/gen/clzdi2.S
cvs rdiff -u -r1.1 -r0 src/common/lib/libc/arch/aarch64/gen/ctzdi2.S \
src/common/lib/libc/arch/aarch64/gen/ffsdi2.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/aarch64/gen

2020-09-02 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Wed Sep  2 15:43:06 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/gen: clzdi2.S

Log Message:
Fix typo/pasteo in aarch64 clzdi2() END()


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/gen/clzdi2.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/aarch64/gen/clzdi2.S
diff -u src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.1 src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.2
--- src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/gen/clzdi2.S	Wed Sep  2 15:43:06 2020
@@ -1,10 +1,10 @@
-/* $NetBSD: clzdi2.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: clzdi2.S,v 1.2 2020/09/02 15:43:06 jakllsch Exp $ */
 
 #include 
 
-RCSID("$NetBSD: clzdi2.S,v 1.1 2014/08/10 05:47:35 matt Exp $")
+RCSID("$NetBSD: clzdi2.S,v 1.2 2020/09/02 15:43:06 jakllsch Exp $")
 
 ENTRY(clzdi2)
 	clz	x0, x0
 	ret
-END(clsdi2)
+END(clzdi2)



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

2020-08-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Aug 12 12:59:57 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/atomic: 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_swap_16.S
atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S

Log Message:
Part I of ad@'s performance improvements for aarch64

- Remove memory barriers from the atomic ops.  I don't understand why those
  are there.  Is it some architectural thing, or for a CPU bug, or just
  over-caution maybe?  They're not needed for correctness.

- Have unlikely conditional branches go forwards to help the static branch
  predictor.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \
src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S
cvs rdiff -u -r1.3 -r1.4 \
src/common/lib/libc/arch/aarch64/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/aarch64/atomic/atomic_cas_16.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S	Wed Aug 12 12:59:57 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_16.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_cas_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_16)
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f
 	stxrh	w3, w2, [x4]		/* store new value */
-	cbnz	w3, 1b			/*   succeed? nope, try again. */
-	dmb	st			/* data memory barrier */
+	cbnz	w3, 3f			/*   succeed? nope, try again. */
 2:	ret/* return. */
+3:	b	1b
 END(_atomic_cas_16)
 
 ATOMIC_OP_ALIAS(atomic_cas_16,_atomic_cas_16)
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S	Wed Aug 12 12:59:57 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_32.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_cas_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_32)
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f			/* return if different */
 	stxr	w3, w2, [x4]		/* store new value */
-	cbnz	w3, 1b			/*   succeed? nope, try again. */
-	dmb	st
+	cbnz	w3, 3f			/*   succeed? nope, try again. */
 2:	ret/* return. */
+3:	b	1b
 END(_atomic_cas_32)
 
 ATOMIC_OP_ALIAS(atomic_cas_32,_atomic_cas_32)
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S	Wed Aug 12 12:59:57 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_8.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_cas_8.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_8)
 	cmp	w0, w1			/*   compare? */
 	b.ne	2f
 	stxrb	w3, w2, [x4]		/* store new value */
-	cbnz	w3, 1b			/*   succeed? nope, try again. */
-	dmb	st			/* data memory barrier */
+	cbnz	w3, 3f			/*   succeed? nope, try again. */
 2:	ret/* return. */
+3:	b	1b
 END(_atomic_cas_8)
 
 ATOMIC_OP_ALIAS(atomic_cas_8,_atomic_cas_8)
Index: src/common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S
diff -u 

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

2020-08-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug  1 09:26:49 UTC 2020

Modified Files:
src/common/lib/libc/arch/mips/atomic: atomic_add.S atomic_and.S
atomic_cas.S atomic_cas_up.S atomic_dec.S atomic_inc.S
atomic_op_asm.h atomic_or.S atomic_swap.S membar_ops.S

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/atomic/atomic_add.S \
src/common/lib/libc/arch/mips/atomic/atomic_dec.S \
src/common/lib/libc/arch/mips/atomic/atomic_inc.S \
src/common/lib/libc/arch/mips/atomic/atomic_swap.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_and.S \
src/common/lib/libc/arch/mips/atomic/atomic_or.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/mips/atomic/atomic_cas.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/atomic/atomic_cas_up.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/atomic/atomic_op_asm.h
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/mips/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/mips/atomic/atomic_add.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.6
--- src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5	Mon Jun  1 23:16:54 2015
+++ src/common/lib/libc/arch/mips/atomic/atomic_add.S	Sat Aug  1 09:26:49 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
+/*	$NetBSD: atomic_add.S,v 1.6 2020/08/01 09:26:49 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -12,7 +12,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
@@ -29,7 +29,7 @@
 #include 
 #include "atomic_op_asm.h"
 
-RCSID("$NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $")
+RCSID("$NetBSD: atomic_add.S,v 1.6 2020/08/01 09:26:49 skrll Exp $")
 
 	.text
 	.set	noreorder
Index: src/common/lib/libc/arch/mips/atomic/atomic_dec.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.6
--- src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5	Mon Jun  1 23:16:54 2015
+++ src/common/lib/libc/arch/mips/atomic/atomic_dec.S	Sat Aug  1 09:26:49 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
+/*	$NetBSD: atomic_dec.S,v 1.6 2020/08/01 09:26:49 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -12,7 +12,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
@@ -29,7 +29,7 @@
 #include 
 #include "atomic_op_asm.h"
 
-RCSID("$NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $")
+RCSID("$NetBSD: atomic_dec.S,v 1.6 2020/08/01 09:26:49 skrll Exp $")
 
 	.text
 	.set	noreorder
Index: src/common/lib/libc/arch/mips/atomic/atomic_inc.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.6
--- src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5	Mon Jun  1 23:16:54 2015
+++ src/common/lib/libc/arch/mips/atomic/atomic_inc.S	Sat Aug  1 09:26:49 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
+/*	$NetBSD: atomic_inc.S,v 1.6 2020/08/01 09:26:49 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -12,7 +12,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
@@ -29,7 +29,7 @@
 #include 
 #include "atomic_op_asm.h"
 
-RCSID("$NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $")
+RCSID("$NetBSD: atomic_inc.S,v 1.6 2020/08/01 09:26:49 skrll Exp $")
 
 	.text
 	.set	noreorder
Index: 

CVS commit: src/common/lib/libc/arch/m68k/gen

2020-05-31 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sun May 31 12:37:07 UTC 2020

Modified Files:
src/common/lib/libc/arch/m68k/gen: muldi3.S

Log Message:
Fix typo in comment.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/m68k/gen/muldi3.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/m68k/gen/muldi3.S
diff -u src/common/lib/libc/arch/m68k/gen/muldi3.S:1.1 src/common/lib/libc/arch/m68k/gen/muldi3.S:1.2
--- src/common/lib/libc/arch/m68k/gen/muldi3.S:1.1	Sun May 31 11:43:37 2020
+++ src/common/lib/libc/arch/m68k/gen/muldi3.S	Sun May 31 12:37:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: muldi3.S,v 1.1 2020/05/31 11:43:37 rin Exp $	*/
+/*	$NetBSD: muldi3.S,v 1.2 2020/05/31 12:37:07 rin Exp $	*/
 
 /*
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: muldi3.S,v 1.1 2020/05/31 11:43:37 rin Exp $")
+RCSID("$NetBSD: muldi3.S,v 1.2 2020/05/31 12:37:07 rin Exp $")
 
 | int64_t __muldi3(int64_t X, int64_t Y);
 |
@@ -110,6 +110,6 @@ ENTRY(__muldi3)
 	addl	%d2, %d0	| E += C
 	addl	%d3, %d0	| %d0 = E + F
 
-	moveml	(%sp)+, %d2-%d4	| pop %d2-%d6
+	moveml	(%sp)+, %d2-%d4	| pop %d2-%d4
 	rts
 END(__muldi3)



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

2020-04-26 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Sun Apr 26 13:59:44 UTC 2020

Modified Files:
src/common/lib/libc/arch/i386/atomic: atomic.S
src/common/lib/libc/arch/x86_64/atomic: atomic.S

Log Message:
Remove unused argument in macro.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/common/lib/libc/arch/i386/atomic/atomic.S
cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/x86_64/atomic/atomic.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/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.26 src/common/lib/libc/arch/i386/atomic/atomic.S:1.27
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.26	Sun Apr 26 13:54:02 2020
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Sun Apr 26 13:59:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.26 2020/04/26 13:54:02 maxv Exp $	*/
+/*	$NetBSD: atomic.S,v 1.27 2020/04/26 13:59:44 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -45,10 +45,10 @@
 #ifdef _HARDKERNEL
 #include "opt_xen.h"
 #include 
-#define	LOCK(n)		HOTPATCH(HP_NAME_NOLOCK, 1); lock
+#define	LOCK		HOTPATCH(HP_NAME_NOLOCK, 1); lock
 #define	ENDLABEL(a)	_ALIGN_TEXT; LABEL(a)
 #else
-#define	LOCK(n)		lock
+#define	LOCK		lock
 #define	ENDLABEL(a)	/* nothing */
 #endif
 
@@ -57,7 +57,7 @@
 ENTRY(_atomic_add_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
-	LOCK(1)
+	LOCK
 	addl	%eax, (%edx)
 	ret
 END(_atomic_add_32)
@@ -66,7 +66,7 @@ ENTRY(_atomic_add_32_nv)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
 	movl	%eax, %ecx
-	LOCK(2)
+	LOCK
 	xaddl	%eax, (%edx)
 	addl	%ecx, %eax
 	ret
@@ -75,7 +75,7 @@ END(_atomic_add_32_nv)
 ENTRY(_atomic_and_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
-	LOCK(3)
+	LOCK
 	andl	%eax, (%edx)
 	ret
 END(_atomic_and_32)
@@ -86,7 +86,7 @@ ENTRY(_atomic_and_32_nv)
 0:
 	movl	%eax, %ecx
 	andl	8(%esp), %ecx
-	LOCK(4)
+	LOCK
 	cmpxchgl %ecx, (%edx)
 	jnz	1f
 	movl	%ecx, %eax
@@ -97,7 +97,7 @@ END(_atomic_and_32_nv)
 
 ENTRY(_atomic_dec_32)
 	movl	4(%esp), %edx
-	LOCK(5)
+	LOCK
 	decl	(%edx)
 	ret
 END(_atomic_dec_32)
@@ -105,7 +105,7 @@ END(_atomic_dec_32)
 ENTRY(_atomic_dec_32_nv)
 	movl	4(%esp), %edx
 	movl	$-1, %eax
-	LOCK(6)
+	LOCK
 	xaddl	%eax, (%edx)
 	decl	%eax
 	ret
@@ -113,7 +113,7 @@ END(_atomic_dec_32_nv)
 
 ENTRY(_atomic_inc_32)
 	movl	4(%esp), %edx
-	LOCK(7)
+	LOCK
 	incl	(%edx)
 	ret
 END(_atomic_inc_32)
@@ -121,7 +121,7 @@ END(_atomic_inc_32)
 ENTRY(_atomic_inc_32_nv)
 	movl	4(%esp), %edx
 	movl	$1, %eax
-	LOCK(8)
+	LOCK
 	xaddl	%eax, (%edx)
 	incl	%eax
 	ret
@@ -130,7 +130,7 @@ END(_atomic_inc_32_nv)
 ENTRY(_atomic_or_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
-	LOCK(9)
+	LOCK
 	orl	%eax, (%edx)
 	ret
 END(_atomic_or_32)
@@ -141,7 +141,7 @@ ENTRY(_atomic_or_32_nv)
 0:
 	movl	%eax, %ecx
 	orl	8(%esp), %ecx
-	LOCK(10)
+	LOCK
 	cmpxchgl %ecx, (%edx)
 	jnz	1f
 	movl	%ecx, %eax
@@ -161,7 +161,7 @@ ENTRY(_atomic_cas_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
 	movl	12(%esp), %ecx
-	LOCK(12)
+	LOCK
 	cmpxchgl %ecx, (%edx)
 	/* %eax now contains the old value */
 	ret
@@ -177,7 +177,7 @@ ENTRY(_atomic_cas_32_ni)
 END(_atomic_cas_32_ni)
 
 ENTRY(_membar_consumer)
-	LOCK(13)
+	LOCK
 	addl	$0, -4(%esp)
 	ret
 END(_membar_consumer)
@@ -190,7 +190,7 @@ ENTRY(_membar_producer)
 END(_membar_producer)
 
 ENTRY(_membar_sync)
-	LOCK(14)
+	LOCK
 	addl	$0, -4(%esp)
 	ret
 END(_membar_sync)
@@ -241,7 +241,7 @@ ENTRY(_atomic_cas_cx8)
 	movl	20(%esp), %edx
 	movl	24(%esp), %ebx
 	movl	28(%esp), %ecx
-	LOCK(15)
+	LOCK
 	cmpxchg8b (%edi)
 	popl	%ebx
 	popl	%edi

Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.21
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20	Sun Apr 26 13:54:03 2020
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Sun Apr 26 13:59:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.20 2020/04/26 13:54:03 maxv Exp $	*/
+/*	$NetBSD: atomic.S,v 1.21 2020/04/26 13:59:44 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -40,10 +40,10 @@
 
 #ifdef _HARDKERNEL
 #include 
-#define	LOCK(n)		HOTPATCH(HP_NAME_NOLOCK, 1); lock
+#define	LOCK		HOTPATCH(HP_NAME_NOLOCK, 1); lock
 #define	ENDLABEL(a)	_ALIGN_TEXT; LABEL(a)
 #else
-#define	LOCK(n)		lock
+#define	LOCK		lock
 #define	ENDLABEL(a)	/* nothing */
 #endif
 
@@ -52,21 +52,21 @@
 /* 32-bit */
 
 ENTRY(_atomic_add_32)
-	LOCK(1)
+	LOCK
 	addl	%esi, (%rdi)
 	ret
 END(_atomic_add_32)
 
 ENTRY(_atomic_add_32_nv)
 	movl	%esi, %eax
-	LOCK(2)
+	LOCK
 	xaddl	%eax, (%rdi)
 	addl	%esi, %eax
 	ret
 END(_atomic_add_32_nv)
 
 ENTRY(_atomic_and_32)
-	LOCK(3)
+	LOCK
 	andl	%esi, (%rdi)
 	ret
 END(_atomic_and_32)
@@ -76,7 +76,7 @@ ENTRY(_atomic_and_32_nv)
 1:
 	movl	%eax, %ecx
 	andl	%esi, %ecx
-	LOCK(4)
+	LOCK
 	cmpxchgl %ecx, (%rdi)
 	jnz	1b
 	movl	%ecx, %eax
@@ -84,35 +84,35 @@ 

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

2020-04-26 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Sun Apr 26 13:54:03 UTC 2020

Modified Files:
src/common/lib/libc/arch/i386/atomic: atomic.S
src/common/lib/libc/arch/x86_64/atomic: atomic.S

Log Message:
Remove unused.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/common/lib/libc/arch/i386/atomic/atomic.S
cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/x86_64/atomic/atomic.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/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.25 src/common/lib/libc/arch/i386/atomic/atomic.S:1.26
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.25	Sun Apr 26 13:37:14 2020
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Sun Apr 26 13:54:02 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.25 2020/04/26 13:37:14 maxv Exp $	*/
+/*	$NetBSD: atomic.S,v 1.26 2020/04/26 13:54:02 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -188,7 +188,6 @@ ENTRY(_membar_producer)
 	movl	$0, -4(%esp)
 	ret
 END(_membar_producer)
-ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(14)

Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.19 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.19	Sun Apr 26 13:37:14 2020
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Sun Apr 26 13:54:03 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.19 2020/04/26 13:37:14 maxv Exp $	*/
+/*	$NetBSD: atomic.S,v 1.20 2020/04/26 13:54:03 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -265,7 +265,6 @@ ENTRY(_membar_producer)
 	movq	$0, -8(%rsp)
 	ret
 END(_membar_producer)
-ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(26)



CVS commit: src/common/lib/libc/arch/aarch64/string

2020-04-10 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Sat Apr 11 05:12:52 UTC 2020

Modified Files:
src/common/lib/libc/arch/aarch64/string: bcopy.S memset.S

Log Message:
Fixed to not use the "br" instruction. Branch Target Identification (BTI) 
doesn't like "br".

requested by maxv@


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/bcopy.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/memset.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/aarch64/string/bcopy.S
diff -u src/common/lib/libc/arch/aarch64/string/bcopy.S:1.1 src/common/lib/libc/arch/aarch64/string/bcopy.S:1.2
--- src/common/lib/libc/arch/aarch64/string/bcopy.S:1.1	Sun Feb  4 21:52:16 2018
+++ src/common/lib/libc/arch/aarch64/string/bcopy.S	Sat Apr 11 05:12:52 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcopy.S,v 1.1 2018/02/04 21:52:16 skrll Exp $ */
+/* $NetBSD: bcopy.S,v 1.2 2020/04/11 05:12:52 ryo Exp $ */
 
 /*
  * Copyright (c) 2018 Ryo Shimizu 
@@ -29,7 +29,7 @@
 #include 
 
 #if defined(LIBC_SCCS)
-RCSID("$NetBSD: bcopy.S,v 1.1 2018/02/04 21:52:16 skrll Exp $")
+RCSID("$NetBSD: bcopy.S,v 1.2 2020/04/11 05:12:52 ryo Exp $")
 #endif
 
 #if defined(MEMCOPY)
@@ -207,32 +207,60 @@ copy_backward:
 #endif /* (STP_ALIGN > 8) */
 9:
 
+backward_copy1k:
+	/* while (len >= 1024) */
+	/* { src -= 1024; dst -= 1024; copy1024(dst, src); len -= 1024; } */
 	cmp	LEN, #1024
-	bhs	backward_copy1k
-backward_less1k:
-	/* copy 16*n bytes */
-	and	TMP_D, LEN, #(1023-15)		/* len &= 1023; len &= ~15; */
-	adr	TMP_X, 8f
-	sub	LEN, LEN, TMP_D
-	sub	TMP_X, TMP_X, TMP_D, lsr #1	/* jump to (8f - len/2) */
-	br	TMP_X
-backward_copy1k:	/* copy 16*64 bytes */
+	blo	9f
+1:
 	sub	LEN, LEN, #1024
 	.rept	(1024 / 16)
 	ldp	DATA0, DATA1, [SRC0, #-16]!	/* *--dst = *--src; */
 	stp	DATA0, DATA1, [DST, #-16]!
 	.endr
-8:
-	cbz	LEN, done
 	cmp	LEN, #1024
-	bhs	backward_copy1k
-	cmp	LEN, #16
-	bhs	backward_less1k
+	bhs	1b
+9:
 
+	/* if (len & 512) { src -= 512; dst -= 512; copy512(dst, src); } */
+	tbz	LEN, #9, 1f
+	.rept	(512 / 16)
+	ldp	DATA0, DATA1, [SRC0, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
+	.endr
+1:
+	/* if (len & 256) { src -= 256; dst -= 256; copy256(dst, src); } */
+	tbz	LEN, #8, 1f
+	.rept	(256 / 16)
+	ldp	DATA0, DATA1, [SRC0, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
+	.endr
+1:
+	/* if (len & 128) { src -= 128; dst -= 128; copy128(dst, src); } */
+	tbz	LEN, #7, 1f
+	.rept	(128 / 16)
+	ldp	DATA0, DATA1, [SRC0, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
+	.endr
+1:
+	/* if (len & 64) { src -= 64; dst -= 64; copy64(dst, src); } */
+	tbz	LEN, #6, 1f
+	.rept	(64 / 16)
+	ldp	DATA0, DATA1, [SRC0, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
+	.endr
+1:
+	/* if (len & 32) { src -= 32; dst -= 32; copy32(dst, src); } */
+	tbz	LEN, #5, 1f
+	.rept	(32 / 16)
+	ldp	DATA0, DATA1, [SRC0, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
+	.endr
+1:
 	/* if (len & 16) { *--(uint128_t *)dst = *--(uint128_t *)src; } */
 	tbz	LEN, #4, 1f
 	ldp	DATA0, DATA1, [SRC0, #-16]!
-	ldp	DATA0, DATA1, [DST, #-16]!
+	stp	DATA0, DATA1, [DST, #-16]!
 1:
 	/* if (len & 8) { *--(uint64_t *)dst = *--(uint64_t *)src; } */
 	tbz	LEN, #3, 1f
@@ -271,14 +299,10 @@ backward_copy:
 	bcs	9f
 backward_tiny:
 	/* copy 1-10 bytes */
-	adr	TMP_X, 8f
-	sub	TMP_X, TMP_X, LEN, lsl #3	/* jump to (8f - len*2) */
-	br	TMP_X
-	.rept	10
+1:	sub	LEN, LEN, #1
 	ldrb	TMP_Xw, [SRC0, #-1]!
 	strb	TMP_Xw, [DST, #-1]!
-	.endr
-8:
+	cbz	LEN, 1b
 	ret
 9:
 	/* length is small(<32), and src or dst may be unaligned */
@@ -548,14 +572,10 @@ ENTRY(FUNCTION)
 	bcs	9f
 forward_tiny:
 	/* copy 1-10 bytes */
-	adr	TMP_X, 8f
-	sub	TMP_X, TMP_X, LEN, lsl #3	/* jump to (8f - len*2) */
-	br	TMP_X
-	.rept	10
+1:	sub	LEN, LEN, #1
 	ldrb	TMP_Xw, [SRC0], #1
 	strb	TMP_Xw, [DST], #1
-	.endr
-8:
+	cbz	LEN, 1b
 	ret
 9:
 	/* length is small(<32), and src or dst may be unaligned */
@@ -938,28 +958,56 @@ copy_forward:
 #endif /* (STP_ALIGN > 8) */
 9:
 
+forward_copy1k:
+	/* while (len >= 1024) */
+	/* { copy1024(dst, src); src += 1024; dst += 1024; len -= 1024; } */
 	cmp	LEN, #1024
-	bhs	forward_copy1k
-forward_less1k:
-	/* copy 16*n bytes */
-	and	TMP_D, LEN, #(1023-15)		/* len &= 1023; len &= ~15; */
-	adr	TMP_X, 8f
-	sub	LEN, LEN, TMP_D
-	sub	TMP_X, TMP_X, TMP_D, lsr #1	/* jump to (8f - len/2) */
-	br	TMP_X
-forward_copy1k:	/* copy 16*64 bytes */
+	blo	9f
+1:
 	sub	LEN, LEN, #1024
 	.rept	(1024 / 16)
 	ldp	DATA0, DATA1, [SRC0], #16	/* *dst++ = *src++; */
 	stp	DATA0, DATA1, [DST], #16
 	.endr
-8:
-	cbz	LEN, done
 	cmp	LEN, #1024
-	bhs	forward_copy1k
-	cmp	LEN, #16
-	bhs	forward_less1k
+	bhs	1b
+9:
 
+	/* if (len & 512) { copy512(dst, src); src += 512; dst += 512; */
+	tbz	LEN, #9, 1f
+	.rept	(512 / 16)
+	ldp	DATA0, DATA1, [SRC0], #16
+	stp	DATA0, DATA1, [DST], #16
+	.endr
+1:
+	/* if (len & 256) { copy256(dst, src); src += 256; dst += 256; */
+	tbz	LEN, #8, 1f
+	.rept	(256 / 

CVS commit: src/common/lib/libc/arch/m68k/string

2020-03-10 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Mar 10 08:15:44 UTC 2020

Modified Files:
src/common/lib/libc/arch/m68k/string: ffs.S

Log Message:
For kernel, rename ffs to __ffssi2 rather than having a weak symbol.
This enables us to load modules depended to __ffssi2.

It is difficult to deal with weak symbols consistently in in-kernel
linker. See explanation by pgoyette on tech-kern:

http://mail-index.netbsd.org/tech-kern/2020/03/09/msg026148.html

Also, we do not currently provide ffs(9) as a kernel routine.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/m68k/string/ffs.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/m68k/string/ffs.S
diff -u src/common/lib/libc/arch/m68k/string/ffs.S:1.7 src/common/lib/libc/arch/m68k/string/ffs.S:1.8
--- src/common/lib/libc/arch/m68k/string/ffs.S:1.7	Mon Mar  9 13:36:10 2020
+++ src/common/lib/libc/arch/m68k/string/ffs.S	Tue Mar 10 08:15:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $	*/
+/*	$NetBSD: ffs.S,v 1.8 2020/03/10 08:15:44 rin Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -39,13 +39,22 @@
 #if 0
 	RCSID("from: @(#)ffs.s	5.1 (Berkeley) 5/12/90")
 #else
-	RCSID("$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $")
+	RCSID("$NetBSD: ffs.S,v 1.8 2020/03/10 08:15:44 rin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
 /* bit = ffs(value) */
 
+#ifdef _LIBC
 WEAK_ALIAS(__ffssi2,ffs)
+#else /* KERNEL */
+/*
+ * Our in-kernel linker does not understand weak references, which
+ * prevents modules depended on __ffssi2 from being loaded. Also,
+ * we do not provide ffs(9) as a kernel routine. Let's rename it!
+ */
+#define ffs __ffssi2
+#endif
 
 #if (!defined(__mc68010__) && !defined(__mcoldfire__)) || defined(__mcfisac__)
 



CVS commit: src/common/lib/libc/arch/m68k/string

2020-03-09 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Mar  9 13:36:10 UTC 2020

Modified Files:
src/common/lib/libc/arch/m68k/string: ffs.S

Log Message:
Add missing END() for coldfire.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/m68k/string/ffs.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/m68k/string/ffs.S
diff -u src/common/lib/libc/arch/m68k/string/ffs.S:1.6 src/common/lib/libc/arch/m68k/string/ffs.S:1.7
--- src/common/lib/libc/arch/m68k/string/ffs.S:1.6	Sat Sep  7 19:06:29 2013
+++ src/common/lib/libc/arch/m68k/string/ffs.S	Mon Mar  9 13:36:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs.S,v 1.6 2013/09/07 19:06:29 chs Exp $	*/
+/*	$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -39,7 +39,7 @@
 #if 0
 	RCSID("from: @(#)ffs.s	5.1 (Berkeley) 5/12/90")
 #else
-	RCSID("$NetBSD: ffs.S,v 1.6 2013/09/07 19:06:29 chs Exp $")
+	RCSID("$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -76,6 +76,7 @@ ENTRY(ffs)
 	jcc	.L1		| keep looping while carry is clear.
 .L2:
 	rts
+END(ffs)
 
 #else	/* __mc68010__ */
 



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/m68k/gen

2020-03-09 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Mar  9 08:29:12 UTC 2020

Modified Files:
src/common/lib/libc/arch/m68k/gen: mulsi3.S

Log Message:
Remove wrong comment (copy-paste from somewhere);
__mulsi3 does not depend on __udivsi3.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/m68k/gen/mulsi3.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/m68k/gen/mulsi3.S
diff -u src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.4 src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.5
--- src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.4	Tue Jul 16 23:24:18 2013
+++ src/common/lib/libc/arch/m68k/gen/mulsi3.S	Mon Mar  9 08:29:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: mulsi3.S,v 1.4 2013/07/16 23:24:18 matt Exp $	*/
+/*	$NetBSD: mulsi3.S,v 1.5 2020/03/09 08:29:11 rin Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -39,7 +39,7 @@
 #if 0
 	RCSID("from: @(#)mulsi3.s	5.1 (Berkeley) 6/7/90")
 #else
-	RCSID("$NetBSD: mulsi3.S,v 1.4 2013/07/16 23:24:18 matt Exp $")
+	RCSID("$NetBSD: mulsi3.S,v 1.5 2020/03/09 08:29:11 rin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -49,8 +49,6 @@ ENTRY(__mulsi3)
 	movel	4(%sp),%d0
 	mulsl	8(%sp),%d0
 #else
-| NB: this requires that __udivsi3 preserve %a0 and return
-| the modulus in %d1:
 	movew	6(%sp), %d0
 	movel	%d0, %a0	| save B
 	muluw	8(%sp), %d0	| %d0 holds B * C



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

2020-01-27 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Mon Jan 27 22:09:21 UTC 2020

Removed Files:
src/common/lib/libc/arch/i386/string: memcmp.S
src/common/lib/libc/arch/x86_64/string: bcmp.S memcmp.S

Log Message:
x86 uses the C versions of bcmp() and memcmp() now.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r0 src/common/lib/libc/arch/i386/string/memcmp.S
cvs rdiff -u -r1.4 -r0 src/common/lib/libc/arch/x86_64/string/bcmp.S
cvs rdiff -u -r1.5 -r0 src/common/lib/libc/arch/x86_64/string/memcmp.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/x86_64/string

2020-01-16 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Jan 16 09:23:43 UTC 2020

Modified Files:
src/common/lib/libc/arch/x86_64/string: memcmp.S

Log Message:
Back out previous, it's broken.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/memcmp.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/x86_64/string/memcmp.S
diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.5
--- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4	Wed Jan 15 10:56:49 2020
+++ src/common/lib/libc/arch/x86_64/string/memcmp.S	Thu Jan 16 09:23:43 2020
@@ -1,34 +1,3 @@
-/*	$NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $	*/
-
-/*-
- * Copyright (c) 2020 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Andrew Doran.
- *
- * 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.
- */
-
 /*
  * Written by J.T. Conklin .
  * Public domain.
@@ -38,39 +7,34 @@
 #include 
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $")
+	RCSID("$NetBSD: memcmp.S,v 1.5 2020/01/16 09:23:43 ad Exp $")
 #endif
 
 ENTRY(memcmp)
-	movq	%rdx, %rcx	/* compare by longs, equality only */
-	shrq	$3, %rcx
-	jz	2f
-1:
-	movq	(%rdi), %rax
-	cmpq	%rax, (%rsi)
-	jne	6f
-	decq	%rcx
-	leaq	8(%rdi), %rdi
-	leaq	8(%rsi), %rsi
-	jnz	1b
-2:
-	andl	$7, %edx
-	jz	5f
-3:
-	movb	(%rdi), %al	/* compare by chars, find difference */
-	subb	(%rsi), %al
-	jne	4f
-	decl	%edx
-	leaq	1(%rdi), %rdi
-	leaq	1(%rsi), %rsi
-	jnz	3b
-4:
-	movsbl	%al, %eax
+	movq	%rdx,%rcx		/* compare by longs */
+	shrq	$3,%rcx
+	repe
+	cmpsq
+	jne	L5			/* do we match so far? */
+
+	movq	%rdx,%rcx		/* compare remainder by bytes */
+	andq	$7,%rcx
+	repe
+	cmpsb
+	jne	L6			/* do we match? */
+
+	xorl	%eax,%eax		/* we match, return zero	*/
 	ret
-5:
-	xorl	%eax, %eax
+
+L5:	movl	$8,%ecx			/* We know that one of the next	*/
+	subq	%rcx,%rdi		/* eight pairs of bytes do not	*/
+	subq	%rcx,%rsi		/* match.			*/
+	repe
+	cmpsb
+L6:	xorl	%eax,%eax		/* Perform unsigned comparison	*/
+	movb	-1(%rdi),%al
+	xorl	%edx,%edx
+	movb	-1(%rsi),%dl
+	subl%edx,%eax
 	ret
-6:
-	movl	$8, %edx
-	jmp	3b
 END(memcmp)



CVS commit: src/common/lib/libc/arch/x86_64/string

2020-01-15 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Wed Jan 15 10:56:49 UTC 2020

Modified Files:
src/common/lib/libc/arch/x86_64/string: bcmp.S memcmp.S

Log Message:
Rewrite bcmp() & memcmp() to not use REP CMPS.  Seems about 5-10x faster for
small strings on modern hardware.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/x86_64/string/bcmp.S \
src/common/lib/libc/arch/x86_64/string/memcmp.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/x86_64/string/bcmp.S
diff -u src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3 src/common/lib/libc/arch/x86_64/string/bcmp.S:1.4
--- src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3	Sat Mar 22 19:16:34 2014
+++ src/common/lib/libc/arch/x86_64/string/bcmp.S	Wed Jan 15 10:56:49 2020
@@ -1,24 +1,67 @@
+/*	$NetBSD: bcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $	*/
+
+/*-
+ * Copyright (c) 2020 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Andrew Doran.
+ *
+ * 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 
 
 #if defined(LIBC_SCCS)
-	RCSID("$NetBSD: bcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $")
+	RCSID("$NetBSD: bcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $")
 #endif
 
 ENTRY(bcmp)
-	xorl	%eax,%eax		/* clear return value */
-
-	movq	%rdx,%rcx		/* compare by words */
-	shrq	$3,%rcx
-	repe
-	cmpsq
-	jne	L1
-
-	movq	%rdx,%rcx		/* compare remainder by bytes */
-	andq	$7,%rcx
-	repe
-	cmpsb
-	je	L2
-
-L1:	incl	%eax
-L2:	ret
+	movq	%rdx, %rcx	/* compare by longs, equality only */
+	shrq	$3, %rcx
+	jz	2f
+1:
+	movq	(%rdi), %rax
+	cmpq	%rax, (%rsi)
+	jne	5f
+	decq	%rcx
+	leaq	8(%rdi), %rdi
+	leaq	8(%rsi), %rsi
+	jnz	1b
+2:
+	andl	$7, %edx
+	jz	4f
+3:
+	movb	(%rdi), %al	/* compare by chars, equality only */
+	cmpb	%al, (%rsi)
+	jne	5f
+	decl	%edx
+	leaq	1(%rdi), %rdi
+	leaq	1(%rsi), %rsi
+	jnz	3b
+4:
+	xorl	%eax, %eax
+	ret
+5:
+	movl	$1, %eax
+	ret
 END(bcmp)
Index: src/common/lib/libc/arch/x86_64/string/memcmp.S
diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4
--- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3	Sat Mar 22 19:16:34 2014
+++ src/common/lib/libc/arch/x86_64/string/memcmp.S	Wed Jan 15 10:56:49 2020
@@ -1,3 +1,34 @@
+/*	$NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $	*/
+
+/*-
+ * Copyright (c) 2020 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Andrew Doran.
+ *
+ * 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 

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

2019-04-17 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Apr 17 07:40:35 UTC 2019

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

Log Message:
add missing atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/riscv/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/riscv/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.2 src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.3
--- src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.2	Thu Oct 16 18:52:17 2014
+++ src/common/lib/libc/arch/riscv/atomic/Makefile.inc	Wed Apr 17 07:40:34 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.2 2014/10/16 18:52:17 dennis Exp $
+#	$NetBSD: Makefile.inc,v 1.3 2019/04/17 07:40:34 mrg Exp $
 
 .for op in add and cas nand or sub swap xor
 sizes=32
@@ -27,4 +27,8 @@ SRCS.atomic+=	atomic_init_cas.c			\
 
 .endif #LIB
 
+.if ${LIB} == "c"
+SRCS.atomic+=	atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c
+.endif
+
 SRCS+=	${SRCS.atomic}



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

2019-04-17 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Apr 17 07:35:38 UTC 2019

Modified Files:
src/common/lib/libc/arch/riscv/atomic: atomic_cas_32.S

Log Message:
add missing aliases for _atomic_cas_32_ni and atomic_cas_uint_ni.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.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/riscv/atomic/atomic_cas_32.S
diff -u src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.2 src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.3
--- src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.2	Fri Mar 27 06:42:37 2015
+++ src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S	Wed Apr 17 07:35:38 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $	*/
+/*	$NetBSD: atomic_cas_32.S,v 1.3 2019/04/17 07:35:38 mrg Exp $	*/
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -43,6 +43,12 @@ END(_atomic_cas_32)
 ATOMIC_OP_ALIAS(atomic_cas_32,_atomic_cas_32)
 ATOMIC_OP_ALIAS(atomic_cas_uint,_atomic_cas_32)
 STRONG_ALIAS(_atomic_cas_uint,_atomic_cas_32)
+
+ATOMIC_OP_ALIAS(atomic_cas_32_ni,_atomic_cas_32)
+STRONG_ALIAS(_atomic_cas_32_ni,_atomic_cas_32)
+ATOMIC_OP_ALIAS(atomic_cas_uint_ni,_atomic_cas_32)
+STRONG_ALIAS(_atomic_cas_uint_ni,_atomic_cas_32)
+
 #ifndef _LP64
 ATOMIC_OP_ALIAS(atomic_cas_ulong,_atomic_cas_32)
 STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_32)



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

2019-02-27 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Feb 28 02:35:38 UTC 2019

Modified Files:
src/common/lib/libc/arch/hppa/atomic: Makefile.inc
src/common/lib/libc/arch/m68k/atomic: Makefile.inc
src/common/lib/libc/arch/mips/atomic: Makefile.inc
src/common/lib/libc/arch/sh3/atomic: Makefile.inc
src/common/lib/libc/arch/sparc/atomic: Makefile.inc
src/common/lib/libc/arch/vax/atomic: Makefile.inc

Log Message:
Add missing atomic_and_{8,16}_nv_cas.c for __sync_and_and_fetch_{1,2}.
XXX why is not only atomic_and_* symmetric unlike the others?
(in common/lib/libc/atomic/)


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/hppa/atomic/Makefile.inc
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/m68k/atomic/Makefile.inc
cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/mips/atomic/Makefile.inc
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/sh3/atomic/Makefile.inc
cvs rdiff -u -r1.22 -r1.23 src/common/lib/libc/arch/sparc/atomic/Makefile.inc
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/vax/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/hppa/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.14
--- src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13	Tue Oct 14 07:25:05 2014
+++ src/common/lib/libc/arch/hppa/atomic/Makefile.inc	Thu Feb 28 02:35:37 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.13 2014/10/14 07:25:05 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $
 
 .if defined(LIB)
 
@@ -30,6 +30,7 @@ SRCS+=	atomic_xor_32_cas.c atomic_xor_16
 	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_and_16_nv_cas.c atomic_and_8_nv_cas.c			\
 	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	\

Index: src/common/lib/libc/arch/m68k/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.15
--- src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14	Thu Nov 20 07:07:13 2014
+++ src/common/lib/libc/arch/m68k/atomic/Makefile.inc	Thu Feb 28 02:35:37 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.14 2014/11/20 07:07:13 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.15 2019/02/28 02:35:37 isaki Exp $
 
 #
 # Note: The atomic operations here in these assembly files are atomic
@@ -30,6 +30,7 @@ SRCS+=  atomic_add_16_cas.c atomic_add_8
 	atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c	\
 	atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c	\
 	atomic_and_32_cas.c atomic_and_16_cas.c atomic_and_8_cas.c	\
+	atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c			\
 	atomic_or_32_cas.c atomic_or_16_cas.c atomic_or_8_cas.c		\
 	atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
 	atomic_swap_32_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c

Index: src/common/lib/libc/arch/mips/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14
--- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13	Mon Oct 13 13:00:55 2014
+++ src/common/lib/libc/arch/mips/atomic/Makefile.inc	Thu Feb 28 02:35:37 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.13 2014/10/13 13:00:55 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $
 
 .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
 	|| ${LIB} == "rump")
@@ -44,6 +44,7 @@ SRCS+=	atomic_xor_32_cas.c atomic_xor_16
 	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_and_16_nv_cas.c atomic_and_8_nv_cas.c			\
 	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	\

Index: src/common/lib/libc/arch/sh3/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7 src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.8
--- src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7	Mon Oct 13 13:00:55 2014
+++ src/common/lib/libc/arch/sh3/atomic/Makefile.inc	Thu Feb 28 02:35:37 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.7 2014/10/13 13:00:55 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.8 2019/02/28 02:35:37 isaki Exp $
 
 .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
 	|| ${LIB} == "rump")
@@ -12,6 +12,7 @@ SRCS+=	atomic_add_32_cas.c atomic_add_32
 SRCS+=	atomic_add_16_cas.c atomic_add_8_cas.c	\
 	atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c	\

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

2019-02-19 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Wed Feb 20 05:25:12 UTC 2019

Modified Files:
src/common/lib/libc/arch/mips/atomic: atomic_cas.S

Log Message:
Export atomic_cas_32_ni in a similar manner to its 64-bit counterpart.

Compile test only, but seems trivial enough for me.

Fix build error due to test/lib/libc/atomic/t_atomic_cas.

Note that mips32 does not use atomic_cas.S.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/atomic/atomic_cas.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/mips/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.6
--- src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5	Tue Feb 19 18:17:45 2019
+++ src/common/lib/libc/arch/mips/atomic/atomic_cas.S	Wed Feb 20 05:25:12 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.6 2019/02/20 05:25:12 rin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include 
 #include "atomic_op_asm.h"
 
-RCSID("$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $")
+RCSID("$NetBSD: atomic_cas.S,v 1.6 2019/02/20 05:25:12 rin Exp $")
 
 	.text
 	.set	noat
@@ -54,6 +54,7 @@ LEAF(_atomic_cas_32)
 	 nop
 END(_atomic_cas_32)
 ATOMIC_OP_ALIAS(atomic_cas_32, _atomic_cas_32)
+ATOMIC_OP_ALIAS(atomic_cas_32_ni, _atomic_cas_32)
 
 #if !defined(__mips_o32)
 LEAF(_atomic_cas_64)



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

2019-02-19 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Feb 19 18:17:46 UTC 2019

Modified Files:
src/common/lib/libc/arch/mips/atomic: atomic_cas.S

Log Message:
Add atomic_cas_64_ni alias


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_cas.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/mips/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5
--- src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.4	Mon Jun  1 23:16:54 2015
+++ src/common/lib/libc/arch/mips/atomic/atomic_cas.S	Tue Feb 19 18:17:45 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.4 2015/06/01 23:16:54 matt Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include 
 #include "atomic_op_asm.h"
 
-RCSID("$NetBSD: atomic_cas.S,v 1.4 2015/06/01 23:16:54 matt Exp $")
+RCSID("$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $")
 
 	.text
 	.set	noat
@@ -74,6 +74,7 @@ LEAF(_atomic_cas_64)
 	 nop
 END(_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_64, _atomic_cas_64)
+ATOMIC_OP_ALIAS(atomic_cas_64_ni, _atomic_cas_64)
 #endif
 
 #ifdef _LP64



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

2019-02-19 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Feb 19 12:51:44 UTC 2019

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

Log Message:
Sort STRONG_ALIAS's in the same manner as ATOMIC_OP_ALIAS's.
No functional changes.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/arch/aarch64/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/aarch64/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2	Tue Feb 19 12:47:36 2019
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S	Tue Feb 19 12:51:44 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_64.S,v 1.2 2019/02/19 12:47:36 rin Exp $ */
+/* $NetBSD: atomic_cas_64.S,v 1.3 2019/02/19 12:51:44 rin Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@ ATOMIC_OP_ALIAS(atomic_cas_ulong_ni,_ato
 ATOMIC_OP_ALIAS(atomic_cas_ptr_ni,_atomic_cas_64)
 STRONG_ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64)
 STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_64)
+STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_64)
 STRONG_ALIAS(_atomic_cas_64_ni,_atomic_cas_64)
-STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_64)
 STRONG_ALIAS(_atomic_cas_ulong_ni,_atomic_cas_64)
-STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_64)
+STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_64)



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

2019-02-19 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Feb 19 12:47:36 UTC 2019

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

Log Message:
Export _atomic_cas_64 as atomic_cas_64_ni.

Note that _atomic_cas_64 is already exported as atomic_cas_{ulong,prt}_ni.

Fix build error of test/lib/atomic/t_atomic_cas, which is successfully
passed on RPI3B+ now.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/aarch64/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/aarch64/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S	Tue Feb 19 12:47:36 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_cas_64.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_cas_64.S,v 1.2 2019/02/19 12:47:36 rin Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -45,6 +45,7 @@ END(_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_64,_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_ulong,_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_ptr,_atomic_cas_64)
+ATOMIC_OP_ALIAS(atomic_cas_64_ni,_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_ulong_ni,_atomic_cas_64)
 ATOMIC_OP_ALIAS(atomic_cas_ptr_ni,_atomic_cas_64)
 STRONG_ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64)



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

2019-02-16 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Sun Feb 17 07:34:44 UTC 2019

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

Log Message:
Add missing export of atomic_or_64 (since rev1.1).


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/x86_64/atomic/atomic.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/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.17 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.18
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.17	Thu May 22 15:23:11 2014
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Sun Feb 17 07:34:44 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.17 2014/05/22 15:23:11 uebayasi Exp $	*/
+/*	$NetBSD: atomic.S,v 1.18 2019/02/17 07:34:44 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -345,6 +345,7 @@ ALIAS(atomic_inc_ulong_nv,_atomic_inc_64
 ALIAS(atomic_inc_ptr_nv,_atomic_inc_64_nv)
 
 ALIAS(atomic_or_32,_atomic_or_32)
+ALIAS(atomic_or_64,_atomic_or_64)
 ALIAS(atomic_or_uint,_atomic_or_32)
 ALIAS(atomic_or_ulong,_atomic_or_64)
 ALIAS(atomic_or_ptr,_atomic_or_64)



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

2019-02-07 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Fri Feb  8 06:56:56 UTC 2019

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

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


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

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

Modified files:

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2	Wed Feb  6 05:33:14 2019
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Fri Feb  8 06:56:56 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.3 2019/02/08 06:56:56 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -49,10 +49,10 @@ END(_atomic_##OP##_8)
 ENTRY_NP(_atomic_##OP##_8_nv)		;\
 	mov	x4, x0			/* need r0 for return value */	;\
 1:	ldxrb	w0, [x4]		/* load old value */		;\
-	INSN	w2, w0, w1		/* calc new (return) value */	;\
-	stxrb	w3, w2, [x4]		/* try to store */		;\
+	INSN	w0, w0, w1		/* calc new (return) value */	;\
+	stxrb	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
+	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_8_nv)
 
@@ -71,10 +71,10 @@ END(_atomic_##OP##_16)
 ENTRY_NP(_atomic_##OP##_16_nv)		;\
 	mov	x4, x0			/* need r0 for return value */	;\
 1:	ldxrh	w0, [x4]		/* load old value */		;\
-	INSN	w2, w0, w1		/* calc new (return) value */	;\
-	stxrh	w3, w2, [x4]		/* try to store */		;\
+	INSN	w0, w0, w1		/* calc new (return) value */	;\
+	stxrh	w3, w0, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
-	dmb	st			;\
+	dmb	sy			;\
 	ret/* return new value */		;\
 END(_atomic_##OP##_16_nv)
 



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

2019-02-05 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Wed Feb  6 05:33:14 UTC 2019

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

Log Message:
fix atomic_sub_*(). it was (delta - *ptr), should be (*ptr - delta).
changing shared macro doesn't effect other atomic_ops because
(*ptr [+|^] delta) and (delta [+|^] *ptr) have same result.

atomic_sub_*() haven't used because non standard API?


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

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

Modified files:

Index: src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2
--- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h	Wed Feb  6 05:33:14 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic_op_asm.h,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 ENTRY_NP(_atomic_##OP##_8)		;\
 	mov	x4, x0			;\
 1:	ldxrb	w0, [x4]		/* load old value */		;\
-	INSN	w2, w1, w0		/* calculate new value */	;\
+	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxrb	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\
@@ -49,7 +49,7 @@ END(_atomic_##OP##_8)
 ENTRY_NP(_atomic_##OP##_8_nv)		;\
 	mov	x4, x0			/* need r0 for return value */	;\
 1:	ldxrb	w0, [x4]		/* load old value */		;\
-	INSN	w2, w1, w0		/* calc new (return) value */	;\
+	INSN	w2, w0, w1		/* calc new (return) value */	;\
 	stxrb	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\
@@ -60,7 +60,7 @@ END(_atomic_##OP##_8_nv)
 ENTRY_NP(_atomic_##OP##_16)		;\
 	mov	x4, x0			;\
 1:	ldxrh	w0, [x4]		/* load old value */		;\
-	INSN	w2, w1, w0		/* calculate new value */	;\
+	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxrh	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\
@@ -71,7 +71,7 @@ END(_atomic_##OP##_16)
 ENTRY_NP(_atomic_##OP##_16_nv)		;\
 	mov	x4, x0			/* need r0 for return value */	;\
 1:	ldxrh	w0, [x4]		/* load old value */		;\
-	INSN	w2, w1, w0		/* calc new (return) value */	;\
+	INSN	w2, w0, w1		/* calc new (return) value */	;\
 	stxrh	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\
@@ -82,7 +82,7 @@ END(_atomic_##OP##_16_nv)
 ENTRY_NP(_atomic_##OP##_32)		;\
 	mov	x4, x0			;\
 1:	ldxr	w0, [x4]		/* load old value */		;\
-	INSN	w2, w1, w0		/* calculate new value */	;\
+	INSN	w2, w0, w1		/* calculate new value */	;\
 	stxr	w3, w2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\
@@ -104,7 +104,7 @@ END(_atomic_##OP##_32_nv)
 ENTRY_NP(_atomic_##OP##_64)		;\
 	mov	x4, x0			;\
 1:	ldxr	x0, [x4]		/* load old value */		;\
-	INSN	x2, x1, x0		/* calculate new value */	;\
+	INSN	x2, x0, x1		/* calculate new value */	;\
 	stxr	w3, x2, [x4]		/* try to store */		;\
 	cbnz	w3, 1b			/*   succeed? no, try again */	;\
 	dmb	st			;\



CVS commit: src/common/lib/libc/arch/aarch64/string

2018-08-01 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Wed Aug  1 17:09:26 UTC 2018

Modified Files:
src/common/lib/libc/arch/aarch64/string: strlen.S

Log Message:
strnlen(s, (size_t)-1) returned -1. it must return the length of s.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/strlen.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/aarch64/string/strlen.S
diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.2 src/common/lib/libc/arch/aarch64/string/strlen.S:1.3
--- src/common/lib/libc/arch/aarch64/string/strlen.S:1.2	Tue Aug 22 06:45:07 2017
+++ src/common/lib/libc/arch/aarch64/string/strlen.S	Wed Aug  1 17:09:26 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $ */
+/* $NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $")
+RCSID("$NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $")
 
 #ifdef STRNLEN
 #define FUNCNAME	strnlen
@@ -49,7 +49,10 @@ ENTRY(FUNCNAME)
 	add	x9, x0, #8		/* start + dword */
 	bic	x9, x9, #7		/* and aligned */
 #ifdef STRNLEN
-	add	x10, x0, x1		/* don't go past here */
+	adds	x10, x0, x1		/* x10 = s + maxlen */
+	b.cc	1f			/* if go past, */
+	mvn	x10, xzr		/* set limit 0x */
+1:
 #endif
 	mov	x11, #MASK8_0x01	/* test mask */
 
@@ -76,7 +79,7 @@ ENTRY(FUNCNAME)
 .Lstrlen_dword_loop:
 #ifdef STRNLEN
 	cmp	x4, x10
-	b.ge	.Lstrlen_done
+	b.hs	.Lstrlen_done
 #endif
 	ldr	x7, [x4], #8		/* load dword */
 .Lstrlen_dword_loop_noload:
@@ -103,7 +106,7 @@ ENTRY(FUNCNAME)
 	sub	x0, x0, x9		/* subtract start from the length */
 #ifdef STRNLEN
 	cmp	x0, x1			/* did we go too far? */
-	csel	x0, x0, x1, lt		/* yes, return max length */
+	csel	x0, x0, x1, lo		/* yes, return max length */
 #endif
 	ret
 #ifdef STRNLEN



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

2018-07-18 Thread Manuel Bouyer
Module Name:src
Committed By:   bouyer
Date:   Wed Jul 18 13:39:36 UTC 2018

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

Log Message:
On Xen, always alias _atomic_cas_64 to _atomic_cas_cx8. AFAIK Xen doesn't
support CPUs that don't support cx8.
i386 XENPAE_DOMU boots again.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/common/lib/libc/arch/i386/atomic/atomic.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/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.22 src/common/lib/libc/arch/i386/atomic/atomic.S:1.23
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.22	Fri May 23 03:17:31 2014
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Wed Jul 18 13:39:36 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.22 2014/05/23 03:17:31 uebayasi Exp $	*/
+/*	$NetBSD: atomic.S,v 1.23 2018/07/18 13:39:36 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -43,6 +43,7 @@
 #endif
 
 #ifdef _HARDKERNEL
+#include "opt_xen.h"
 #define	LOCK(n)		.Lpatch ## n:	lock
 #define	ENDLABEL(a)	_ALIGN_TEXT; LABEL(a)
 #else
@@ -196,6 +197,9 @@ END(_membar_sync)
 ENDLABEL(membar_sync_end)
 
 #if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL)
+#ifdef XEN
+STRONG_ALIAS(_atomic_cas_64,_atomic_cas_cx8)
+#else
 ENTRY(_atomic_cas_64)
 #ifdef _HARDKERNEL
 	pushf
@@ -227,6 +231,7 @@ ENTRY(_atomic_cas_64)
 	jmp	1b
 END(_atomic_cas_64)
 ENDLABEL(_atomic_cas_64_end)
+#endif /* !XEN */
 
 ENTRY(_atomic_cas_cx8)
 	pushl	%edi



CVS commit: src/common/lib/libc/arch/aarch64/string

2018-07-09 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Mon Jul  9 06:07:06 UTC 2018

Modified Files:
src/common/lib/libc/arch/aarch64/string: memcmp.S

Log Message:
avoid reading from out of range that may cause access fault.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/memcmp.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/aarch64/string/memcmp.S
diff -u src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2 src/common/lib/libc/arch/aarch64/string/memcmp.S:1.3
--- src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2	Sun Feb  4 21:52:16 2018
+++ src/common/lib/libc/arch/aarch64/string/memcmp.S	Mon Jul  9 06:07:06 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $ */
+/* $NetBSD: memcmp.S,v 1.3 2018/07/09 06:07:06 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $")
+RCSID("$NetBSD: memcmp.S,v 1.3 2018/07/09 06:07:06 ryo Exp $")
 
 ENTRY(memcmp)
 	mov	x9, x0
@@ -55,17 +55,19 @@ ENTRY(memcmp)
 	sub	x2, x2, #8		/* now subtract a dword */
 
 	sub	x9, x9, x3		/* dword align src1 */
-	sub	x10, x10, x3		/* adjust src2 */
 
+	ldr	x6, [x10], #8		/* load dword from src2 */
+	sub	x10, x10, x3		/* src2 -= x3 */
 	lsl	x3, x3, #3		/* convert bytes to bits */
 	ldr	x4, [x9], #8		/* load dword from src1 */
-	ldr	x6, [x10], #8		/* load dword from src2 */
 #ifdef __AARCH64EB__
 	lsl	x4, x4, x3		/* discard leading bytes from data1 */
-	lsl	x6, x6, x3		/* discard leading bytes from data2 */
+	lsr	x6, x6, x3		/* discard leading bytes from data2 */
+	lsl	x6, x6, x3		/* get back bit position */
 #else
 	lsr	x4, x4, x3		/* discard leading bytes from data1 */
-	lsr	x6, x6, x3		/* discard leading bytes from data2 */
+	lsl	x6, x6, x3		/* discard leading bytes from data2 */
+	lsr	x6, x6, x3		/* get back bit position */
 #endif
 	subs	x0, x4, x6		/* compare data */
 	b.ne	.Lmemcmp_last_compare	/* difference.  find it */



CVS commit: src/common/lib/libc/arch/aarch64/string

2018-02-04 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Feb  4 21:52:17 UTC 2018

Modified Files:
src/common/lib/libc/arch/aarch64/string: memcmp.S memcpy.S
Added Files:
src/common/lib/libc/arch/aarch64/string: bcopy.S memmove.S

Log Message:
Working / new versions from Ryo Shimizu


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/aarch64/string/bcopy.S \
src/common/lib/libc/arch/aarch64/string/memmove.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/memcmp.S \
src/common/lib/libc/arch/aarch64/string/memcpy.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/aarch64/string/memcmp.S
diff -u src/common/lib/libc/arch/aarch64/string/memcmp.S:1.1 src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2
--- src/common/lib/libc/arch/aarch64/string/memcmp.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/string/memcmp.S	Sun Feb  4 21:52:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: memcmp.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: memcmp.S,v 1.1 2014/08/10 05:47:35 matt Exp $")
+RCSID("$NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $")
 
 ENTRY(memcmp)
 	mov	x9, x0
@@ -42,14 +42,14 @@ ENTRY(memcmp)
 	cmp	x2, #6
 	b.eq	.Lmemcmp_6bytes
 #endif
-	cmp	x2, #7
+	cmp	x2, #8
 	b.ls	.Lmemcmp_lessthan8
 
 	ands	x3, x9, #7
 	b.eq	.Lmemcmp_dword_loop
 
 /*
- * The two addresses have identical alignment but are not yet dword aligned.
+ * The src1 address is not dword aligned.
  */
 	add	x2, x2, x3		/* add unalignment to length */
 	sub	x2, x2, #8		/* now subtract a dword */
@@ -68,14 +68,7 @@ ENTRY(memcmp)
 	lsr	x6, x6, x3		/* discard leading bytes from data2 */
 #endif
 	subs	x0, x4, x6		/* compare data */
-#ifdef __AARCH64EL__
 	b.ne	.Lmemcmp_last_compare	/* difference.  find it */
-#else
-	b.eq	.Lmemcmp_dword_loop	/* no difference.  go to loop */
-	rev	x4, x4			/* byte swap data1 */
-	rev	x6, x6			/* byte swap data2 */
-	b	.Lmemcmp_last_compare	/* go find the difference. */
-#endif
 
 .Lmemcmp_dword_loop:
 	subs	x2, x2, #8
@@ -84,10 +77,6 @@ ENTRY(memcmp)
 	ldr	x6, [x10], #8
 	subs	x0, x4, x6
 	b.eq	.Lmemcmp_dword_loop	/* no difference.  go to loop */
-#ifdef __AARCH64EB__
-	rev	x4, x4			/* byte swap data1 */
-	rev	x6, x6			/* byte swap data2 */
-#endif
 	b	.Lmemcmp_last_compare	/* go find the difference. */
 
 .Lmemcmp_finish_dword:
@@ -96,6 +85,8 @@ ENTRY(memcmp)
 	 */
 	tst	x2, #7
 	b.eq	.Lmemcmp_ret
+	mov	x4, xzr
+	mov	x6, xzr
 	/*
 	 *
 	 */
@@ -120,16 +111,18 @@ ENTRY(memcmp)
 #endif
 
 .Lmemcmp_finish_hword:
-#ifdef __AARCH64EB__
-	rev	x4, x4			/* byte swap data1 */
-	rev	x6, x6			/* byte swap data1 */
-#endif
-	tbz	x2, #0, .Lmemcmp_last_compare
+	tbz	x2, #0, .Lmemcmp_last_compare0
+
 	ldrb	w5, [x9]
 	ldrb	w7, [x10]
+#ifdef __AARCH64EB__
+	orr	x4, x4, x5, lsl #8
+	orr	x6, x6, x7, lsl #8
+#else
 	orr	x4, x4, x5, lsl #48
 	orr	x6, x6, x7, lsl #48
-	b	.Lmemcmp_last_compare	/* go find the difference. */
+#endif
+	b	.Lmemcmp_last_compare0	/* go find the difference. */
 
 /*
  * D
@@ -167,7 +160,7 @@ ENTRY(memcmp)
 #endif /* _KERNEL */
 
 /*
- * We have loaded the final bytes in x4 and x6 in LE format.  Now we have
+ * We have loaded the final bytes in x4 and x6 in host-endian.  Now we have
  * to figure what the difference is (if any).  First we subtract.  Any bytes
  * that are the same will be 0. So to find the first non-zero byte we byterev
  * and then use clz to find that byte.
@@ -175,13 +168,25 @@ ENTRY(memcmp)
  * data dwords left to remove the equal part.  Then we shift right to discard
  * the trailing bytes.  Then we subtract and return.
  */
+.Lmemcmp_last_compare0:
 	subs	x0, x4, x6
 	b.eq	.Lmemcmp_ret
 .Lmemcmp_last_compare:
-	rev	x1, x0		/* byte reverse */
+#if __AARCH64EB__
+	clz	x1, x0		/* find first non-zero byte */
+	rev	x0, x0
+#else
+	rev	x1, x0
 	clz	x1, x1		/* find first non-zero byte */
-	bfi	x1, xzr, #0, #3	/* make it byte aligned */
-	lsr	x0, x0, x1	/* shift to LSB */
-	sxtb	w0, w0		/* sign extend */
+#endif
+	bfi	x1, xzr, #0, #3 /* make it byte aligned */
+	lsr	x1, x0, x1	/* shift to LSB */
+#if __AARCH64EL__
+	rev	x4, x4		/* byte reverse */
+	rev	x6, x6		/* byte reverse */
+#endif
+	subs	x0, x4, x6
+	csetm	x0, cc		/* set mask bits as sign */
+	bfm	x0, x1, #0, #7	/* extend with sign bit */
 	ret
 END(memcmp)
Index: src/common/lib/libc/arch/aarch64/string/memcpy.S
diff -u src/common/lib/libc/arch/aarch64/string/memcpy.S:1.1 src/common/lib/libc/arch/aarch64/string/memcpy.S:1.2
--- src/common/lib/libc/arch/aarch64/string/memcpy.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/string/memcpy.S	Sun Feb  4 21:52:16 2018
@@ -1,126 +1,4 @@
-/* $NetBSD: memcpy.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/*	$NetBSD: 

CVS commit: src/common/lib/libc/arch/aarch64/string

2017-08-29 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Tue Aug 29 15:00:23 UTC 2017

Modified Files:
src/common/lib/libc/arch/aarch64/string: memset.S

Log Message:
* aarch64/memset.S didn't work! fixed some bugs.
* maximum size of DCZID_EL0:BS (2048) supported.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/memset.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/aarch64/string/memset.S
diff -u src/common/lib/libc/arch/aarch64/string/memset.S:1.1 src/common/lib/libc/arch/aarch64/string/memset.S:1.2
--- src/common/lib/libc/arch/aarch64/string/memset.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/string/memset.S	Tue Aug 29 15:00:23 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: memset.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: memset.S,v 1.2 2017/08/29 15:00:23 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -133,7 +133,7 @@ ENTRY(memset)
 	add	x13, x15, x2	/* get ending address */
 	asr	x13, x13, x9	/* "ending" block numebr */
 	cmp	x13, x12	/* how many blocks? */
-	b.eq	.Lfilled	/*   none, do it 16 bytes at a time */
+	b.ls	.Lfilled	/*   none, do it 16 bytes at a time */
 
 	/*
 	 * Now we have one or more blocks to deal with.  First now we need
@@ -144,7 +144,7 @@ ENTRY(memset)
 
 	sub	x7, x10, x7	/* subtract offset from block length */
 	sub	x2, x2, x7	/* subtract that from length */
-	asr	x7, x7, #2	/* qword -> word */
+	asr	x7, x7, #4	/* length -> N*16 */
 
 	tbz	x15, #0, .Lzero_hword_aligned
 	strb	wzr, [x15], #1
@@ -158,28 +158,18 @@ ENTRY(memset)
 	tbz	x15, #3, .Lzero_qword_aligned
 	str	xzr, [x15], #8
 .Lzero_qword_aligned:
-	cbz	x7, .Lblock_aligned /* no qwords? just branch */
-	adr	x6, .Lblock_aligned
-	sub	x6, x6, x7	/* backup to write the last N qwords */
-	br	x6		/* and do it */
+	cbz	x7, .Lblock_aligned	/* less than 16 bytes? just branch */
+	adr	x6, .Lunrolled_end
+	sub	x6, x6, x7, lsl #2	/* backup to write the last N insn */
+	br	x6			/* and do it */
+
 	/*
-	 * This is valid for cache lines <= 256 bytes.
+	 * The maximum size of DCZID_EL0:BS supported is 2048 bytes.
 	 */
+	.rept (2048 / 16) - 1
 	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
-	stp	xzr, xzr, [x15], #16
+	.endr
+.Lunrolled_end:
 
 /*
  * Now we are block aligned.
@@ -193,7 +183,7 @@ ENTRY(memset)
 	ret
 
 .Lblock_done:
-	and	x2, x2, x12	/* make positive again */
+	and	x2, x2, x11	/* make positive again */
 	mov	x6, xzr		/* fill 2nd xword */
 	b	.Lqword_loop	/* and finish filling */
 



CVS commit: src/common/lib/libc/arch/aarch64/string

2017-08-22 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Tue Aug 22 06:45:08 UTC 2017

Modified Files:
src/common/lib/libc/arch/aarch64/string: strlen.S

Log Message:
aarch64/strlen.S didn't work. fixed some bugs.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/strlen.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/aarch64/string/strlen.S
diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.1 src/common/lib/libc/arch/aarch64/string/strlen.S:1.2
--- src/common/lib/libc/arch/aarch64/string/strlen.S:1.1	Sun Aug 10 05:47:35 2014
+++ src/common/lib/libc/arch/aarch64/string/strlen.S	Tue Aug 22 06:45:07 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: strlen.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */
+/* $NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-RCSID("$NetBSD: strlen.S,v 1.1 2014/08/10 05:47:35 matt Exp $")
+RCSID("$NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $")
 
 #ifdef STRNLEN
 #define FUNCNAME	strnlen
@@ -47,6 +47,7 @@ RCSID("$NetBSD: strlen.S,v 1.1 2014/08/1
 ENTRY(FUNCNAME)
 	mov	x4, x0			/* need x0 for return */
 	add	x9, x0, #8		/* start + dword */
+	bic	x9, x9, #7		/* and aligned */
 #ifdef STRNLEN
 	add	x10, x0, x1		/* don't go past here */
 #endif
@@ -93,16 +94,16 @@ ENTRY(FUNCNAME)
 	 * We know there is a NUL in this dword.  Use clz to find it.
 	 */
 #ifdef __AARCH64EL__
-	rev	x7, x7			/* convert to BE */
+	rev	x6, x6			/* convert to BE */
 #endif
-	clz	x7, x7			/* find null byte */
-	add	x0, x0, x7, lsr #3	/* add offset to the length */
+	clz	x6, x6			/* find null byte */
+	add	x0, x0, x6, lsr #3	/* add offset to the length */
 
 	add	x0, x0, x4		/* add end to the length */
 	sub	x0, x0, x9		/* subtract start from the length */
 #ifdef STRNLEN
 	cmp	x0, x1			/* did we go too far? */
-cselx0, x0, x1, lt		/* yes, return max length */
+	csel	x0, x0, x1, lt		/* yes, return max length */
 #endif
 	ret
 #ifdef STRNLEN



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

2017-04-13 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Apr 13 07:49:52 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: memmove.S

Log Message:
Comment alignment. No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/string/memmove.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/string/memmove.S
diff -u src/common/lib/libc/arch/arm/string/memmove.S:1.9 src/common/lib/libc/arch/arm/string/memmove.S:1.10
--- src/common/lib/libc/arch/arm/string/memmove.S:1.9	Thu Mar 26 13:34:51 2015
+++ src/common/lib/libc/arch/arm/string/memmove.S	Thu Apr 13 07:49:52 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: memmove.S,v 1.9 2015/03/26 13:34:51 justin Exp $	*/
+/*	$NetBSD: memmove.S,v 1.10 2017/04/13 07:49:52 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@ ENTRY(bcopy)
 	ands	r12, r0, #3
 	bne	.Lmemmove_fdestul	/* oh unaligned destination addr */
 	ands	r12, r1, #3
-	bne	.Lmemmove_fsrcul		/* oh unaligned source addr */
+	bne	.Lmemmove_fsrcul	/* oh unaligned source addr */
 
 .Lmemmove_ft8:
 	/* We have aligned source and destination */



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

2017-01-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Jan 14 04:54:42 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: strcpy_naive.S

Log Message:
fix standalone


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/strcpy_naive.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/string/strcpy_naive.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.8
--- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7	Fri Jan 13 23:53:25 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_naive.S	Fri Jan 13 23:54:42 2017
@@ -28,7 +28,7 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_naive.S,v 1.7 2017/01/14 04:53:25 christos Exp $")
+RCSID("$NetBSD: strcpy_naive.S,v 1.8 2017/01/14 04:54:42 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
@@ -82,12 +82,12 @@ ENTRY(strncpy)
 END(strncpy)
 #else
 /* LINTSTUB: char * strcpy(char *, const char *) */
-ENTRY(_strcpy)
+ENTRY(strcpy)
 	mov	ip, r0			/* we want to preserve r0 */
 1:	ldrb	r3, [r1], #1		/* read a byte */
 	strb	r3, [ip], #1		/* write a byte */
 	teq	r3, #0			/* was it a NUL? */
 	bne	1b			/*   no, try next byte */
 	RET/* return dst pointer */
-END(_strcpy)
+END(strcpy)
 #endif



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

2017-01-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Jan 14 04:53:25 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: strcpy_naive.S

Log Message:
fix standalone


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/string/strcpy_naive.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/string/strcpy_naive.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7
--- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6	Fri Jan 13 22:35:21 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_naive.S	Fri Jan 13 23:53:25 2017
@@ -28,7 +28,7 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_naive.S,v 1.6 2017/01/14 03:35:21 christos Exp $")
+RCSID("$NetBSD: strcpy_naive.S,v 1.7 2017/01/14 04:53:25 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
@@ -66,7 +66,7 @@ ENTRY(strlcpy)
 END(strlcpy)
 #elif defined(STRNCPY)
 /* LINTSTUB: char * strncpy(char *, const char *, size_t) */
-ENTRY(_strncpy)
+ENTRY(strncpy)
 	mov	ip, r0			/* we want to preserve r0 */
 	add	r2, r2, r0		/* get end of dst buffer */
 1:	cmp	ip, r2			/* are at the end of dst already? */
@@ -79,7 +79,7 @@ ENTRY(_strncpy)
 	strblt	r3, [ip], #1		/*   no, write a NUL */
 	blt	2b			/*   until dst is filled */
 3:	RET/* return dst pointer */
-END(_strncpy)
+END(strncpy)
 #else
 /* LINTSTUB: char * strcpy(char *, const char *) */
 ENTRY(_strcpy)



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

2017-01-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Jan 14 03:35:21 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_naive.S

Log Message:
fix rump


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/string/strcpy_arm.S \
src/common/lib/libc/arch/arm/string/strcpy_naive.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/string/strcpy_arm.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.6
--- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5	Fri Jan 13 22:00:13 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_arm.S	Fri Jan 13 22:35:21 2017
@@ -29,19 +29,29 @@
 
 #include 
 
-RCSID("$NetBSD: strcpy_arm.S,v 1.5 2017/01/14 03:00:13 christos Exp $")
+RCSID("$NetBSD: strcpy_arm.S,v 1.6 2017/01/14 03:35:21 christos Exp $")
 
 #ifdef STRLCPY
 #ifdef _LIBC
 WEAK_ALIAS(strlcpy, _strlcpy)
-#endif
-#define	FUNCNAME	_strlcpy
+#  define	FUNCNAME	_strlcpy
+# else
+#  define	FUNCNAME	strlcpy
+# endif
 #elif defined(STRNCPY)
+# ifdef _LIBC
 WEAK_ALIAS(strncpy, _strncpy)
-#define	FUNCNAME	_strncpy
+#  define	FUNCNAME	_strncpy
+# else
+#  define	FUNCNAME	strncpy
+# endif
 #else
+# ifdef _LIBC
 WEAK_ALIAS(strcpy, _strcpy)
-#define	FUNCNAME	_strcpy
+#  define	FUNCNAME	_strcpy
+# else
+#  define	FUNCNAME	strcpy
+# endif
 #endif
 
 #ifdef __ARMEL__
Index: src/common/lib/libc/arch/arm/string/strcpy_naive.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6
--- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5	Fri Jan 13 08:14:54 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_naive.S	Fri Jan 13 22:35:21 2017
@@ -28,11 +28,12 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_naive.S,v 1.5 2017/01/13 13:14:54 christos Exp $")
+RCSID("$NetBSD: strcpy_naive.S,v 1.6 2017/01/14 03:35:21 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
 WEAK_ALIAS(strlcpy, _strlcpy)   
+#define strlcpy _strlcpy
 #endif
 #endif
 
@@ -43,7 +44,7 @@ WEAK_ALIAS(strlcpy, _strlcpy)   
 
 #if defined(STRLCPY)
 /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */
-ENTRY(_strlcpy)
+ENTRY(strlcpy)
 	add	ip, r1, #1		/* save src pointer (+ NUL) */
 	subs	r2, r2, #1		/* make sure there's room for a NUL */
 	blt	3f			/*   no room, do the strlen */
@@ -62,7 +63,7 @@ ENTRY(_strlcpy)
 	bne	3b			/*   no, get next byte */
 4:	sub	r0, r1, ip 		/* return length of src string */
 	RET
-END(_strlcpy)
+END(strlcpy)
 #elif defined(STRNCPY)
 /* LINTSTUB: char * strncpy(char *, const char *, size_t) */
 ENTRY(_strncpy)



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

2017-01-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Jan 14 03:00:13 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_thumb.S
strlcat.S

Log Message:
fix weak symbols. More work needs to be done for memcpy/strlen etc.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/strcpy_arm.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/string/strcpy_thumb.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/string/strlcat.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/string/strcpy_arm.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5
--- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4	Fri Jan 13 08:14:54 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_arm.S	Fri Jan 13 22:00:13 2017
@@ -29,7 +29,7 @@
 
 #include 
 
-RCSID("$NetBSD: strcpy_arm.S,v 1.4 2017/01/13 13:14:54 christos Exp $")
+RCSID("$NetBSD: strcpy_arm.S,v 1.5 2017/01/14 03:00:13 christos Exp $")
 
 #ifdef STRLCPY
 #ifdef _LIBC
@@ -37,8 +37,10 @@ WEAK_ALIAS(strlcpy, _strlcpy)
 #endif
 #define	FUNCNAME	_strlcpy
 #elif defined(STRNCPY)
+WEAK_ALIAS(strncpy, _strncpy)
 #define	FUNCNAME	_strncpy
 #else
+WEAK_ALIAS(strcpy, _strcpy)
 #define	FUNCNAME	_strcpy
 #endif
 

Index: src/common/lib/libc/arch/arm/string/strcpy_thumb.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2 src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.3
--- src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2	Fri Jan 13 08:14:54 2017
+++ src/common/lib/libc/arch/arm/string/strcpy_thumb.S	Fri Jan 13 22:00:13 2017
@@ -28,11 +28,20 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_thumb.S,v 1.2 2017/01/13 13:14:54 christos Exp $")
+RCSID("$NetBSD: strcpy_thumb.S,v 1.3 2017/01/14 03:00:13 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
-WEAK_ALIAS(strlcpy, _strlcpy)   
+WEAK_ALIAS(strlcpy, _strlcpy)
+#define strlcpy _strlcpy
+#endif
+#ifdef STRNCPY
+WEAK_ALIAS(strncpy, _strncpy)
+#define strncpy _strncpy
+#endif
+#ifdef STRCPY
+WEAK_ALIAS(strcpy, _strcpy)
+#define strcpy _strcpy
 #endif
 #endif
 
@@ -43,7 +52,7 @@ WEAK_ALIAS(strlcpy, _strlcpy)   
 
 #if defined(STRLCPY)
 /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */
-ENTRY(_strlcpy)
+ENTRY(strlcpy)
 	adds	r3, r1, #1		/* save src pointer (+ NUL) */
 	subs	r2, r2, #1		/* make sure there's room for a NUL */
 	blt	3f			/*   no room, do the strlen */
@@ -65,10 +74,10 @@ ENTRY(_strlcpy)
 	bne	3b			/*   no, get next byte */
 4:	subs	r0, r1, r3 		/* return length of src string */
 	RET
-END(_strlcpy)
+END(strlcpy)
 #elif defined(STRNCPY)
 /* LINTSTUB: char * strncpy(char *, const char *, size_t) */
-ENTRY(_strncpy)
+ENTRY(strncpy)
 	mov	ip, r0			/* we want to preserve r0 */
 	adds	r2, r2, r0		/* get end of dst buffer */
 	subs	r1, r1, r0		/* allows to only increment once */
@@ -86,10 +95,10 @@ ENTRY(_strncpy)
 	b	2b			/* until dst is filled */
 3:	mov	r0, ip			/* return dst pointer */
 	RET
-END(_strncpy)
+END(strncpy)
 #else
 /* LINTSTUB: char * strcpy(char *, const char *) */
-ENTRY(_strcpy)
+ENTRY(strcpy)
 	subs	r2, r0, r1		/* we want to preserve r0 */
 1:	ldrb	r3, [r1]		/* read a byte */
 	strb	r3, [r2, r1]		/* write a byte */
@@ -97,5 +106,5 @@ ENTRY(_strcpy)
 	cmp	r3, #0			/* was it a NUL? */
 	bne	1b			/*   no, try next byte */
 	RET/* return dst pointer */
-END(_strcpy)
+END(strcpy)
 #endif

Index: src/common/lib/libc/arch/arm/string/strlcat.S
diff -u src/common/lib/libc/arch/arm/string/strlcat.S:1.3 src/common/lib/libc/arch/arm/string/strlcat.S:1.4
--- src/common/lib/libc/arch/arm/string/strlcat.S:1.3	Fri Jan 13 08:14:54 2017
+++ src/common/lib/libc/arch/arm/string/strlcat.S	Fri Jan 13 22:00:13 2017
@@ -1,9 +1,10 @@
-/* $NetBSD: strlcat.S,v 1.3 2017/01/13 13:14:54 christos Exp $ */
+/* $NetBSD: strlcat.S,v 1.4 2017/01/14 03:00:13 christos Exp $ */
 
 #include 
 
 #ifdef _LIBC
 WEAK_ALIAS(strlcat, _strlcat)
+#define strlcat _strlcat
 #endif
 
 #if defined(_STANDALONE) && 0	/* arm version is always smaller */



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

2017-01-13 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Fri Jan 13 13:14:54 UTC 2017

Modified Files:
src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_naive.S
strcpy_thumb.S strlcat.S

Log Message:
No need to include namespace.h; no other assembly code does.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/string/strcpy_arm.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/strcpy_naive.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/string/strcpy_thumb.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/string/strlcat.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/string/strcpy_arm.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.3 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4
--- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.3	Sun Aug 11 00:56:32 2013
+++ src/common/lib/libc/arch/arm/string/strcpy_arm.S	Fri Jan 13 08:14:54 2017
@@ -29,21 +29,17 @@
 
 #include 
 
-RCSID("$NetBSD: strcpy_arm.S,v 1.3 2013/08/11 04:56:32 matt Exp $")
+RCSID("$NetBSD: strcpy_arm.S,v 1.4 2017/01/13 13:14:54 christos Exp $")
 
 #ifdef STRLCPY
 #ifdef _LIBC
 WEAK_ALIAS(strlcpy, _strlcpy)
 #endif
-#define	FUNCNAME	strlcpy
+#define	FUNCNAME	_strlcpy
 #elif defined(STRNCPY)
-#define	FUNCNAME	strncpy
+#define	FUNCNAME	_strncpy
 #else
-#define	FUNCNAME	strcpy
-#endif
-
-#ifdef _LIBC
-#include "namespace.h"
+#define	FUNCNAME	_strcpy
 #endif
 
 #ifdef __ARMEL__

Index: src/common/lib/libc/arch/arm/string/strcpy_naive.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.4 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5
--- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.4	Tue Aug 20 17:37:39 2013
+++ src/common/lib/libc/arch/arm/string/strcpy_naive.S	Fri Jan 13 08:14:54 2017
@@ -28,13 +28,12 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_naive.S,v 1.4 2013/08/20 21:37:39 matt Exp $")
+RCSID("$NetBSD: strcpy_naive.S,v 1.5 2017/01/13 13:14:54 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
 WEAK_ALIAS(strlcpy, _strlcpy)   
 #endif
-#include "namespace.h"
 #endif
 
 /*
@@ -44,7 +43,7 @@ WEAK_ALIAS(strlcpy, _strlcpy)   
 
 #if defined(STRLCPY)
 /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */
-ENTRY(strlcpy)
+ENTRY(_strlcpy)
 	add	ip, r1, #1		/* save src pointer (+ NUL) */
 	subs	r2, r2, #1		/* make sure there's room for a NUL */
 	blt	3f			/*   no room, do the strlen */
@@ -63,10 +62,10 @@ ENTRY(strlcpy)
 	bne	3b			/*   no, get next byte */
 4:	sub	r0, r1, ip 		/* return length of src string */
 	RET
-END(strlcpy)
+END(_strlcpy)
 #elif defined(STRNCPY)
 /* LINTSTUB: char * strncpy(char *, const char *, size_t) */
-ENTRY(strncpy)
+ENTRY(_strncpy)
 	mov	ip, r0			/* we want to preserve r0 */
 	add	r2, r2, r0		/* get end of dst buffer */
 1:	cmp	ip, r2			/* are at the end of dst already? */
@@ -79,15 +78,15 @@ ENTRY(strncpy)
 	strblt	r3, [ip], #1		/*   no, write a NUL */
 	blt	2b			/*   until dst is filled */
 3:	RET/* return dst pointer */
-END(strncpy)
+END(_strncpy)
 #else
 /* LINTSTUB: char * strcpy(char *, const char *) */
-ENTRY(strcpy)
+ENTRY(_strcpy)
 	mov	ip, r0			/* we want to preserve r0 */
 1:	ldrb	r3, [r1], #1		/* read a byte */
 	strb	r3, [ip], #1		/* write a byte */
 	teq	r3, #0			/* was it a NUL? */
 	bne	1b			/*   no, try next byte */
 	RET/* return dst pointer */
-END(strcpy)
+END(_strcpy)
 #endif

Index: src/common/lib/libc/arch/arm/string/strcpy_thumb.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.1 src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2
--- src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.1	Tue Aug 20 17:32:50 2013
+++ src/common/lib/libc/arch/arm/string/strcpy_thumb.S	Fri Jan 13 08:14:54 2017
@@ -28,13 +28,12 @@
  */
 #include 
 
-RCSID("$NetBSD: strcpy_thumb.S,v 1.1 2013/08/20 21:32:50 matt Exp $")
+RCSID("$NetBSD: strcpy_thumb.S,v 1.2 2017/01/13 13:14:54 christos Exp $")
 
 #ifdef _LIBC
 #ifdef STRLCPY
 WEAK_ALIAS(strlcpy, _strlcpy)   
 #endif
-#include "namespace.h"
 #endif
 
 /*
@@ -44,7 +43,7 @@ WEAK_ALIAS(strlcpy, _strlcpy)   
 
 #if defined(STRLCPY)
 /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */
-ENTRY(strlcpy)
+ENTRY(_strlcpy)
 	adds	r3, r1, #1		/* save src pointer (+ NUL) */
 	subs	r2, r2, #1		/* make sure there's room for a NUL */
 	blt	3f			/*   no room, do the strlen */
@@ -66,10 +65,10 @@ ENTRY(strlcpy)
 	bne	3b			/*   no, get next byte */
 4:	subs	r0, r1, r3 		/* return length of src string */
 	RET
-END(strlcpy)
+END(_strlcpy)
 #elif defined(STRNCPY)
 /* LINTSTUB: char * strncpy(char *, const char *, size_t) */
-ENTRY(strncpy)
+ENTRY(_strncpy)
 	mov	ip, r0			/* we want to preserve r0 */
 	adds	r2, r2, r0		/* get end of dst buffer */
 	subs	r1, r1, r0		/* allows to only increment once */
@@ -87,10 +86,10 @@ ENTRY(strncpy)
 	b	2b			/* until 

CVS commit: src/common/lib/libc/arch/ia64/string

2016-08-05 Thread Sean Cole
Module Name:src
Committed By:   scole
Date:   Fri Aug  5 15:06:02 UTC 2016

Added Files:
src/common/lib/libc/arch/ia64/string: bcopy.S bzero.S ffs.S memcpy.S
memmove.S

Log Message:
PR port-ia64/51261

Imported from FreeBSD with a minor change or two


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/ia64/string/bcopy.S \
src/common/lib/libc/arch/ia64/string/bzero.S \
src/common/lib/libc/arch/ia64/string/ffs.S \
src/common/lib/libc/arch/ia64/string/memcpy.S \
src/common/lib/libc/arch/ia64/string/memmove.S

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/ia64/string/bcopy.S
diff -u /dev/null src/common/lib/libc/arch/ia64/string/bcopy.S:1.1
--- /dev/null	Fri Aug  5 15:06:02 2016
+++ src/common/lib/libc/arch/ia64/string/bcopy.S	Fri Aug  5 15:06:02 2016
@@ -0,0 +1,102 @@
+/*	$NetBSD: bcopy.S,v 1.1 2016/08/05 15:06:02 scole Exp $	*/
+
+/*-
+ * Copyright (c) 2000 Doug Rabson
+ * All rights reserved.
+ *
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * __FBSDID("$FreeBSD: releng/10.1/lib/libc/ia64/string/bcopy.S 125669 2004-02-10 20:45:28Z cperciva $");
+ */
+
+#include 
+
+/*
+ * void
+ * bcopy(const void *src, void *dst, size_t len);
+ */
+
+/*
+ * Not the fastest bcopy in the world.
+ */
+ENTRY(bcopy, 3)
+
+	cmp.le	p6,p0=in2,r0			// bail if len <= 0
+(p6)	br.ret.spnt.few rp
+
+	sub	r14=in1,in0 ;;			// check for overlap
+	cmp.ltu	p6,p0=r14,in2			// dst-src < len
+(p6)	br.cond.spnt.few 5f
+
+	extr.u	r14=in0,0,3			// src & 7
+	extr.u	r15=in1,0,3 ;;			// dst & 7
+	cmp.eq	p6,p0=r14,r15			// different alignment?
+(p6)	br.cond.spnt.few 2f			// branch if same alignment
+
+1:	ld1	r14=[in0],1 ;;			// copy bytewise
+	st1	[in1]=r14,1
+	add	in2=-1,in2 ;;			// len--
+	cmp.ne	p6,p0=r0,in2
+(p6)	br.cond.dptk.few 1b			// loop
+	br.ret.sptk.few rp			// done
+
+2:	cmp.eq	p6,p0=r14,r0			// aligned?
+(p6)	br.cond.sptk.few 4f
+
+3:	ld1	r14=[in0],1 ;;			// copy bytewise
+	st1	[in1]=r14,1
+	extr.u	r15=in0,0,3			// src & 7
+	add	in2=-1,in2 ;;			// len--
+	cmp.eq	p6,p0=r0,in2			// done?
+	cmp.eq	p7,p0=r0,r15 ;;			// aligned now?
+(p6)	br.ret.spnt.few rp			// return if done
+(p7)	br.cond.spnt.few 4f			// go to main copy
+	br.cond.sptk.few 3b			// more bytes to copy
+
+	// At this point, in2 is non-zero
+
+4:	mov	r14=8 ;;
+	cmp.ltu	p6,p0=in2,r14 ;;		// len < 8?
+(p6)	br.cond.spnt.few 1b			// byte copy the end
+	ld8	r15=[in0],8 ;;			// copy word
+	st8	[in1]=r15,8
+	add	in2=-8,in2 ;;			// len -= 8
+	cmp.ne	p6,p0=r0,in2			// done?
+(p6)	br.cond.spnt.few 4b			// again
+
+	br.ret.sptk.few rp			// return
+
+	// Don't bother optimising overlap case
+
+5:	add	in0=in0,in2
+	add	in1=in1,in2 ;;
+	add	in0=-1,in0
+	add	in1=-1,in1 ;;
+
+6:	ld1	r14=[in0],-1 ;;
+	st1	[in1]=r14,-1
+	add	in2=-1,in2 ;;
+	cmp.ne	p6,p0=r0,in2
+(p6)	br.cond.spnt.few 6b
+
+	br.ret.sptk.few rp
+END(bcopy)
Index: src/common/lib/libc/arch/ia64/string/bzero.S
diff -u /dev/null src/common/lib/libc/arch/ia64/string/bzero.S:1.1
--- /dev/null	Fri Aug  5 15:06:02 2016
+++ src/common/lib/libc/arch/ia64/string/bzero.S	Fri Aug  5 15:06:02 2016
@@ -0,0 +1,88 @@
+/*	$NetBSD: bzero.S,v 1.1 2016/08/05 15:06:02 scole Exp $	*/	
+
+/*-
+ * Copyright (c) 2000 Doug Rabson
+ * All rights reserved.
+ *
+ * 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
+ *

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

2016-05-28 Thread Takeshi Nakayama
Module Name:src
Committed By:   nakayama
Date:   Sun May 29 05:10:34 UTC 2016

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

Log Message:
Use sparc64 code always on 32-bit sparc64 kernels since %psr read/write
instructions used in sparc's atomic_cas.S don't exist in SPARC-V9.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.22
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21	Sat Feb 27 19:19:33 2016
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Sun May 29 05:10:34 2016
@@ -1,10 +1,11 @@
-#	$NetBSD: Makefile.inc,v 1.21 2016/02/27 19:19:33 joerg Exp $
+#	$NetBSD: Makefile.inc,v 1.22 2016/05/29 05:10:34 nakayama Exp $
 
 .include 
 
 # This is called with MACHINE=sparc64 && MACHINE_ARCH=sparc when building
 # 32 bit kernels for ultrasparc hardware
-.if ${MACHINE} == "sparc64" && ${HAVE_LLVM:Uno} == "no"
+.if ${MACHINE} == "sparc64" && \
+	(${HAVE_LLVM:Uno} == "no" || (defined(LIB) && ${LIB} == "kern"))
 
 SPARC64DIR=	${.PARSEDIR}/../../sparc64/atomic
 .PATH.c: ${SPARC64DIR}



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

2016-02-27 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Feb 27 19:19:33 UTC 2016

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

Log Message:
When using clang, do not use the sparc64 code as it doesn't provide the
full set of symbols and clang in -m32 defaults to sparcv8, not
sparcv8plus.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20	Sat Feb 27 19:18:29 2016
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Sat Feb 27 19:19:33 2016
@@ -1,10 +1,10 @@
-#	$NetBSD: Makefile.inc,v 1.20 2016/02/27 19:18:29 joerg Exp $
+#	$NetBSD: Makefile.inc,v 1.21 2016/02/27 19:19:33 joerg Exp $
 
 .include 
 
 # This is called with MACHINE=sparc64 && MACHINE_ARCH=sparc when building
 # 32 bit kernels for ultrasparc hardware
-.if ${MACHINE} == "sparc64"
+.if ${MACHINE} == "sparc64" && ${HAVE_LLVM:Uno} == "no"
 
 SPARC64DIR=	${.PARSEDIR}/../../sparc64/atomic
 .PATH.c: ${SPARC64DIR}



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

2016-02-27 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Feb 27 19:18:29 UTC 2016

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

Log Message:
Include C11 load/store helpers.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19	Sun Oct 18 02:28:07 2015
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Sat Feb 27 19:18:29 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.19 2015/10/18 02:28:07 nakayama Exp $
+#	$NetBSD: Makefile.inc,v 1.20 2016/02/27 19:18:29 joerg Exp $
 
 .include 
 
@@ -43,7 +43,8 @@ SRCS+=	atomic_nand_16_cas.c atomic_nand_
 	atomic_swap_16_cas.c atomic_swap_8_cas.c	\
 	atomic_c11_compare_exchange_cas_32.c		\
 	atomic_c11_compare_exchange_cas_16.c		\
-	atomic_c11_compare_exchange_cas_8.c
+	atomic_c11_compare_exchange_cas_8.c \
+	atomic_load.c atomic_store.c
 .  endif
 
 .  if (${LIB} == "kern" || ${LIB} == "rump")



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

2015-10-17 Thread Takeshi Nakayama
Module Name:src
Committed By:   nakayama
Date:   Sun Oct 18 02:28:07 UTC 2015

Modified Files:
src/common/lib/libc/arch/sparc/atomic: Makefile.inc
src/common/lib/libc/arch/sparc64/atomic: atomic_add.S atomic_and.S
atomic_cas.S atomic_dec.S atomic_inc.S atomic_op_asm.h atomic_or.S
atomic_swap.S

Log Message:
Fix 64-bit atomic operations on 32-bit kernel and userland, and add
support for missing __sync_*_8 builtins.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/sparc/atomic/Makefile.inc
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/sparc64/atomic/atomic_add.S \
src/common/lib/libc/arch/sparc64/atomic/atomic_and.S \
src/common/lib/libc/arch/sparc64/atomic/atomic_cas.S \
src/common/lib/libc/arch/sparc64/atomic/atomic_inc.S \
src/common/lib/libc/arch/sparc64/atomic/atomic_op_asm.h \
src/common/lib/libc/arch/sparc64/atomic/atomic_swap.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/sparc64/atomic/atomic_dec.S \
src/common/lib/libc/arch/sparc64/atomic/atomic_or.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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18	Mon Oct 13 08:59:41 2014
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Sun Oct 18 02:28:07 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.18 2014/10/13 08:59:41 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.19 2015/10/18 02:28:07 nakayama Exp $
 
 .include 
 
@@ -12,6 +12,12 @@ SPARC64DIR=	${.PARSEDIR}/../../sparc64/a
 
 .include "${SPARC64DIR}/Makefile.inc"
 
+.if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \
+	|| ${LIB} == "rump")
+SRCS+=	atomic_nand_64_cas.c atomic_xor_64_cas.c atomic_sub_64_cas.c \
+	atomic_cas_64_cas.c
+.endif
+
 .else
 
 . if defined(LIB)

Index: src/common/lib/libc/arch/sparc64/atomic/atomic_add.S
diff -u src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.6 src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.7
--- src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.6	Sun May 25 15:56:12 2008
+++ src/common/lib/libc/arch/sparc64/atomic/atomic_add.S	Sun Oct 18 02:28:07 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add.S,v 1.6 2008/05/25 15:56:12 chs Exp $	*/
+/*	$NetBSD: atomic_add.S,v 1.7 2015/10/18 02:28:07 nakayama Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -52,14 +52,22 @@ ATOMIC_OP_ALIAS(atomic_add_int_nv,_atomi
 STRONG_ALIAS(_atomic_add_int_nv,_atomic_add_32)
 
 ENTRY(_atomic_add_64)
+#ifndef __arch64__
+	COMBINE(%o1, %o2, %o1)
+#endif
 	ldx	[%o0], %o2
 1:	add	%o1, %o2, %o3
 	casx	[%o0], %o2, %o3
 	cmp	%o2, %o3
 	bne,a,pn %xcc, 1b
 	 mov	%o3, %o2
+#ifdef __arch64__
 	retl
 	 add	%o1, %o2, %o0
+#else
+	add	%o1, %o2, %o0
+	SPLIT_RETL(%o0, %o0, %o1)
+#endif
 ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64)
 
 ATOMIC_OP_ALIAS(atomic_add_64_nv,_atomic_add_64)
@@ -74,3 +82,19 @@ ATOMIC_OP_ALIAS_SIZE(atomic_add_long_nv,
 STRONG_ALIAS_SIZE(_atomic_add_long_nv,_atomic_add)
 ATOMIC_OP_ALIAS_SIZE(atomic_add_ptr_nv,_atomic_add)
 STRONG_ALIAS_SIZE(_atomic_add_ptr_nv,_atomic_add)
+
+#if !defined(__arch64__) && defined(CRT_ALIAS)
+ENTRY(__sync_fetch_and_add_8)
+	COMBINE(%o1, %o2, %o1)
+	ldx	[%o0], %o2
+1:	add	%o1, %o2, %o3
+	casx	[%o0], %o2, %o3
+	cmp	%o2, %o3
+	bne,a,pn %xcc, 1b
+	 mov	%o3, %o2
+	SPLIT_RETL(%o2, %o0, %o1)
+CRT_ALIAS(__sync_add_and_fetch_8,_atomic_add_64_nv)
+
+CRT_ALIAS(__atomic_fetch_add_8,__sync_fetch_and_add_8)
+CRT_ALIAS(__atomic_add_fetch_8,__sync_add_and_fetch_8)
+#endif
Index: src/common/lib/libc/arch/sparc64/atomic/atomic_and.S
diff -u src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.6 src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.7
--- src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.6	Sun May 25 15:56:12 2008
+++ src/common/lib/libc/arch/sparc64/atomic/atomic_and.S	Sun Oct 18 02:28:07 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and.S,v 1.6 2008/05/25 15:56:12 chs Exp $	*/
+/*	$NetBSD: atomic_and.S,v 1.7 2015/10/18 02:28:07 nakayama Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -52,14 +52,22 @@ ATOMIC_OP_ALIAS(atomic_and_uint_nv,_atom
 STRONG_ALIAS(_atomic_and_uint_nv,_atomic_and_32)
 
 ENTRY(_atomic_and_64)
+#ifndef __arch64__
+	COMBINE(%o1, %o2, %o1)
+#endif
 	ldx	[%o0], %o2
 1:	and	%o1, %o2, %o3
 	casx	[%o0], %o2, %o3
 	cmp	%o2, %o3
 	bne,a,pn %xcc, 1b
 	 mov	%o3, %o2
+#ifdef __arch64__
 	retl
 	 and	%o1, %o2, %o0
+#else
+	and	%o1, %o2, %o0
+	SPLIT_RETL(%o0, %o0, %o1)
+#endif
 ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64)
 
 ATOMIC_OP_ALIAS(atomic_and_64_nv,_atomic_and_64)
@@ -70,3 +78,19 @@ STRONG_ALIAS_SIZE(_atomic_and_ulong,_ato
 
 ATOMIC_OP_ALIAS_SIZE(atomic_and_ulong_nv,_atomic_and)
 

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

2015-07-10 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Fri Jul 10 20:16:01 UTC 2015

Modified Files:
src/common/lib/libc/arch/m68k/atomic: atomic_cas.S

Log Message:
fix comment


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/m68k/atomic/atomic_cas.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/m68k/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.13
--- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12	Sat Jul  4 07:11:45 2015
+++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S	Fri Jul 10 20:16:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.12 2015/07/04 07:11:45 isaki Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.13 2015/07/10 20:16:01 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@ ENTRY(__sync_bool_compare_and_swap_2)
 	movw	8+2(%sp), %d0		/* lower word */
 	movw	12+2(%sp), %d1		/* lower word */
 	casw	%d0, %d1, (%a0)
-	/* %d3 now contains the old value */
+	/* %d0 now contains the old value */
 	beqs	1f
 	clrl	%d0	/* return failure */
 	rts
@@ -116,7 +116,7 @@ ENTRY(__sync_bool_compare_and_swap_1)
 	movb	8+3(%sp), %d0		/* lower byte */
 	movb	12+3(%sp), %d1		/* lower byte */
 	casb	%d0, %d1, (%a0)
-	/* %d3 now contains the old value */
+	/* %d0 now contains the old value */
 	beqs	1f
 	clrl	%d0	/* return failure */
 	rts



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

2015-07-04 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Sat Jul  4 06:56:29 UTC 2015

Modified Files:
src/common/lib/libc/arch/m68k/atomic: atomic_cas.S

Log Message:
atomic_cas_{8,16}:
 - Correct the wrong offset in stack.
__sync_bool_compare_and_swap_{1,2,4}:
 - Correct the wrong offset in stack.
 - D3 must be preserved in subroutines.
PR/49995.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/m68k/atomic/atomic_cas.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/m68k/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11
--- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.10	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S	Sat Jul  4 06:56:29 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.10 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.11 2015/07/04 06:56:29 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -63,11 +63,9 @@ STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_
 
 ENTRY(__sync_bool_compare_and_swap_4)
 	movl	4(%sp), %a0
-	movl	8(%sp), %d3
-	movl	%d3, %d2
+	movl	8(%sp), %d0
 	movl	12(%sp), %d1
-	casl	%d3, %d1, (%a0)
-	/* %d3 now contains the old value */
+	casl	%d0, %d1, (%a0)
 	beq	1f
 	clrl	%d0	/* return false */
 	rts
@@ -77,8 +75,8 @@ END(__sync_bool_compare_and_swap_4)
 
 ENTRY(_atomic_cas_16)
 	movl	4(%sp), %a0
-	movw	8(%sp), %d0
-	movw	10(%sp), %d1
+	movw	8+2(%sp), %d0		/* lower word */
+	movw	12+2(%sp), %d1		/* lower word */
 	casw	%d0, %d1, (%a0)
 	/* %d0 now contains the old value */
 	rts
@@ -89,10 +87,9 @@ CRT_ALIAS(__sync_val_compare_and_swap_2,
 
 ENTRY(__sync_bool_compare_and_swap_2)
 	movl	4(%sp), %a0
-	movw	8(%sp), %d3
-	movw	%d3, %d2
-	movw	10(%sp), %d1
-	casw	%d3, %d1, (%a0)
+	movw	8+2(%sp), %d0		/* lower word */
+	movw	12+2(%sp), %d1		/* lower word */
+	casw	%d0, %d1, (%a0)
 	/* %d3 now contains the old value */
 	beq	1f
 	clrl	%d0	/* return failure */
@@ -103,8 +100,8 @@ END(__sync_bool_compare_and_swap_2)
 
 ENTRY(_atomic_cas_8)
 	movl	4(%sp), %a0
-	movb	8(%sp), %d0
-	movb	9(%sp), %d1
+	movb	8+3(%sp), %d0		/* lower byte */
+	movb	12+3(%sp), %d1		/* lower byte */
 	casb	%d0, %d1, (%a0)
 	/* %d0 now contains the old value */
 	rts
@@ -116,10 +113,9 @@ CRT_ALIAS(__sync_val_compare_and_swap_1,
 
 ENTRY(__sync_bool_compare_and_swap_1)
 	movl	4(%sp), %a0
-	movb	8(%sp), %d3
-	movb	%d3, %d2
-	movb	9(%sp), %d1
-	casb	%d3, %d1, (%a0)
+	movb	8+3(%sp), %d0		/* lower byte */
+	movb	12+3(%sp), %d1		/* lower byte */
+	casb	%d0, %d1, (%a0)
 	/* %d3 now contains the old value */
 	beq	1f
 	clrl	%d0	/* return failure */



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

2015-07-04 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Sat Jul  4 07:11:45 UTC 2015

Modified Files:
src/common/lib/libc/arch/m68k/atomic: atomic_cas.S

Log Message:
Improve the code in __sync_bool_compare_and_swap_{1,2,4}.
- bccs is smaller and faster than bcc(.w) in this case.
- it can be used movql in this case (assembler optimise it though).


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/m68k/atomic/atomic_cas.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/m68k/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12
--- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11	Sat Jul  4 06:56:29 2015
+++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S	Sat Jul  4 07:11:45 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.11 2015/07/04 06:56:29 isaki Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.12 2015/07/04 07:11:45 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -66,10 +66,10 @@ ENTRY(__sync_bool_compare_and_swap_4)
 	movl	8(%sp), %d0
 	movl	12(%sp), %d1
 	casl	%d0, %d1, (%a0)
-	beq	1f
+	beqs	1f
 	clrl	%d0	/* return false */
 	rts
-1:	movl	#1, %d0	/* return success */
+1:	movql	#1, %d0	/* return success */
 	rts
 END(__sync_bool_compare_and_swap_4)
 
@@ -91,10 +91,10 @@ ENTRY(__sync_bool_compare_and_swap_2)
 	movw	12+2(%sp), %d1		/* lower word */
 	casw	%d0, %d1, (%a0)
 	/* %d3 now contains the old value */
-	beq	1f
+	beqs	1f
 	clrl	%d0	/* return failure */
 	rts
-1:	movl	#1, %d0	/* return success */
+1:	movql	#1, %d0	/* return success */
 	rts
 END(__sync_bool_compare_and_swap_2)
 
@@ -117,10 +117,10 @@ ENTRY(__sync_bool_compare_and_swap_1)
 	movb	12+3(%sp), %d1		/* lower byte */
 	casb	%d0, %d1, (%a0)
 	/* %d3 now contains the old value */
-	beq	1f
+	beqs	1f
 	clrl	%d0	/* return failure */
 	rts
-1:	movl	#1, %d0	/* return success */
+1:	movql	#1, %d0	/* return success */
 	rts
 END(__sync_bool_compare_and_swap_1)
 



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

2015-06-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jun 23 20:56:17 UTC 2015

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

Log Message:
Always use sync if mips3 or later or not using O32 ABI.  (A little redundant
since not using O32 means you are using mips3 or later.)


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/mips/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/mips/atomic/membar_ops.S
diff -u src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7 src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.8
--- src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7	Mon Jun 22 06:06:02 2015
+++ src/common/lib/libc/arch/mips/atomic/membar_ops.S	Tue Jun 23 20:56:17 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops.S,v 1.7 2015/06/22 06:06:02 matt Exp $	*/
+/*	$NetBSD: membar_ops.S,v 1.8 2015/06/23 20:56:17 matt Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007 The NetBSD Foundation, Inc.
@@ -31,21 +31,11 @@
 
 #include atomic_op_asm.h
 
-#if defined(_KERNEL)  !defined(_RUMPKERNEL)
-
-#ifdef _KERNEL_OPT
-#include opt_cputype.h
-#include opt_lockdebug.h
-#include opt_multiprocessor.h
-#endif
-
-#include assym.h
-
-#if (MIPS_HAS_LLSC != 0  defined(MULTIPROCESSOR)) || !defined(__mips_o32)
-#define	SYNC		sync
-#endif
-#elif !defined(__mips_o32)
-#define	SYNC		sync
+// If we are on building for MIPS III or later, put in SYNCs
+#if __mips = 3 || !defined(__mips_o32)
+# define SYNC		sync
+#else
+# define SYNC		nop
 #endif
 
 	.text
@@ -53,11 +43,7 @@
 
 LEAF(_membar_sync)
 	j	ra
-#ifdef SYNC
 	 SYNC
-#else
-	 nop
-#endif
 END(_membar_sync)
 
 #ifdef __OCTEON__



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

2015-06-22 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jun 22 06:06:02 UTC 2015

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

Log Message:
#include assym.h
Don't include assym.h with _RUMPKERNEL defined.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/mips/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/mips/atomic/membar_ops.S
diff -u src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.6 src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7
--- src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.6	Mon Jun  1 23:16:54 2015
+++ src/common/lib/libc/arch/mips/atomic/membar_ops.S	Mon Jun 22 06:06:02 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops.S,v 1.6 2015/06/01 23:16:54 matt Exp $	*/
+/*	$NetBSD: membar_ops.S,v 1.7 2015/06/22 06:06:02 matt Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include atomic_op_asm.h
 
-#if defined(_KERNEL)
+#if defined(_KERNEL)  !defined(_RUMPKERNEL)
 
 #ifdef _KERNEL_OPT
 #include opt_cputype.h
@@ -39,8 +39,7 @@
 #include opt_multiprocessor.h
 #endif
 
-
-#include machine/cpu.h
+#include assym.h
 
 #if (MIPS_HAS_LLSC != 0  defined(MULTIPROCESSOR)) || !defined(__mips_o32)
 #define	SYNC		sync



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/string

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

Modified Files:
src/common/lib/libc/arch/arm/string: memcpy.S

Log Message:
Add ARM EABI aliases for aligned arguments.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/memcpy.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/string/memcpy.S
diff -u src/common/lib/libc/arch/arm/string/memcpy.S:1.7 src/common/lib/libc/arch/arm/string/memcpy.S:1.8
--- src/common/lib/libc/arch/arm/string/memcpy.S:1.7	Thu Mar 26 13:34:51 2015
+++ src/common/lib/libc/arch/arm/string/memcpy.S	Sun Jun  7 11:41:59 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: memcpy.S,v 1.7 2015/03/26 13:34:51 justin Exp $	*/
+/*	$NetBSD: memcpy.S,v 1.8 2015/06/07 11:41:59 joerg Exp $	*/
 
 #include arm/cdefs.h
 
@@ -10,4 +10,6 @@
 
 #if defined(__ARM_EABI__)  !defined(_RUMPKERNEL)
 STRONG_ALIAS(__aeabi_memcpy, memcpy)
+STRONG_ALIAS(__aeabi_memcpy4, memcpy)
+STRONG_ALIAS(__aeabi_memcpy8, memcpy)
 #endif



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

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

Modified Files:
src/common/lib/libc/arch/arm: features.mk

Log Message:
Use ${COPT} so it properly emits the right features doing MKCOMPAT


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/features.mk

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/features.mk
diff -u src/common/lib/libc/arch/arm/features.mk:1.1 src/common/lib/libc/arch/arm/features.mk:1.2
--- src/common/lib/libc/arch/arm/features.mk:1.1	Thu Feb 27 09:37:02 2014
+++ src/common/lib/libc/arch/arm/features.mk	Sun Jun  7 15:05:34 2015
@@ -1,9 +1,9 @@
-# $NetBSD: features.mk,v 1.1 2014/02/27 09:37:02 matt Exp $
+# $NetBSD: features.mk,v 1.2 2015/06/07 15:05:34 matt Exp $
 
 .ifnmake obj
 TESTFILE=${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.c
-FEAT_EABI!=if ${COMPILE.c} -fsyntax-only -DEABI_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
-FEAT_LDREX!=if ${COMPILE.c} -fsyntax-only -DLDREX_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
-FEAT_LDRD!=if ${COMPILE.c} -fsyntax-only -DLDRD_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
-FEAT_THUMB2!=if ${COMPILE.c} -fsyntax-only -DTHUMB2_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
+FEAT_EABI!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DEABI_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
+FEAT_LDREX!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DLDREX_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
+FEAT_LDRD!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DLDRD_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
+FEAT_THUMB2!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DTHUMB2_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi
 .endif



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

2015-06-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jun  1 23:16:54 UTC 2015

Modified Files:
src/common/lib/libc/arch/mips/atomic: atomic_add.S atomic_cas.S
atomic_dec.S atomic_inc.S atomic_op_asm.h atomic_swap.S
membar_ops.S

Log Message:
Include OCTEON support for syncw and saa/saad (Store Atomic Add).


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_add.S \
src/common/lib/libc/arch/mips/atomic/atomic_dec.S \
src/common/lib/libc/arch/mips/atomic/atomic_inc.S \
src/common/lib/libc/arch/mips/atomic/atomic_swap.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/atomic/atomic_cas.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/atomic/atomic_op_asm.h
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/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/mips/atomic/atomic_add.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5
--- src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.4	Wed Mar 14 16:50:34 2012
+++ src/common/lib/libc/arch/mips/atomic/atomic_add.S	Mon Jun  1 23:16:54 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add.S,v 1.4 2012/03/14 16:50:34 christos Exp $	*/
+/*	$NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include machine/asm.h
 #include atomic_op_asm.h
 
-RCSID($NetBSD: atomic_add.S,v 1.4 2012/03/14 16:50:34 christos Exp $)
+RCSID($NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $)
 
 	.text
 	.set	noreorder
@@ -46,12 +46,16 @@ RCSID($NetBSD: atomic_add.S,v 1.4 2012/
 
 
 LEAF(_atomic_add_32)
+#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2)
+	saa		a1, (a0)
+#else
 1:	INT_LL		t0, 0(a0)
 	 nop
 	INT_ADDU	t0, a1
 	INT_SC		t0, 0(a0)
 	beq		t0, zero, 1b
  	 nop
+#endif
 	j		ra
 	 nop
 END(_atomic_add_32)
@@ -72,12 +76,16 @@ ATOMIC_OP_ALIAS(atomic_add_32_nv, _atomi
 
 #if !defined(__mips_o32)
 LEAF(_atomic_add_64)
+#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2)
+	saad		a1, (a0)
+#else
 1:	REG_LL		t0, 0(a0)
 	 nop
 	REG_ADDU	t0, a1
 	REG_SC		t0, 0(a0)
 	beq		t0, zero, 1b
  	 nop
+#endif
 	j		ra
 	 nop
 END(_atomic_add_64)
Index: src/common/lib/libc/arch/mips/atomic/atomic_dec.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5
--- src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.4	Wed Mar 14 16:50:34 2012
+++ src/common/lib/libc/arch/mips/atomic/atomic_dec.S	Mon Jun  1 23:16:54 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_dec.S,v 1.4 2012/03/14 16:50:34 christos Exp $	*/
+/*	$NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include machine/asm.h
 #include atomic_op_asm.h
 
-RCSID($NetBSD: atomic_dec.S,v 1.4 2012/03/14 16:50:34 christos Exp $)
+RCSID($NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $)
 
 	.text
 	.set	noreorder
@@ -45,12 +45,17 @@ RCSID($NetBSD: atomic_dec.S,v 1.4 2012/
 #endif /* _KERNEL_OPT */
 
 LEAF(_atomic_dec_32)
+#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2)
+	li		t0, -1
+	saa		t0, (a0)
+#else
 1:	INT_LL		t0, 0(a0)
 	 nop
 	INT_ADDU	t0, -1
 	INT_SC		t0, 0(a0)
 	beq		t0, zero, 1b
  	 nop
+#endif
 	j		ra
 	 nop
 END(_atomic_dec_32)
@@ -71,12 +76,17 @@ ATOMIC_OP_ALIAS(atomic_dec_32_nv, _atomi
 
 #if !defined(__mips_o32)
 LEAF(_atomic_dec_64)
+#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2)
+	li		t0, -1
+	saad		t0, (a0)
+#else
 1:	REG_LL		t0, 0(a0)
 	 nop
 	REG_ADDU	t0, -1
 	REG_SC		t0, 0(a0)
 	beq		t0, zero, 1b
  	 nop
+#endif
 	j		ra
 	 nop
 END(_atomic_dec_64)
Index: src/common/lib/libc/arch/mips/atomic/atomic_inc.S
diff -u src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5
--- src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.4	Wed Mar 14 16:50:34 2012
+++ src/common/lib/libc/arch/mips/atomic/atomic_inc.S	Mon Jun  1 23:16:54 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_inc.S,v 1.4 2012/03/14 16:50:34 christos Exp $	*/
+/*	$NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include machine/asm.h
 #include atomic_op_asm.h
 
-RCSID($NetBSD: atomic_inc.S,v 1.4 2012/03/14 16:50:34 christos Exp $)
+RCSID($NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $)
 
 	.text
 	.set	noreorder
@@ -46,12 +46,17 @@ RCSID($NetBSD: atomic_inc.S,v 1.4 2012/
 
 
 LEAF(_atomic_inc_32)
+#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2)
+	li		t0, 1
+	saa		t0, (a0)
+#else
 1:	INT_LL		t0, 0(a0)
 	 nop
 	INT_ADDU	t0, 1
 	INT_SC		t0, 0(a0)
 	beq		t0, zero, 1b
  	 nop
+#endif
 	j		ra
 	 nop
 

CVS commit: src/common/lib/libc/arch/mips/string

2015-05-26 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue May 26 06:55:08 UTC 2015

Modified Files:
src/common/lib/libc/arch/mips/string: strchr.S strrchr.S

Log Message:
force 2nd to argument to unsigned byte value.
(found by t_strchr and t_strrchr tests)


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/string/strchr.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/string/strrchr.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/mips/string/strchr.S
diff -u src/common/lib/libc/arch/mips/string/strchr.S:1.3 src/common/lib/libc/arch/mips/string/strchr.S:1.4
--- src/common/lib/libc/arch/mips/string/strchr.S:1.3	Sun Jan  2 02:58:52 2011
+++ src/common/lib/libc/arch/mips/string/strchr.S	Tue May 26 06:55:08 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: strchr.S,v 1.3 2011/01/02 02:58:52 matt Exp $	*/
+/*	$NetBSD: strchr.S,v 1.4 2015/05/26 06:55:08 matt Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -36,7 +36,7 @@
 
 #if defined(LIBC_SCCS)  !defined(lint)
 	ASMSTR(from: @(#)index.s	8.1 (Berkeley) 6/4/93)
-	ASMSTR($NetBSD: strchr.S,v 1.3 2011/01/02 02:58:52 matt Exp $)
+	ASMSTR($NetBSD: strchr.S,v 1.4 2015/05/26 06:55:08 matt Exp $)
 #endif /* LIBC_SCCS and not lint */
 
 #ifdef __ABICALLS__
@@ -45,6 +45,7 @@
 
 LEAF(strchr)
 XLEAF(index)
+	and	a1, 0xff		# limit to byte value
 1:
 	lbu	a2, 0(a0)		# get a byte
 	PTR_ADDU a0, 1

Index: src/common/lib/libc/arch/mips/string/strrchr.S
diff -u src/common/lib/libc/arch/mips/string/strrchr.S:1.2 src/common/lib/libc/arch/mips/string/strrchr.S:1.3
--- src/common/lib/libc/arch/mips/string/strrchr.S:1.2	Sun Jan  2 02:58:52 2011
+++ src/common/lib/libc/arch/mips/string/strrchr.S	Tue May 26 06:55:08 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: strrchr.S,v 1.2 2011/01/02 02:58:52 matt Exp $	*/
+/*	$NetBSD: strrchr.S,v 1.3 2015/05/26 06:55:08 matt Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -36,7 +36,7 @@
 
 #if defined(LIBC_SCCS)  !defined(lint)
 	ASMSTR(from: @(#)rindex.s	8.1 (Berkeley) 6/4/93)
-	ASMSTR($NetBSD: strrchr.S,v 1.2 2011/01/02 02:58:52 matt Exp $)
+	ASMSTR($NetBSD: strrchr.S,v 1.3 2015/05/26 06:55:08 matt Exp $)
 #endif /* LIBC_SCCS and not lint */
 
 #ifdef __ABICALLS__
@@ -45,6 +45,7 @@
 
 LEAF(strrchr)
 XLEAF(rindex)
+	and	a1, 0xff		# limit to byte value
 	move	v0, zero		# default if not found
 1:
 	lbu	a3, 0(a0)		# get a byte



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

2015-05-18 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Mon May 18 08:24:10 UTC 2015

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

Log Message:
Do not set CRT_ALIAS for rump kernel; symbols provided by toolchain


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/riscv/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/riscv/atomic/atomic_op_asm.h
diff -u src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.2
--- src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.1	Fri Sep 19 17:36:24 2014
+++ src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h	Mon May 18 08:24:10 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_op_asm.h,v 1.1 2014/09/19 17:36:24 matt Exp $	*/
+/*	$NetBSD: atomic_op_asm.h,v 1.2 2015/05/18 08:24:10 justin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -37,9 +37,6 @@
 #if defined(_KERNEL) || defined(_STANDALONE)
 
 #define	ATOMIC_OP_ALIAS(a,s)	STRONG_ALIAS(a,s)
-#ifdef _RUMPKERNEL
-#define	CRT_ALIAS(a,s)		STRONG_ALIAS(a,s)
-#endif
 
 #else /* _KERNEL */
 



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/string

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

Modified Files:
src/common/lib/libc/arch/arm/string: ffs.S

Log Message:
It is just the __ffssi2 alias we do not want in rump kernel


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/string/ffs.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/string/ffs.S
diff -u src/common/lib/libc/arch/arm/string/ffs.S:1.8 src/common/lib/libc/arch/arm/string/ffs.S:1.9
--- src/common/lib/libc/arch/arm/string/ffs.S:1.8	Sun May 17 20:57:12 2015
+++ src/common/lib/libc/arch/arm/string/ffs.S	Sun May 17 22:14:38 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs.S,v 1.8 2015/05/17 20:57:12 justin Exp $	*/
+/*	$NetBSD: ffs.S,v 1.9 2015/05/17 22:14:38 justin Exp $	*/
 /*
  * Copyright (c) 2001 Christopher Gilbert
  * All rights reserved.
@@ -30,7 +30,7 @@
 
 #include machine/asm.h
 
-RCSID($NetBSD: ffs.S,v 1.8 2015/05/17 20:57:12 justin Exp $)
+RCSID($NetBSD: ffs.S,v 1.9 2015/05/17 22:14:38 justin Exp $)
 
 /*
  * ffs - find first set bit, this algorithm isolates the first set
@@ -46,6 +46,7 @@ RCSID($NetBSD: ffs.S,v 1.8 2015/05/17 2
  */
 #ifndef _RUMPKERNEL
 STRONG_ALIAS(__ffssi2,ffs)
+#endif
 #if (defined(_ARM_ARCH_5)  !defined(__thumb__)) || defined(_ARM_ARCH_T2)
 #if defined(_ARM_ARCH_T2)
 ENTRY(ffs)
@@ -91,4 +92,3 @@ ARM_ENTRY(ffs)
 	.byte   30,  0, 23, 19, 29, 18, 17,  0  /* 56-63 */
 END(ffs)
 #endif
-#endif /* _RUMPKERNEL */



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

2015-05-17 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Sun May 17 20:57:12 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_op_asm.h atomic_swap.S
atomic_swap_16.S atomic_swap_64.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
src/common/lib/libc/arch/arm/string: ffs.S

Log Message:
Do not build arm toolchain symbols in the rump kernel

These symbols will be provided at link time and will be
duplicate symbols in rump kernel and libc if defined.

Many have been fixed previously, but these were missed
as did not have a test.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h
cvs rdiff -u -r1.13 -r1.14 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_swap_16.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_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.9 -r1.10 \
src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S
cvs rdiff -u -r1.1 -r1.2 \
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.2 -r1.3 \
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.7 -r1.8 src/common/lib/libc/arch/arm/string/ffs.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_op_asm.h
diff -u src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.6 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.6	Tue Mar  4 16:15:28 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h	Sun May 17 20:57:11 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_op_asm.h,v 1.6 2014/03/04 16:15:28 matt Exp $	*/
+/*	$NetBSD: atomic_op_asm.h,v 1.7 2015/05/17 20:57:11 justin Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -44,9 +44,6 @@
 #if defined(_KERNEL) || defined(_STANDALONE)
 
 #define	ATOMIC_OP_ALIAS(a,s)	STRONG_ALIAS(a,s)
-#ifdef _RUMPKERNEL
-#define	CRT_ALIAS(a,s)		STRONG_ALIAS(a,s)
-#endif
 
 #else /* _KERNEL */
 

Index: src/common/lib/libc/arch/arm/atomic/atomic_swap.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14
--- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13	Fri Apr 17 07:15:02 2015
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S	Sun May 17 20:57:11 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap.S,v 1.13 2015/04/17 07:15:02 skrll Exp $	*/
+/*	$NetBSD: atomic_swap.S,v 1.14 2015/05/17 20:57:11 justin Exp $	*/
 
 /*-
  * Copyright (c) 2007,2012 The NetBSD Foundation, Inc.
@@ -84,7 +84,7 @@ STRONG_ALIAS(_atomic_swap_uint,_atomic_s
 STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32)
 STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32)
 
-#if (!defined(_KERNEL) || defined(_RUMPKERNEL))  !defined(_STANDALONE)
+#if (!defined(_KERNEL) || !defined(_RUMPKERNEL))  !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_4)
 	mov	r1, #0
 #ifdef _ARM_ARCH_7
@@ -125,7 +125,7 @@ CRT_ALIAS(__atomic_exchange_1,_atomic_sw
 STRONG_ALIAS(_atomic_swap_char,_atomic_swap_8)
 STRONG_ALIAS(_atomic_swap_uchar,_atomic_swap_8)
 
-#if (!defined(_KERNEL) || defined(_RUMPKERNEL))  !defined(_STANDALONE)
+#if (!defined(_KERNEL) || !defined(_RUMPKERNEL))  !defined(_STANDALONE)
 ENTRY_NP(__sync_lock_release_1)
 	mov	r1, #0
 #ifdef _ARM_ARCH_7

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.3 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.3	Sat Jun 28 20:18:55 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S	Sun May 17 20:57:11 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_16.S,v 1.3 2014/06/28 20:18:55 joerg Exp $ */
+/*	$NetBSD: atomic_swap_16.S,v 1.4 2015/05/17 20:57:11 justin Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -55,7 +55,7 @@ CRT_ALIAS(__atomic_exchange_2,_atomic_sw
 STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16)
 STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16)
 
-#if (!defined(_KERNEL) || defined(_RUMPKERNEL))  !defined(_STANDALONE)

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/riscv/atomic

2015-03-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Mar 27 06:42:37 UTC 2015

Modified Files:
src/common/lib/libc/arch/riscv/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_nand_32.S atomic_nand_64.S atomic_or_32.S atomic_or_64.S
atomic_sub_32.S atomic_sub_64.S atomic_swap_32.S atomic_swap_64.S
atomic_xor_32.S atomic_xor_64.S

Log Message:
Switch to new ABI (a0/a1 replace v0/v1)


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_and_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_cas_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_nand_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_nand_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_or_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_or_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_sub_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_sub_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_swap_32.S \
src/common/lib/libc/arch/riscv/atomic/atomic_swap_64.S \
src/common/lib/libc/arch/riscv/atomic/atomic_xor_32.S \
src/common/lib/libc/arch/riscv/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/riscv/atomic/atomic_add_32.S
diff -u src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.2
--- src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.1	Fri Sep 19 17:36:24 2014
+++ src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S	Fri Mar 27 06:42:37 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32.S,v 1.1 2014/09/19 17:36:24 matt Exp $	*/
+/*	$NetBSD: atomic_add_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 ENTRY_NP(_atomic_inc_32)
 	li		a1, 1
 ENTRY_NP(_atomic_add_32)
-	amoadd.w.aq	v0, a1, 0(a0)
+	amoadd.w.aq	a0, a1, 0(a0)
 	ret
 END(_atomic_add_32)
 END(_atomic_inc_32)
@@ -64,8 +64,8 @@ STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc
 ENTRY_NP(_atomic_inc_32_nv)
 	li		a1, 1
 ENTRY_NP(_atomic_add_32_nv)
-	amoadd.w.aq	v0, a1, 0(a0)	/* update memory and get old value */
-	INT_ADD		v0, v0, a1	/* turn into new value */
+	amoadd.w.aq	t0, a1, 0(a0)	/* update memory and get old value */
+	INT_ADD		a0, t0, a1	/* turn into new value */
 	ret
 END(_atomic_add_32_nv)
 END(_atomic_inc_32_nv)
Index: src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S
diff -u src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.2
--- src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.1	Fri Sep 19 17:36:24 2014
+++ src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S	Fri Mar 27 06:42:37 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64.S,v 1.1 2014/09/19 17:36:24 matt Exp $	*/
+/*	$NetBSD: atomic_add_64.S,v 1.2 2015/03/27 06:42:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 ENTRY_NP(_atomic_inc_64)
 	li		a1, 1
 ENTRY_NP(_atomic_add_64)
-	amoadd.d.aq	v0, a1, 0(a0)
+	amoadd.d.aq	a0, a1, 0(a0)
 	ret
 END(_atomic_add_64)
 END(_atomic_inc_64)
@@ -56,8 +56,8 @@ STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc
 ENTRY_NP(_atomic_inc_64_nv)
 	li		a1, 1
 ENTRY_NP(_atomic_add_64_nv)
-	amoadd.d.aq	v0, a1, 0(a0)	/* update memory and get old value */
-	LONG_ADD	v0, v0, a1	/* turn into new value */
+	amoadd.d.aq	t0, a1, 0(a0)	/* update memory and get old value */
+	LONG_ADD	a0, t0, a1	/* turn into new value */
 	ret
 END(_atomic_add_64_nv)
 END(_atomic_inc_64_nv)
Index: src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S
diff -u src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.2
--- src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.1	Fri Sep 19 17:36:24 2014
+++ src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S	Fri Mar 27 06:42:37 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32.S,v 1.1 2014/09/19 17:36:24 matt Exp $	*/
+/*	$NetBSD: atomic_and_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include atomic_op_asm.h
 
 ENTRY_NP(_atomic_and_32)
-	amoand.w.aq	v0, a1, 0(a0)
+	amoand.w.aq	a0, a1, 0(a0)
 	ret
 END(_atomic_and_32)
 
@@ -47,8 +47,8 @@ CRT_ALIAS(__sync_fetch_and_and_4,_atomic
 CRT_ALIAS(__atomic_fetch_and_4,_atomic_and_32)
 
 ENTRY_NP(_atomic_and_32_nv)
-	amoand.w.aq	v0, a1, 0(a0)	/* update memory and get old value */
-	and		v0, v0, a1	/* turn into new value */
+	amoand.w.aq	t0, a1, 0(a0)	/* 

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

2015-03-26 Thread Justin Cormack
Module Name:src
Committed By:   justin
Date:   Thu Mar 26 13:34:51 UTC 2015

Modified Files:
src/common/lib/libc/arch/arm/string: memcmp.S memcpy.S memmove.S
memset.S

Log Message:
Don't build the __eabi_ aliases in the arm rump kernel.

These are provided by libc in userspace, so leave out of kernel


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/memcmp.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/string/memcpy.S
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/string/memmove.S
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/memset.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/string/memcmp.S
diff -u src/common/lib/libc/arch/arm/string/memcmp.S:1.4 src/common/lib/libc/arch/arm/string/memcmp.S:1.5
--- src/common/lib/libc/arch/arm/string/memcmp.S:1.4	Mon Dec  2 21:21:33 2013
+++ src/common/lib/libc/arch/arm/string/memcmp.S	Thu Mar 26 13:34:51 2015
@@ -1,4 +1,4 @@
-/*  $NetBSD: memcmp.S,v 1.4 2013/12/02 21:21:33 joerg Exp $ */
+/*  $NetBSD: memcmp.S,v 1.5 2015/03/26 13:34:51 justin Exp $ */
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -64,7 +64,7 @@
 
 #include machine/asm.h
 
-RCSID($NetBSD: memcmp.S,v 1.4 2013/12/02 21:21:33 joerg Exp $)
+RCSID($NetBSD: memcmp.S,v 1.5 2015/03/26 13:34:51 justin Exp $)
 
 ENTRY(memcmp)
 	mov	ip, r0
@@ -180,6 +180,6 @@ ENTRY(memcmp)
 #endif
 END(memcmp)
 
-#if defined(__ARM_EABI__)
+#if defined(__ARM_EABI__)  !defined(_RUMPKERNEL)
 STRONG_ALIAS(__aeabi_memcmp, memcmp)
 #endif

Index: src/common/lib/libc/arch/arm/string/memcpy.S
diff -u src/common/lib/libc/arch/arm/string/memcpy.S:1.6 src/common/lib/libc/arch/arm/string/memcpy.S:1.7
--- src/common/lib/libc/arch/arm/string/memcpy.S:1.6	Mon Dec  2 21:21:33 2013
+++ src/common/lib/libc/arch/arm/string/memcpy.S	Thu Mar 26 13:34:51 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: memcpy.S,v 1.6 2013/12/02 21:21:33 joerg Exp $	*/
+/*	$NetBSD: memcpy.S,v 1.7 2015/03/26 13:34:51 justin Exp $	*/
 
 #include arm/cdefs.h
 
@@ -8,6 +8,6 @@
 #include memcpy_xscale.S
 #endif
 
-#if defined(__ARM_EABI__)
+#if defined(__ARM_EABI__)  !defined(_RUMPKERNEL)
 STRONG_ALIAS(__aeabi_memcpy, memcpy)
 #endif

Index: src/common/lib/libc/arch/arm/string/memmove.S
diff -u src/common/lib/libc/arch/arm/string/memmove.S:1.8 src/common/lib/libc/arch/arm/string/memmove.S:1.9
--- src/common/lib/libc/arch/arm/string/memmove.S:1.8	Mon Dec  2 21:21:33 2013
+++ src/common/lib/libc/arch/arm/string/memmove.S	Thu Mar 26 13:34:51 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: memmove.S,v 1.8 2013/12/02 21:21:33 joerg Exp $	*/
+/*	$NetBSD: memmove.S,v 1.9 2015/03/26 13:34:51 justin Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -585,7 +585,7 @@ END(memmove)
 END(bcopy)
 #endif
 
-#if defined(__ARM_EABI__)  !defined(BCOPY)
+#if defined(__ARM_EABI__)  !defined(BCOPY)  !defined(_RUMPKERNEL)
 STRONG_ALIAS(__aeabi_memmove, memmove)
 STRONG_ALIAS(__aeabi_memmove4, memmove)
 STRONG_ALIAS(__aeabi_memmove8, memmove)

Index: src/common/lib/libc/arch/arm/string/memset.S
diff -u src/common/lib/libc/arch/arm/string/memset.S:1.7 src/common/lib/libc/arch/arm/string/memset.S:1.8
--- src/common/lib/libc/arch/arm/string/memset.S:1.7	Mon Dec  2 21:21:33 2013
+++ src/common/lib/libc/arch/arm/string/memset.S	Thu Mar 26 13:34:51 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: memset.S,v 1.7 2013/12/02 21:21:33 joerg Exp $	*/
+/*	$NetBSD: memset.S,v 1.8 2015/03/26 13:34:51 justin Exp $	*/
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -68,7 +68,7 @@
 
 #include machine/asm.h
 
-#if defined(__ARM_EABI__)  !defined(_BZERO)
+#if defined(__ARM_EABI__)  !defined(_BZERO)  !defined(_RUMPKERNEL)
 ENTRY(__aeabi_memset)
 	mov	r3, r1
 	mov	r1, r2



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

2014-11-19 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Nov 20 07:07:13 UTC 2014

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

Log Message:
Add atomic_c11_compare_exchange_cas_{8,16,32}.c


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/m68k/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/m68k/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14
--- src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.13	Sat Feb 22 14:51:34 2014
+++ src/common/lib/libc/arch/m68k/atomic/Makefile.inc	Thu Nov 20 07:07:13 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.13 2014/02/22 14:51:34 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.14 2014/11/20 07:07:13 matt Exp $
 
 #
 # Note: The atomic operations here in these assembly files are atomic
@@ -33,6 +33,10 @@ SRCS+=  atomic_add_16_cas.c atomic_add_8
 	atomic_or_32_cas.c atomic_or_16_cas.c atomic_or_8_cas.c		\
 	atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
 	atomic_swap_32_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c
+
+SRCS+=	atomic_c11_compare_exchange_cas_8.c \
+	atomic_c11_compare_exchange_cas_16.c \
+	atomic_c11_compare_exchange_cas_32.c
 .endif
 
 .endif



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

2014-10-14 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Oct 14 07:25:05 UTC 2014

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

Log Message:
Provide C++ 2011 atomic support functions for hppa and arm.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/common/lib/libc/arch/arm/atomic/Makefile.inc
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/hppa/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.25 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.26
--- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.25	Mon Oct 13 12:49:59 2014
+++ src/common/lib/libc/arch/arm/atomic/Makefile.inc	Tue Oct 14 07:25:05 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.25 2014/10/13 12:49:59 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.26 2014/10/14 07:25:05 martin Exp $
 
 .ifnmake obj
 .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk
@@ -25,7 +25,10 @@ SRCS.atomic+=	atomic_xor_32_cas.c atomic
 		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_and_16_nv_cas.c atomic_and_8_nv_cas.c
+		atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c	\
+		atomic_c11_compare_exchange_cas_32.c	\
+		atomic_c11_compare_exchange_cas_16.c	\
+		atomic_c11_compare_exchange_cas_8.c
 .endif
 
 .else

Index: src/common/lib/libc/arch/hppa/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.12 src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13
--- src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.12	Sat Feb 22 10:23:24 2014
+++ src/common/lib/libc/arch/hppa/atomic/Makefile.inc	Tue Oct 14 07:25:05 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.12 2014/02/22 10:23:24 skrll Exp $
+#	$NetBSD: Makefile.inc,v 1.13 2014/10/14 07:25:05 martin Exp $
 
 .if defined(LIB)
 
@@ -32,6 +32,9 @@ SRCS+=	atomic_xor_32_cas.c atomic_xor_16
 	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_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c
+	atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
+	atomic_c11_compare_exchange_cas_32.c\
+	atomic_c11_compare_exchange_cas_16.c\
+	atomic_c11_compare_exchange_cas_8.c
 .endif
 .endif



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

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

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

Log Message:
Add C++ 2011 atomic support functions.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.17 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.17	Fri Feb 21 16:21:02 2014
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Mon Oct 13 08:59:41 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.17 2014/02/21 16:21:02 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.18 2014/10/13 08:59:41 martin Exp $
 
 .include bsd.own.mk
 
@@ -34,7 +34,10 @@ SRCS+=	atomic_nand_16_cas.c atomic_nand_
 	atomic_cas_16_cas.c atomic_cas_8_cas.c		\
 	atomic_sub_16_cas.c atomic_sub_8_cas.c		\
 	atomic_or_16_cas.c atomic_or_8_cas.c		\
-	atomic_swap_16_cas.c atomic_swap_8_cas.c
+	atomic_swap_16_cas.c atomic_swap_8_cas.c	\
+	atomic_c11_compare_exchange_cas_32.c		\
+	atomic_c11_compare_exchange_cas_16.c		\
+	atomic_c11_compare_exchange_cas_8.c
 .  endif
 
 .  if (${LIB} == kern || ${LIB} == rump)



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

2014-10-13 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Oct 13 13:00:55 UTC 2014

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

Log Message:
Provide atomic C++ 2011 support functions for mips and sh3.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/mips/atomic/Makefile.inc
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/sh3/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/mips/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.12 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13
--- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.12	Mon Feb 24 16:15:43 2014
+++ src/common/lib/libc/arch/mips/atomic/Makefile.inc	Mon Oct 13 13:00:55 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.12 2014/02/24 16:15:43 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.13 2014/10/13 13:00:55 martin Exp $
 
 .if defined(LIB)  (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \
 	|| ${LIB} == rump)
@@ -46,7 +46,10 @@ SRCS+=	atomic_xor_32_cas.c atomic_xor_16
 	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_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c
+	atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
+	atomic_c11_compare_exchange_cas_32.c\
+	atomic_c11_compare_exchange_cas_16.c\
+	atomic_c11_compare_exchange_cas_8.c
 .endif
 
 .if defined(LIB)  (${LIB} == kern || ${LIB} == rump)

Index: src/common/lib/libc/arch/sh3/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.6 src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7
--- src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.6	Sat Feb 22 12:12:30 2014
+++ src/common/lib/libc/arch/sh3/atomic/Makefile.inc	Mon Oct 13 13:00:55 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.6 2014/02/22 12:12:30 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.7 2014/10/13 13:00:55 martin Exp $
 
 .if defined(LIB)  (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \
 	|| ${LIB} == rump)
@@ -16,7 +16,10 @@ SRCS+=	atomic_add_16_cas.c atomic_add_8_
 	atomic_or_16_cas.c atomic_or_8_cas.c	\
 	atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_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_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
+	atomic_c11_compare_exchange_cas_32.c	\
+	atomic_c11_compare_exchange_cas_16.c	\
+	atomic_c11_compare_exchange_cas_8.c
 .endif
 
 .endif



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

2014-10-12 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sun Oct 12 17:53:33 UTC 2014

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

Log Message:
Hook __atomic_compare_exchange_N into vax libc.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/vax/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/vax/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.6 src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.7
--- src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.6	Sat Feb 22 08:53:33 2014
+++ src/common/lib/libc/arch/vax/atomic/Makefile.inc	Sun Oct 12 17:53:33 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.6 2014/02/22 08:53:33 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.7 2014/10/12 17:53:33 martin Exp $
 
 .if defined(LIB)  (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \
 	|| ${LIB} == rump)
@@ -16,7 +16,10 @@ SRCS+=	atomic_add_16_cas.c atomic_add_8_
 	atomic_and_16_cas.c atomic_and_8_cas.c	\
 	atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c	\
 	atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c	\
-	atomic_swap_16_cas.c atomic_swap_8_cas.c
+	atomic_swap_16_cas.c atomic_swap_8_cas.c \
+	atomic_c11_compare_exchange_cas_32.c	\
+	atomic_c11_compare_exchange_cas_16.c	\
+	atomic_c11_compare_exchange_cas_8.c
 .endif
 
 .endif



CVS commit: src/common/lib/libc/arch/i386/string/small

2014-09-22 Thread Pierre Pronchery
Module Name:src
Committed By:   khorben
Date:   Mon Sep 22 20:31:56 UTC 2014

Modified Files:
src/common/lib/libc/arch/i386/string/small: strchr.S

Log Message:
Look for the character to locate before checking for the NUL character

As documented in PR port-i386/49208, this fixes strchr(s, '\0'), as used by
the FAT first-stage bootloader on x86 (bootxx_msdos).
strchr(s, '\0') is otherwise equivalent to strlen(string), which would
probably look nicer in the original file, dosfs.c from libsa.

Confirmed working in qemu and on real hardware.
ok joerg@

XXX pull-up to netbsd-6 and netbsd-7


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/i386/string/small/strchr.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/i386/string/small/strchr.S
diff -u src/common/lib/libc/arch/i386/string/small/strchr.S:1.2 src/common/lib/libc/arch/i386/string/small/strchr.S:1.3
--- src/common/lib/libc/arch/i386/string/small/strchr.S:1.2	Sat Mar 22 19:38:46 2014
+++ src/common/lib/libc/arch/i386/string/small/strchr.S	Mon Sep 22 20:31:56 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: strchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $	*/
+/*	$NetBSD: strchr.S,v 1.3 2014/09/22 20:31:56 khorben Exp $	*/
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -29,7 +29,7 @@
  */
 
 #include machine/asm.h
-	RCSID($NetBSD: strchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
+	RCSID($NetBSD: strchr.S,v 1.3 2014/09/22 20:31:56 khorben Exp $)
 
 ENTRY(strchr)
 	popl	%edx		/* Return address */
@@ -39,10 +39,10 @@ ENTRY(strchr)
 	pushl	%eax
 	pushl	%edx
 1:
-	cmpb	$0, 0(%eax)
-	je 2f
 	cmpb	%cl, 0(%eax)
 	je 3f
+	cmpb	$0, 0(%eax)
+	je 2f
 	incl	%eax
 	jmp 1b
 2:



CVS commit: src/common/lib/libc/arch/x86_64

2014-05-22 Thread Masao Uebayashi
Module Name:src
Committed By:   uebayasi
Date:   Thu May 22 15:23:11 UTC 2014

Modified Files:
src/common/lib/libc/arch/x86_64/atomic: atomic.S
src/common/lib/libc/arch/x86_64/gen: byte_swap_2.S byte_swap_4.S
byte_swap_8.S
src/common/lib/libc/arch/x86_64/string: memset.S

Log Message:
Put missing END() markers to set ELF symbol size.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/x86_64/atomic/atomic.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S \
src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/x86_64/string/memset.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/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.17
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16	Wed Jan 12 23:12:10 2011
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Thu May 22 15:23:11 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.16 2011/01/12 23:12:10 joerg Exp $	*/
+/*	$NetBSD: atomic.S,v 1.17 2014/05/22 15:23:11 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -54,6 +54,7 @@ ENTRY(_atomic_add_32)
 	LOCK(1)
 	addl	%esi, (%rdi)
 	ret
+END(_atomic_add_32)
 
 ENTRY(_atomic_add_32_nv)
 	movl	%esi, %eax
@@ -61,11 +62,13 @@ ENTRY(_atomic_add_32_nv)
 	xaddl	%eax, (%rdi)
 	addl	%esi, %eax
 	ret
+END(_atomic_add_32_nv)
 
 ENTRY(_atomic_and_32)
 	LOCK(3)
 	andl	%esi, (%rdi)
 	ret
+END(_atomic_and_32)
 
 ENTRY(_atomic_and_32_nv)
 	movl	(%rdi), %eax
@@ -77,11 +80,13 @@ ENTRY(_atomic_and_32_nv)
 	jnz	1b
 	movl	%ecx, %eax
 	ret
+END(_atomic_and_32_nv)
 
 ENTRY(_atomic_dec_32)
 	LOCK(5)
 	decl	(%rdi)
 	ret
+END(_atomic_dec_32)
 
 ENTRY(_atomic_dec_32_nv)
 	movl	$-1, %eax
@@ -89,11 +94,13 @@ ENTRY(_atomic_dec_32_nv)
 	xaddl	%eax, (%rdi)
 	decl	%eax
 	ret
+END(_atomic_dec_32_nv)
 
 ENTRY(_atomic_inc_32)
 	LOCK(7)
 	incl	(%rdi)
 	ret
+END(_atomic_inc_32)
 
 ENTRY(_atomic_inc_32_nv)
 	movl	$1, %eax
@@ -101,11 +108,13 @@ ENTRY(_atomic_inc_32_nv)
 	xaddl	%eax, (%rdi)
 	incl	%eax
 	ret
+END(_atomic_inc_32_nv)
 
 ENTRY(_atomic_or_32)
 	LOCK(9)
 	orl	%esi, (%rdi)
 	ret
+END(_atomic_or_32)
 
 ENTRY(_atomic_or_32_nv)
 	movl	(%rdi), %eax
@@ -117,11 +126,13 @@ ENTRY(_atomic_or_32_nv)
 	jnz	1b
 	movl	%ecx, %eax
 	ret
+END(_atomic_or_32_nv)
 
 ENTRY(_atomic_swap_32)
 	movl	%esi, %eax
 	xchgl	%eax, (%rdi)
 	ret
+END(_atomic_swap_32)
 
 ENTRY(_atomic_cas_32)
 	movl	%esi, %eax
@@ -129,12 +140,14 @@ ENTRY(_atomic_cas_32)
 	cmpxchgl %edx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32)
 
 ENTRY(_atomic_cas_32_ni)
 	movl	%esi, %eax
 	cmpxchgl %edx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32_ni)
 
 /* 64-bit */
 
@@ -142,6 +155,7 @@ ENTRY(_atomic_add_64)
 	LOCK(13)
 	addq	%rsi, (%rdi)
 	ret
+END(_atomic_add_64)
 
 ENTRY(_atomic_add_64_nv)
 	movq	%rsi, %rax
@@ -149,11 +163,13 @@ ENTRY(_atomic_add_64_nv)
 	xaddq	%rax, (%rdi)
 	addq	%rsi, %rax
 	ret
+END(_atomic_add_64_nv)
 
 ENTRY(_atomic_and_64)
 	LOCK(15)
 	andq	%rsi, (%rdi)
 	ret
+END(_atomic_and_64)
 
 ENTRY(_atomic_and_64_nv)
 	movq	(%rdi), %rax
@@ -165,11 +181,13 @@ ENTRY(_atomic_and_64_nv)
 	jnz	1b
 	movq	%rcx, %rax
 	ret
+END(_atomic_and_64_nv)
 
 ENTRY(_atomic_dec_64)
 	LOCK(17)
 	decq	(%rdi)
 	ret
+END(_atomic_dec_64)
 
 ENTRY(_atomic_dec_64_nv)
 	movq	$-1, %rax
@@ -177,11 +195,13 @@ ENTRY(_atomic_dec_64_nv)
 	xaddq	%rax, (%rdi)
 	decq	%rax
 	ret
+END(_atomic_dec_64_nv)
 
 ENTRY(_atomic_inc_64)
 	LOCK(19)
 	incq	(%rdi)
 	ret
+END(_atomic_inc_64)
 
 ENTRY(_atomic_inc_64_nv)
 	movq	$1, %rax
@@ -189,11 +209,13 @@ ENTRY(_atomic_inc_64_nv)
 	xaddq	%rax, (%rdi)
 	incq	%rax
 	ret
+END(_atomic_inc_64_nv)
 
 ENTRY(_atomic_or_64)
 	LOCK(21)
 	orq	%rsi, (%rdi)
 	ret
+END(_atomic_or_64)
 
 ENTRY(_atomic_or_64_nv)
 	movq	(%rdi), %rax
@@ -205,11 +227,13 @@ ENTRY(_atomic_or_64_nv)
 	jnz	1b
 	movq	%rcx, %rax
 	ret
+END(_atomic_or_64_nv)
 
 ENTRY(_atomic_swap_64)
 	movq	%rsi, %rax
 	xchgq	%rax, (%rdi)
 	ret
+END(_atomic_swap_64)
 
 ENTRY(_atomic_cas_64)
 	movq	%rsi, %rax
@@ -217,12 +241,14 @@ ENTRY(_atomic_cas_64)
 	cmpxchgq %rdx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_64)
 
 ENTRY(_atomic_cas_64_ni)
 	movq	%rsi, %rax
 	cmpxchgq %rdx, (%rdi)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_64_ni)
 
 /* memory barriers */
 
@@ -230,29 +256,34 @@ ENTRY(_membar_consumer)
 	LOCK(25)
 	addq	$0, -8(%rsp)
 	ret
+END(_membar_consumer)
 ENDLABEL(membar_consumer_end)
 
 ENTRY(_membar_producer)
 	/* A store is enough */
 	movq	$0, -8(%rsp)
 	ret
+END(_membar_producer)
 ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(26)
 	addq	$0, -8(%rsp)
 	

CVS commit: src/common/lib/libc/arch/x86_64/string

2014-05-22 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Thu May 22 16:47:31 UTC 2014

Modified Files:
src/common/lib/libc/arch/x86_64/string: memset.S

Log Message:
fix build for _KERNEL


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/memset.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/x86_64/string/memset.S
diff -u src/common/lib/libc/arch/x86_64/string/memset.S:1.4 src/common/lib/libc/arch/x86_64/string/memset.S:1.5
--- src/common/lib/libc/arch/x86_64/string/memset.S:1.4	Thu May 22 15:23:11 2014
+++ src/common/lib/libc/arch/x86_64/string/memset.S	Thu May 22 16:47:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: memset.S,v 1.4 2014/05/22 15:23:11 uebayasi Exp $	*/
+/*	$NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: memset.S,v 1.4 2014/05/22 15:23:11 uebayasi Exp $)
+	RCSID($NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka Exp $)
 #endif
 
 #ifndef _KERNEL
@@ -90,4 +90,7 @@ ENTRY(memset)
 	add	%rdx,%rdi		/* ... and target */
 	jmp	2b
 END(memset)
+
+#ifndef _KERNEL
 END(bzero)
+#endif



CVS commit: src/common/lib/libc/arch/i386

2014-05-22 Thread Masao Uebayashi
Module Name:src
Committed By:   uebayasi
Date:   Fri May 23 03:17:31 UTC 2014

Modified Files:
src/common/lib/libc/arch/i386/atomic: atomic.S
src/common/lib/libc/arch/i386/gen: byte_swap_2.S byte_swap_4.S
src/common/lib/libc/arch/i386/string: memset.S
src/common/lib/libc/arch/i386/string/small: memcpy.S

Log Message:
Put missing END() markers to set ELF symbol size.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/i386/atomic/atomic.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/i386/gen/byte_swap_2.S \
src/common/lib/libc/arch/i386/gen/byte_swap_4.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/i386/string/memset.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/small/memcpy.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/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.21 src/common/lib/libc/arch/i386/atomic/atomic.S:1.22
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.21	Tue Apr 22 19:27:17 2014
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Fri May 23 03:17:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.21 2014/04/22 19:27:17 christos Exp $	*/
+/*	$NetBSD: atomic.S,v 1.22 2014/05/23 03:17:31 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -58,6 +58,7 @@ ENTRY(_atomic_add_32)
 	LOCK(1)
 	addl	%eax, (%edx)
 	ret
+END(_atomic_add_32)
 
 ENTRY(_atomic_add_32_nv)
 	movl	4(%esp), %edx
@@ -67,6 +68,7 @@ ENTRY(_atomic_add_32_nv)
 	xaddl	%eax, (%edx)
 	addl	%ecx, %eax
 	ret
+END(_atomic_add_32_nv)
 
 ENTRY(_atomic_and_32)
 	movl	4(%esp), %edx
@@ -74,6 +76,7 @@ ENTRY(_atomic_and_32)
 	LOCK(3)
 	andl	%eax, (%edx)
 	ret
+END(_atomic_and_32)
 
 ENTRY(_atomic_and_32_nv)
 	movl	4(%esp), %edx
@@ -88,12 +91,14 @@ ENTRY(_atomic_and_32_nv)
 	ret
 1:
 	jmp	0b
+END(_atomic_and_32_nv)
 
 ENTRY(_atomic_dec_32)
 	movl	4(%esp), %edx
 	LOCK(5)
 	decl	(%edx)
 	ret
+END(_atomic_dec_32)
 
 ENTRY(_atomic_dec_32_nv)
 	movl	4(%esp), %edx
@@ -102,12 +107,14 @@ ENTRY(_atomic_dec_32_nv)
 	xaddl	%eax, (%edx)
 	decl	%eax
 	ret
+END(_atomic_dec_32_nv)
 
 ENTRY(_atomic_inc_32)
 	movl	4(%esp), %edx
 	LOCK(7)
 	incl	(%edx)
 	ret
+END(_atomic_inc_32)
 
 ENTRY(_atomic_inc_32_nv)
 	movl	4(%esp), %edx
@@ -116,6 +123,7 @@ ENTRY(_atomic_inc_32_nv)
 	xaddl	%eax, (%edx)
 	incl	%eax
 	ret
+END(_atomic_inc_32_nv)
 
 ENTRY(_atomic_or_32)
 	movl	4(%esp), %edx
@@ -123,6 +131,7 @@ ENTRY(_atomic_or_32)
 	LOCK(9)
 	orl	%eax, (%edx)
 	ret
+END(_atomic_or_32)
 
 ENTRY(_atomic_or_32_nv)
 	movl	4(%esp), %edx
@@ -137,12 +146,14 @@ ENTRY(_atomic_or_32_nv)
 	ret
 1:
 	jmp	0b
+END(_atomic_or_32_nv)
 
 ENTRY(_atomic_swap_32)
 	movl	4(%esp), %edx
 	movl	8(%esp), %eax
 	xchgl	%eax, (%edx)
 	ret
+END(_atomic_swap_32)
 
 ENTRY(_atomic_cas_32)
 	movl	4(%esp), %edx
@@ -152,6 +163,7 @@ ENTRY(_atomic_cas_32)
 	cmpxchgl %ecx, (%edx)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32)
 
 ENTRY(_atomic_cas_32_ni)
 	movl	4(%esp), %edx
@@ -160,23 +172,27 @@ ENTRY(_atomic_cas_32_ni)
 	cmpxchgl %ecx, (%edx)
 	/* %eax now contains the old value */
 	ret
+END(_atomic_cas_32_ni)
 
 ENTRY(_membar_consumer)
 	LOCK(13)
 	addl	$0, -4(%esp)
 	ret
+END(_membar_consumer)
 ENDLABEL(membar_consumer_end)
 
 ENTRY(_membar_producer)
 	/* A store is enough */
 	movl	$0, -4(%esp)
 	ret
+END(_membar_producer)
 ENDLABEL(membar_producer_end)
 
 ENTRY(_membar_sync)
 	LOCK(14)
 	addl	$0, -4(%esp)
 	ret
+END(_membar_sync)
 ENDLABEL(membar_sync_end)
 
 #if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL)
@@ -209,6 +225,7 @@ ENTRY(_atomic_cas_64)
 	movl	0(%edi), %eax
 	movl	4(%edi), %edx
 	jmp	1b
+END(_atomic_cas_64)
 ENDLABEL(_atomic_cas_64_end)
 
 ENTRY(_atomic_cas_cx8)
@@ -231,6 +248,7 @@ ENTRY(_atomic_cas_cx8)
 	.space	32, 0x90
 #endif
 #endif /* _HARDKERNEL */
+END(_atomic_cas_cx8)
 ENDLABEL(_atomic_cas_cx8_end)
 #endif /* __HAVE_ATOMIC64_OPS || _KERNEL */
 
@@ -238,11 +256,13 @@ ENDLABEL(_atomic_cas_cx8_end)
 ENTRY(sse2_lfence)
 	lfence
 	ret
+END(sse2_lfence)
 ENDLABEL(sse2_lfence_end)
 
 ENTRY(sse2_mfence)
 	mfence
 	ret
+END(sse2_mfence)
 ENDLABEL(sse2_mfence_end)
 
 atomic_lockpatch:

Index: src/common/lib/libc/arch/i386/gen/byte_swap_2.S
diff -u src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3 src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.4
--- src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3	Wed Nov 28 17:03:35 2007
+++ src/common/lib/libc/arch/i386/gen/byte_swap_2.S	Fri May 23 03:17:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $	*/
+/*	$NetBSD: byte_swap_2.S,v 1.4 2014/05/23 03:17:31 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -36,7 +36,7 @@
 
 #include machine/asm.h
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $)
+	RCSID($NetBSD: byte_swap_2.S,v 

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/x86_64/string

2014-03-22 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Sat Mar 22 19:16:34 UTC 2014

Modified Files:
src/common/lib/libc/arch/x86_64/string: bcmp.S bcopy.S ffs.S memchr.S
memcmp.S strcat.S strchr.S strcmp.S strcpy.S strlen.S strrchr.S

Log Message:
For all x86_64 string assembly functions that don't overlap (i.e. every
one except memset and bzero) use END() so that symbol size information
is available.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/x86_64/string/bcmp.S \
src/common/lib/libc/arch/x86_64/string/memcmp.S \
src/common/lib/libc/arch/x86_64/string/strrchr.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/bcopy.S \
src/common/lib/libc/arch/x86_64/string/ffs.S
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/x86_64/string/memchr.S \
src/common/lib/libc/arch/x86_64/string/strlen.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/x86_64/string/strcat.S \
src/common/lib/libc/arch/x86_64/string/strcmp.S \
src/common/lib/libc/arch/x86_64/string/strcpy.S
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/x86_64/string/strchr.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/x86_64/string/bcmp.S
diff -u src/common/lib/libc/arch/x86_64/string/bcmp.S:1.2 src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3
--- src/common/lib/libc/arch/x86_64/string/bcmp.S:1.2	Mon Nov 12 18:41:59 2007
+++ src/common/lib/libc/arch/x86_64/string/bcmp.S	Sat Mar 22 19:16:34 2014
@@ -1,7 +1,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: bcmp.S,v 1.2 2007/11/12 18:41:59 ad Exp $)
+	RCSID($NetBSD: bcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $)
 #endif
 
 ENTRY(bcmp)
@@ -21,3 +21,4 @@ ENTRY(bcmp)
 
 L1:	incl	%eax
 L2:	ret
+END(bcmp)
Index: src/common/lib/libc/arch/x86_64/string/memcmp.S
diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.2 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3
--- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.2	Mon Nov 12 18:41:59 2007
+++ src/common/lib/libc/arch/x86_64/string/memcmp.S	Sat Mar 22 19:16:34 2014
@@ -7,7 +7,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: memcmp.S,v 1.2 2007/11/12 18:41:59 ad Exp $)
+	RCSID($NetBSD: memcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $)
 #endif
 
 ENTRY(memcmp)
@@ -37,3 +37,4 @@ L6:	xorl	%eax,%eax		/* Perform unsigned 
 	movb	-1(%rsi),%dl
 	subl%edx,%eax
 	ret
+END(memcmp)
Index: src/common/lib/libc/arch/x86_64/string/strrchr.S
diff -u src/common/lib/libc/arch/x86_64/string/strrchr.S:1.2 src/common/lib/libc/arch/x86_64/string/strrchr.S:1.3
--- src/common/lib/libc/arch/x86_64/string/strrchr.S:1.2	Fri Jul 17 19:37:57 2009
+++ src/common/lib/libc/arch/x86_64/string/strrchr.S	Sat Mar 22 19:16:34 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: strrchr.S,v 1.2 2009/07/17 19:37:57 dsl Exp $)
+	RCSID($NetBSD: strrchr.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $)
 #endif
 
 ENTRY(strrchr)
@@ -120,5 +120,6 @@ ENTRY(strrchr)
 
 .Ldone:
 	ret
+END(strrchr)
 
 STRONG_ALIAS(rindex,strrchr)

Index: src/common/lib/libc/arch/x86_64/string/bcopy.S
diff -u src/common/lib/libc/arch/x86_64/string/bcopy.S:1.4 src/common/lib/libc/arch/x86_64/string/bcopy.S:1.5
--- src/common/lib/libc/arch/x86_64/string/bcopy.S:1.4	Sun Nov 22 17:25:47 2009
+++ src/common/lib/libc/arch/x86_64/string/bcopy.S	Sat Mar 22 19:16:34 2014
@@ -32,7 +32,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: bcopy.S,v 1.4 2009/11/22 17:25:47 dsl Exp $)
+	RCSID($NetBSD: bcopy.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $)
 #endif
 
 	/*
@@ -158,3 +158,13 @@ ENTRY(bcopy)
 	cld
 	ret
 #endif
+
+#ifdef MEMCOPY
+END(memcpy)
+#else
+#ifdef MEMMOVE
+END(memmove)
+#else
+END(bcopy)
+#endif
+#endif
Index: src/common/lib/libc/arch/x86_64/string/ffs.S
diff -u src/common/lib/libc/arch/x86_64/string/ffs.S:1.4 src/common/lib/libc/arch/x86_64/string/ffs.S:1.5
--- src/common/lib/libc/arch/x86_64/string/ffs.S:1.4	Mon Jul 20 15:21:00 2009
+++ src/common/lib/libc/arch/x86_64/string/ffs.S	Sat Mar 22 19:16:34 2014
@@ -7,7 +7,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: ffs.S,v 1.4 2009/07/20 15:21:00 christos Exp $)
+	RCSID($NetBSD: ffs.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $)
 #endif
 
 ENTRY(ffs)
@@ -18,3 +18,4 @@ ENTRY(ffs)
 
 1:	xorl	%eax,%eax		/* clear result */
 	ret
+END(ffs)

Index: src/common/lib/libc/arch/x86_64/string/memchr.S
diff -u src/common/lib/libc/arch/x86_64/string/memchr.S:1.5 src/common/lib/libc/arch/x86_64/string/memchr.S:1.6
--- src/common/lib/libc/arch/x86_64/string/memchr.S:1.5	Sat Aug  1 20:47:02 2009
+++ src/common/lib/libc/arch/x86_64/string/memchr.S	Sat Mar 22 19:16:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: memchr.S,v 1.5 2009/08/01 20:47:02 dsl Exp $	*/
+/*	$NetBSD: memchr.S,v 1.6 2014/03/22 19:16:34 jakllsch Exp $	*/
 
 /*-
  * Copyright (c) 

CVS commit: src/common/lib/libc/arch/i386/string

2014-03-22 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Sat Mar 22 19:38:46 UTC 2014

Modified Files:
src/common/lib/libc/arch/i386/string: ffs.S memchr.S memcmp.S memcpy.S
strcat.S strchr.S strcmp.S strcpy.S strlen.S strrchr.S
src/common/lib/libc/arch/i386/string/small: memcmp.S memset.S strchr.S
strcmp.S strcpy.S strlen.S

Log Message:
For all i386 string assembly functions that don't overlap use END() so
that symbol size information is available.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/ffs.S \
src/common/lib/libc/arch/i386/string/memchr.S \
src/common/lib/libc/arch/i386/string/strcat.S \
src/common/lib/libc/arch/i386/string/strcmp.S \
src/common/lib/libc/arch/i386/string/strcpy.S \
src/common/lib/libc/arch/i386/string/strlen.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/i386/string/memcmp.S \
src/common/lib/libc/arch/i386/string/strchr.S \
src/common/lib/libc/arch/i386/string/strrchr.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/i386/string/memcpy.S
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/small/memcmp.S \
src/common/lib/libc/arch/i386/string/small/memset.S \
src/common/lib/libc/arch/i386/string/small/strchr.S \
src/common/lib/libc/arch/i386/string/small/strcmp.S \
src/common/lib/libc/arch/i386/string/small/strcpy.S \
src/common/lib/libc/arch/i386/string/small/strlen.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/i386/string/ffs.S
diff -u src/common/lib/libc/arch/i386/string/ffs.S:1.1 src/common/lib/libc/arch/i386/string/ffs.S:1.2
--- src/common/lib/libc/arch/i386/string/ffs.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/i386/string/ffs.S	Sat Mar 22 19:38:46 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: ffs.S,v 1.1 2005/12/20 19:28:49 christos Exp $)
+	RCSID($NetBSD: ffs.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
 #endif
 
 ENTRY(ffs)
@@ -18,3 +18,4 @@ ENTRY(ffs)
 	_ALIGN_TEXT
 L1:	xorl	%eax,%eax		/* clear result */
 	ret
+END(ffs)
Index: src/common/lib/libc/arch/i386/string/memchr.S
diff -u src/common/lib/libc/arch/i386/string/memchr.S:1.1 src/common/lib/libc/arch/i386/string/memchr.S:1.2
--- src/common/lib/libc/arch/i386/string/memchr.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/i386/string/memchr.S	Sat Mar 22 19:38:46 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: memchr.S,v 1.1 2005/12/20 19:28:49 christos Exp $)
+	RCSID($NetBSD: memchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
 #endif
 
 ENTRY(memchr)
@@ -16,7 +16,7 @@ ENTRY(memchr)
 	movl	16(%esp),%esi
 
 	/*
-	 * Align to word boundary. 
+	 * Align to word boundary.
 	 * Consider unrolling loop?
 	 */
 	testl	%esi,%esi	/* nbytes == 0? */
@@ -107,3 +107,4 @@ ENTRY(memchr)
 .Ldone:
 	popl	%esi
 	ret
+END(memchr)
Index: src/common/lib/libc/arch/i386/string/strcat.S
diff -u src/common/lib/libc/arch/i386/string/strcat.S:1.1 src/common/lib/libc/arch/i386/string/strcat.S:1.2
--- src/common/lib/libc/arch/i386/string/strcat.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/i386/string/strcat.S	Sat Mar 22 19:38:46 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: strcat.S,v 1.1 2005/12/20 19:28:49 christos Exp $)
+	RCSID($NetBSD: strcat.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
 #endif
 
 ENTRY(strcat)
@@ -125,3 +125,4 @@ ENTRY(strcat)
 	movl	8(%esp),%eax
 	popl	%ebx
 	ret
+END(strcat)
Index: src/common/lib/libc/arch/i386/string/strcmp.S
diff -u src/common/lib/libc/arch/i386/string/strcmp.S:1.1 src/common/lib/libc/arch/i386/string/strcmp.S:1.2
--- src/common/lib/libc/arch/i386/string/strcmp.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/i386/string/strcmp.S	Sat Mar 22 19:38:46 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: strcmp.S,v 1.1 2005/12/20 19:28:49 christos Exp $)
+	RCSID($NetBSD: strcmp.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
 #endif
 
 ENTRY(strcmp)
@@ -75,3 +75,4 @@ ENTRY(strcmp)
 	popl	%ebx
 	popl	%esi
 	ret
+END(strcmp)
Index: src/common/lib/libc/arch/i386/string/strcpy.S
diff -u src/common/lib/libc/arch/i386/string/strcpy.S:1.1 src/common/lib/libc/arch/i386/string/strcpy.S:1.2
--- src/common/lib/libc/arch/i386/string/strcpy.S:1.1	Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/i386/string/strcpy.S	Sat Mar 22 19:38:46 2014
@@ -6,7 +6,7 @@
 #include machine/asm.h
 
 #if defined(LIBC_SCCS)
-	RCSID($NetBSD: strcpy.S,v 1.1 2005/12/20 19:28:49 christos Exp $)
+	RCSID($NetBSD: strcpy.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $)
 #endif
 
 /*
@@ -14,7 +14,7 @@
  * source pointer is aligned to a word boundary, it then copies by
  * words until it finds a word containing a zero byte, and finally
  * copies by bytes until the end of 

  1   2   3   4   >