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/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  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 
 
@@ -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/sparc/atomic

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

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

Log Message:
Provide the missing __sync_* ops for sparc.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/sparc/atomic/Makefile.inc
cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.16 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.17
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.16	Wed Jan 29 13:06:36 2014
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Fri Feb 21 16:21:02 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2014/01/29 13:06:36 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.17 2014/02/21 16:21:02 martin Exp $
 
 .include 
 
@@ -21,7 +21,20 @@ SPARC64DIR=	${.PARSEDIR}/../../sparc64/a
 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 \
 	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.S
+	atomic_or_32_nv_cas.c atomic_swap_32_cas.c membar_ops.S	\
+	atomic_cas_32_cas.c atomic_nand_32_cas.c atomic_sub_32_cas.c	\
+	atomic_xor_32_cas.c
+.  endif
+
+.  if ${LIB} == "c"
+SRCS+=	atomic_nand_16_cas.c atomic_nand_8_cas.c	\
+	atomic_and_16_cas.c atomic_and_8_cas.c		\
+	atomic_xor_16_cas.c atomic_xor_8_cas.c		\
+	atomic_add_16_cas.c atomic_add_8_cas.c		\
+	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
 .  endif
 
 .  if (${LIB} == "kern" || ${LIB} == "rump")

Index: src/common/lib/libc/arch/sparc/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.12 src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.13
--- src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.12	Thu Sep 12 15:36:14 2013
+++ src/common/lib/libc/arch/sparc/atomic/atomic_cas.S	Fri Feb 21 16:21:02 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.12 2013/09/12 15:36:14 joerg Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.13 2014/02/21 16:21:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -147,6 +147,7 @@ ATOMIC_OP_ALIAS(atomic_cas_ulong,_atomic
 STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_32)
 ATOMIC_OP_ALIAS(atomic_cas_ptr,_atomic_cas_32)
 STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_32)
+STRONG_ALIAS(__sync_val_compare_and_swap_4,_atomic_cas_32)
 
 ATOMIC_OP_ALIAS(atomic_cas_32_ni,_atomic_cas_32)
 STRONG_ALIAS(_atomic_cas_32_ni,_atomic_cas_32)



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

2014-01-29 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jan 29 13:06:36 UTC 2014

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

Log Message:
Provide _atomic_cas_{16,8}_up


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/sparc/atomic/Makefile.inc
cvs rdiff -u -r1.1 -r1.2 \
src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.15 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.16
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.15	Wed Nov 28 21:39:59 2012
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Wed Jan 29 13:06:36 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.15 2012/11/28 21:39:59 martin Exp $
+#	$NetBSD: Makefile.inc,v 1.16 2014/01/29 13:06:36 martin Exp $
 
 .include 
 
@@ -29,7 +29,8 @@ SRCS+=	atomic_cas.S
 .  endif
 
 .  if (${LIB} == "c" || ${LIB} == "pthread")
-CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
+CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP -D__HAVE_ASM_ATOMIC_CAS_16_UP	\
+	-D__HAVE_ASM_ATOMIC_CAS_8_UP
 SRCS+=	atomic_init_testset.c atomic_cas_up.S
 .  endif
 

Index: src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S
diff -u src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S:1.1 src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S:1.2
--- src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S:1.1	Wed Nov 28 21:39:59 2012
+++ src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S	Wed Jan 29 13:06:36 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_up.S,v 1.1 2012/11/28 21:39:59 martin Exp $	*/
+/*	$NetBSD: atomic_cas_up.S,v 1.2 2014/01/29 13:06:36 martin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -43,3 +43,27 @@ RAS_END_ASM_HIDDEN(_atomic_cas)
 	retl
 	 mov	%o3, %o0			! return old value
 
+ENTRY(_atomic_cas_16_up)
+	.hidden	_C_LABEL(_atomic_cas_16_up)
+RAS_START_ASM_HIDDEN(_atomic_cas_16)
+	lduh	[%o0], %o3			! get old value
+	cmp	%o1, %o3			! old == new?
+	beq,a	1f! yes, do the store
+	 sth	%o2, [%o0]			! (in the delay slot)
+RAS_END_ASM_HIDDEN(_atomic_cas_16)
+1:
+	retl
+	 mov	%o3, %o0			! return old value
+
+ENTRY(_atomic_cas_8_up)
+	.hidden	_C_LABEL(_atomic_cas_8_up)
+RAS_START_ASM_HIDDEN(_atomic_cas_8)
+	ldub	[%o0], %o3			! get old value
+	cmp	%o1, %o3			! old == new?
+	beq,a	1f! yes, do the store
+	 stb	%o2, [%o0]			! (in the delay slot)
+RAS_END_ASM_HIDDEN(_atomic_cas_8)
+1:
+	retl
+	 mov	%o3, %o0			! return old value
+



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

2012-11-28 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Nov 28 21:39:59 UTC 2012

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

Log Message:
Provide an assembler version of _atomic_cas_up for sparc - the C code
does not compile to something usable in a RAS. See PR 38482.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/sparc/atomic/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/sparc/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/sparc/atomic/Makefile.inc
diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.15
--- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.14	Fri Mar 13 19:16:46 2009
+++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc	Wed Nov 28 21:39:59 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.14 2009/03/13 19:16:46 abs Exp $
+#	$NetBSD: Makefile.inc,v 1.15 2012/11/28 21:39:59 martin Exp $
 
 .include 
 
@@ -29,7 +29,8 @@ SRCS+=	atomic_cas.S
 .  endif
 
 .  if (${LIB} == "c" || ${LIB} == "pthread")
-SRCS+=	atomic_init_testset.c
+CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP
+SRCS+=	atomic_init_testset.c atomic_cas_up.S
 .  endif
 
 . endif

Added files:

Index: src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S
diff -u /dev/null src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S:1.1
--- /dev/null	Wed Nov 28 21:39:59 2012
+++ src/common/lib/libc/arch/sparc/atomic/atomic_cas_up.S	Wed Nov 28 21:39:59 2012
@@ -0,0 +1,45 @@
+/*	$NetBSD: atomic_cas_up.S,v 1.1 2012/11/28 21:39:59 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * 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 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 
+#include "atomic_op_asm.h"
+
+	.text
+
+ENTRY(_atomic_cas_up)
+	.hidden	_C_LABEL(_atomic_cas_up)
+RAS_START_ASM_HIDDEN(_atomic_cas)
+	ld	[%o0], %o3			! get old value
+	cmp	%o1, %o3			! old == new?
+	beq,a	1f! yes, do the store
+	 st	%o2, [%o0]			! (in the delay slot)
+RAS_END_ASM_HIDDEN(_atomic_cas)
+1:
+	retl
+	 mov	%o3, %o0			! return old value
+



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

2011-02-22 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Tue Feb 22 18:45:10 UTC 2011

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

Log Message:
Add PIC variant for fetching the lock address.

librump.so now works on sparc


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/sparc/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/sparc/atomic/atomic_cas.S
diff -u src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.10 src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.11
--- src/common/lib/libc/arch/sparc/atomic/atomic_cas.S:1.10	Fri Mar 13 16:40:22 2009
+++ src/common/lib/libc/arch/sparc/atomic/atomic_cas.S	Tue Feb 22 18:45:10 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas.S,v 1.10 2009/03/13 16:40:22 nakayama Exp $	*/
+/*	$NetBSD: atomic_cas.S,v 1.11 2011/02/22 18:45:10 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -63,15 +63,29 @@
 #if defined(MULTIPROCESSOR)
 	.section .bss
 	.align	1024
+#ifdef PIC
+	.globl _C_LABEL(_atomic_cas_locktab)
+#endif
 OTYPE(_C_LABEL(_atomic_cas_locktab))
 _C_LABEL(_atomic_cas_locktab):
 	.space	1024
 
+#ifdef PIC
+/* o4 is not used for PSR in PIC cases, so we can use it here */
+#define GETLOCKTAB			\
+	PIC_PROLOGUE(%o3,%o4)		;\
+	set _C_LABEL(_atomic_cas_locktab), %o4;\
+	ld [%o3 + %o4], %o3
+#else
+#define GETLOCKTAB			\
+	sethi	%hi(_C_LABEL(_atomic_cas_locktab)), %o3
+#endif
+
 #define	ACQUIRE_INTERLOCK		 \
 	DISABLE_INTERRUPTS		;\
 	srl	%o0, 3, %o5			/* get lock address */	;\
 	and	%o5, 1023, %o5		;\
-	sethi	%hi(_C_LABEL(_atomic_cas_locktab)), %o3			;\
+	GETLOCKTAB			;\
 	add	%o5, %o3, %o5		;\
 	;\
 	/* %o5 has interlock address */	;\