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

2020-09-06 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Mon Sep  7 00:52:19 UTC 2020

Modified Files:
src/common/lib/libc/atomic: atomic_c11_compare_exchange_cas_16.c
atomic_c11_compare_exchange_cas_32.c
atomic_c11_compare_exchange_cas_8.c atomic_load.c atomic_store.c

Log Message:
make some prototypes match the builtin properly.  GCC 9 complains
with the old version, GCC 8 is happy with this version.

tested on sparc.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c \
src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c \
src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c \
src/common/lib/libc/atomic/atomic_load.c \
src/common/lib/libc/atomic/atomic_store.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.2 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.3
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.2	Tue Nov  4 19:56:44 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c	Mon Sep  7 00:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_16.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_16.c,v 1.3 2020/09/07 00:52:19 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,15 +36,15 @@
 #endif
 #include 
 
-bool __atomic_compare_exchange_2(volatile uint16_t *, uint16_t *, uint16_t,
+bool __atomic_compare_exchange_2(volatile void *, void *, uint16_t,
 bool, int, int);
 
 bool
-__atomic_compare_exchange_2(volatile uint16_t *mem,
-uint16_t *expected, uint16_t desired,
+__atomic_compare_exchange_2(volatile void *mem,
+void *expected, uint16_t desired,
 bool weak, int success, int failure)
 {
-	uint16_t old = *expected;
+	uint16_t old = *(uint16_t *)expected;
 
 	/*
 	 * Ignore the details (weak, memory model on success and failure)
Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.2 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.3
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.2	Tue Nov  4 19:56:44 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c	Mon Sep  7 00:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_32.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_32.c,v 1.3 2020/09/07 00:52:19 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,15 +36,15 @@
 #endif
 #include 
 
-bool __atomic_compare_exchange_4(volatile uint32_t *, uint32_t *, uint32_t,
+bool __atomic_compare_exchange_4(volatile void *, void *, uint32_t,
 bool, int, int);
 
 bool
-__atomic_compare_exchange_4(volatile uint32_t *mem,
-uint32_t *expected, uint32_t desired,
+__atomic_compare_exchange_4(volatile void *mem,
+void *expected, uint32_t desired,
 bool weak, int success, int failure)
 {
-	uint32_t old = *expected;
+	uint32_t old = *(uint32_t *)expected;
 
 	/*
 	 * Ignore the details (weak, memory model on success and failure)
Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.2 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.3
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.2	Tue Nov  4 19:56:44 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c	Mon Sep  7 00:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_8.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_8.c,v 1.3 2020/09/07 00:52:19 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,15 +36,15 @@
 #endif
 #include 
 
-bool __atomic_compare_exchange_1(volatile uint8_t *, uint8_t *, uint8_t,
+bool __atomic_compare_exchange_1(volatile void *, void *, uint8_t,
 bool, int, int);
 
 bool
-__atomic_compare_exchange_1(volatile uint8_t *mem,
-uint8_t *expected, uint8_t desired,
+__atomic_compare_exchange_1(volatile void *mem,
+void *expected, uint8_t desired,
 bool weak, int success, int failure)
 {
-	uint8_t old = *expected;
+	uint8_t old = *(uint8_t *)expected;
 
 	/*
 	 * Ignore the details (weak, memory model on success and failure)
Index: src/common/lib/libc/atomic/atomic_load.c
diff -u src/common/lib/libc/atomic/atomic_load.c:1.2 src/common/lib/libc/atomic/atomic_load.c:1.3
--- src/common/lib/libc/atomic/atomic_load.c:1.2	Sun Jul  6 01:19:45 2014
+++ src/common/lib/libc/atomic/atomic_load.c	Mon Sep  7 00:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: 

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

2020-05-15 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri May 15 15:20:40 UTC 2020

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
PR 55239: initialize all RAS sections for non-MP configurations


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.16 src/common/lib/libc/atomic/atomic_init_testset.c:1.17
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.16	Mon Feb 18 11:22:56 2019
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Fri May 15 15:20:40 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.16 2019/02/18 11:22:56 martin Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.17 2020/05/15 15:20:40 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: atomic_init_testset.c,v 1.16 2019/02/18 11:22:56 martin Exp $");
+__RCSID("$NetBSD: atomic_init_testset.c,v 1.17 2020/05/15 15:20:40 martin Exp $");
 
 #include "atomic_op_namespace.h"
 
@@ -296,30 +296,28 @@ __libc_atomic_init(void)
 		return;
 	if (ncpu > 1)
 		return;
+
 	if (rasctl(RAS_ADDR(_atomic_cas), RAS_SIZE(_atomic_cas),
 	RAS_INSTALL) == 0) {
 		_atomic_cas_fn = _atomic_cas_up;
-		return;
 	}
 
+
 #ifdef	__HAVE_ATOMIC_CAS_64_UP
 	if (rasctl(RAS_ADDR(_atomic_cas_64), RAS_SIZE(_atomic_cas_64),
 	RAS_INSTALL) == 0) {
 		_atomic_cas_64_fn = _atomic_cas_64_up;
-		return;
 	}
 #endif
 
 	if (rasctl(RAS_ADDR(_atomic_cas_16), RAS_SIZE(_atomic_cas_16),
 	RAS_INSTALL) == 0) {
 		_atomic_cas_16_fn = _atomic_cas_16_up;
-		return;
 	}
 
 	if (rasctl(RAS_ADDR(_atomic_cas_8), RAS_SIZE(_atomic_cas_8),
 	RAS_INSTALL) == 0) {
 		_atomic_cas_8_fn = _atomic_cas_8_up;
-		return;
 	}
 }
 



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

2019-03-01 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Fri Mar  1 09:57:32 UTC 2019

Modified Files:
src/common/lib/libc/atomic: atomic_or_16_cas.c atomic_or_8_cas.c

Log Message:
Fix return value.  or_and_fetch should return new value.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/atomic/atomic_or_16_cas.c \
src/common/lib/libc/atomic/atomic_or_8_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_or_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_16_cas.c:1.3 src/common/lib/libc/atomic/atomic_or_16_cas.c:1.4
--- src/common/lib/libc/atomic/atomic_or_16_cas.c:1.3	Mon Jun 23 21:53:45 2014
+++ src/common/lib/libc/atomic/atomic_or_16_cas.c	Fri Mar  1 09:57:32 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_16_cas.c,v 1.3 2014/06/23 21:53:45 joerg Exp $	*/
+/*	$NetBSD: atomic_or_16_cas.c,v 1.4 2019/03/01 09:57:32 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@ or_and_fetch_2(volatile uint16_t *addr, 
 		old = *addr;
 		new = old | val;
 	} while (atomic_cas_16(addr, old, new) != old);
-	return old;
+	return new;
 }
 
 __strong_alias(__atomic_fetch_or_2,__sync_fetch_and_or_2)
Index: src/common/lib/libc/atomic/atomic_or_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_8_cas.c:1.3 src/common/lib/libc/atomic/atomic_or_8_cas.c:1.4
--- src/common/lib/libc/atomic/atomic_or_8_cas.c:1.3	Mon Jun 23 21:53:45 2014
+++ src/common/lib/libc/atomic/atomic_or_8_cas.c	Fri Mar  1 09:57:32 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_8_cas.c,v 1.3 2014/06/23 21:53:45 joerg Exp $	*/
+/*	$NetBSD: atomic_or_8_cas.c,v 1.4 2019/03/01 09:57:32 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@ or_and_fetch_1(volatile uint8_t *addr, u
 		old = *addr;
 		new = old | val;
 	} while (atomic_cas_8(addr, old, new) != old);
-	return old;
+	return new;
 }
 
 __strong_alias(__atomic_fetch_or_1,__sync_fetch_and_or_1)



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

2019-02-28 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Fri Mar  1 06:14:52 UTC 2019

Modified Files:
src/common/lib/libc/atomic: atomic_nand_16_cas.c atomic_nand_32_cas.c
atomic_nand_8_cas.c

Log Message:
Add missing alias for __atomic_fetch_nand_N.
XXX I'm not sure why does llvm/sparc call __atomic instead of
__sync though.
XXX atomic_*_cas.c should be more symmetric...


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/atomic/atomic_nand_16_cas.c \
src/common/lib/libc/atomic/atomic_nand_8_cas.c
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/atomic/atomic_nand_32_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_nand_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.3
--- src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_nand_16_cas.c	Fri Mar  1 06:14:52 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_nand_16_cas.c,v 1.3 2019/03/01 06:14:52 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ nand_and_fetch_2(volatile uint16_t *addr
 	} while (atomic_cas_16(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_nand_2,__sync_fetch_and_nand_2)
Index: src/common/lib/libc/atomic/atomic_nand_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.3
--- src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.2	Fri Feb 21 16:06:48 2014
+++ src/common/lib/libc/atomic/atomic_nand_8_cas.c	Fri Mar  1 06:14:52 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
+/*	$NetBSD: atomic_nand_8_cas.c,v 1.3 2019/03/01 06:14:52 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -61,3 +61,5 @@ nand_and_fetch_1(volatile uint8_t *addr,
 	} while (atomic_cas_8(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_nand_1,__sync_fetch_and_nand_1)

Index: src/common/lib/libc/atomic/atomic_nand_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_32_cas.c:1.1 src/common/lib/libc/atomic/atomic_nand_32_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_nand_32_cas.c:1.1	Fri Feb 21 10:52:50 2014
+++ src/common/lib/libc/atomic/atomic_nand_32_cas.c	Fri Mar  1 06:14:52 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $	*/
+/*	$NetBSD: atomic_nand_32_cas.c,v 1.2 2019/03/01 06:14:52 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,3 +59,5 @@ nand_and_fetch_4(volatile uint32_t *addr
 	} while (atomic_cas_32(addr, old, new) != old);
 	return new;
 }
+
+__strong_alias(__atomic_fetch_nand_4,__sync_fetch_and_nand_4)



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_add_32_nv_cas.c

Log Message:
Include the C11 atomic builtin alias.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/atomic/atomic_add_32_nv_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_32_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.6 src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.7
--- src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.6	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_add_32_nv_cas.c	Sat Feb 27 19:20:01 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_nv_cas.c,v 1.6 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_add_32_nv_cas.c,v 1.7 2016/02/27 19:20:01 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -49,6 +49,7 @@ atomic_add_32_nv(volatile uint32_t *addr
 #undef atomic_add_32_nv
 atomic_op_alias(atomic_add_32_nv,_atomic_add_32_nv)
 crt_alias(__sync_add_and_fetch_4,_atomic_add_32_nv)
+crt_alias(__atomic_add_fetch_4,_atomic_add_32_nv)
 
 #undef atomic_add_int_nv
 atomic_op_alias(atomic_add_int_nv,_atomic_add_32_nv)



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

2014-11-04 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Tue Nov  4 19:56:44 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_c11_compare_exchange_cas_16.c
atomic_c11_compare_exchange_cas_32.c
atomic_c11_compare_exchange_cas_8.c

Log Message:
Provide prototypes to fix build with clang.


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

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.1 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.2
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.1	Sun Oct 12 17:51:47 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c	Tue Nov  4 19:56:44 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_16.c,v 1.1 2014/10/12 17:51:47 martin Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_16.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,6 +36,9 @@
 #endif
 #include sys/atomic.h
 
+bool __atomic_compare_exchange_2(volatile uint16_t *, uint16_t *, uint16_t,
+bool, int, int);
+
 bool
 __atomic_compare_exchange_2(volatile uint16_t *mem,
 uint16_t *expected, uint16_t desired,
Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.1 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.2
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.1	Sun Oct 12 17:51:47 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c	Tue Nov  4 19:56:44 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_32.c,v 1.1 2014/10/12 17:51:47 martin Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_32.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,6 +36,9 @@
 #endif
 #include sys/atomic.h
 
+bool __atomic_compare_exchange_4(volatile uint32_t *, uint32_t *, uint32_t,
+bool, int, int);
+
 bool
 __atomic_compare_exchange_4(volatile uint32_t *mem,
 uint32_t *expected, uint32_t desired,
Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c
diff -u src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.1 src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.2
--- src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c:1.1	Sun Oct 12 17:51:47 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_8.c	Tue Nov  4 19:56:44 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_c11_compare_exchange_cas_8.c,v 1.1 2014/10/12 17:51:47 martin Exp $	*/
+/*	$NetBSD: atomic_c11_compare_exchange_cas_8.c,v 1.2 2014/11/04 19:56:44 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -36,6 +36,9 @@
 #endif
 #include sys/atomic.h
 
+bool __atomic_compare_exchange_1(volatile uint8_t *, uint8_t *, uint8_t,
+bool, int, int);
+
 bool
 __atomic_compare_exchange_1(volatile uint8_t *mem,
 uint8_t *expected, uint8_t desired,



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

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

Added Files:
src/common/lib/libc/atomic: atomic_c11_compare_exchange_cas_16.c
atomic_c11_compare_exchange_cas_32.c
atomic_c11_compare_exchange_cas_8.c

Log Message:
Provide __atomic_compare_exchange_N (as needed for the C11 2011 atomic
ops) via the corresponding CAS.


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

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

Added files:

Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c:1.1
--- /dev/null	Sun Oct 12 17:51:47 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_16.c	Sun Oct 12 17:51:47 2014
@@ -0,0 +1,52 @@
+/*	$NetBSD: atomic_c11_compare_exchange_cas_16.c,v 1.1 2014/10/12 17:51:47 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2007 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Martin Husemann.
+ *
+ * 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 atomic_op_namespace.h
+
+#if !defined(_KERNEL)  !defined(_STANDALONE)
+#include stdbool.h
+#endif
+#include sys/atomic.h
+
+bool
+__atomic_compare_exchange_2(volatile uint16_t *mem,
+uint16_t *expected, uint16_t desired,
+bool weak, int success, int failure)
+{
+	uint16_t old = *expected;
+
+	/*
+	 * Ignore the details (weak, memory model on success and failure)
+	 * and just do the cas. If we get here the compiler couldn't
+	 * do better and it mostly will not matter at all.
+	 */
+	return atomic_cas_16(mem, old, desired) == old;
+}
Index: src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c:1.1
--- /dev/null	Sun Oct 12 17:51:47 2014
+++ src/common/lib/libc/atomic/atomic_c11_compare_exchange_cas_32.c	Sun Oct 12 17:51:47 2014
@@ -0,0 +1,52 @@
+/*	$NetBSD: atomic_c11_compare_exchange_cas_32.c,v 1.1 2014/10/12 17:51:47 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2007 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Martin Husemann.
+ *
+ * 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
+ * 

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

2014-09-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Sep  3 19:30:47 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_cas_by_cas32.c

Log Message:
Add __sync_val_compare_and_swap_{1,2} aliases for _atomic_cas_{8,16}


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/atomic/atomic_cas_by_cas32.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_cas_by_cas32.c
diff -u src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.3 src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.4
--- src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.3	Sun Mar  9 16:19:14 2014
+++ src/common/lib/libc/atomic/atomic_cas_by_cas32.c	Wed Sep  3 19:30:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_by_cas32.c,v 1.3 2014/03/09 16:19:14 riastradh Exp $	*/
+/*	$NetBSD: atomic_cas_by_cas32.c,v 1.4 2014/09/03 19:30:47 matt Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #include sys/types.h
 #include sys/inttypes.h
 
+#include atomic_op_namespace.h
+
 uint32_t _atomic_cas_32(volatile uint32_t *addr, uint32_t old, uint32_t new);
 uint16_t _atomic_cas_16(volatile uint16_t *addr, uint16_t old, uint16_t new);
 uint8_t _atomic_cas_8(volatile uint8_t *addr, uint8_t old, uint8_t new);
@@ -62,6 +64,8 @@ _atomic_cas_16(volatile uint16_t *addr, 
 	return old;
 }
 
+crt_alias(__sync_val_compare_and_swap_2,_atomic_cas_16)
+
 uint8_t
 _atomic_cas_8(volatile uint8_t *addr, uint8_t old, uint8_t new)
 {
@@ -83,3 +87,5 @@ _atomic_cas_8(volatile uint8_t *addr, ui
 
 	return old;
 }
+
+crt_alias(__sync_val_compare_and_swap_1,_atomic_cas_8)



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

2014-07-05 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sun Jul  6 01:19:45 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_load.c atomic_store.c

Log Message:
Add unused memory model argument to make GCC happy.


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

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_load.c
diff -u src/common/lib/libc/atomic/atomic_load.c:1.1 src/common/lib/libc/atomic/atomic_load.c:1.2
--- src/common/lib/libc/atomic/atomic_load.c:1.1	Sat Jul  5 20:44:46 2014
+++ src/common/lib/libc/atomic/atomic_load.c	Sun Jul  6 01:19:45 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_load.c,v 1.1 2014/07/05 20:44:46 joerg Exp $	*/
+/*	$NetBSD: atomic_load.c,v 1.2 2014/07/06 01:19:45 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_load.c,v 1.1 2014/07/05 20:44:46 joerg Exp $);
+__RCSID($NetBSD: atomic_load.c,v 1.2 2014/07/06 01:19:45 joerg Exp $);
 
 #include atomic_op_namespace.h
 
@@ -35,9 +35,9 @@ __RCSID($NetBSD: atomic_load.c,v 1.1 20
 #include sys/atomic.h
 
 #define atomic_load_n(n,b) \
-uint ## b ## _t __atomic_load_ ## n(volatile uint ## b ## _t *); \
+uint ## b ## _t __atomic_load_ ## n(volatile uint ## b ## _t *, int); \
 uint ## b ## _t \
-__atomic_load_ ## n(volatile uint ## b ## _t *ptr) \
+__atomic_load_ ## n(volatile uint ## b ## _t *ptr, int memmodel) \
 { \
 	uint## b ##_t val; \
 	membar_enter(); \
Index: src/common/lib/libc/atomic/atomic_store.c
diff -u src/common/lib/libc/atomic/atomic_store.c:1.1 src/common/lib/libc/atomic/atomic_store.c:1.2
--- src/common/lib/libc/atomic/atomic_store.c:1.1	Sat Jul  5 20:44:46 2014
+++ src/common/lib/libc/atomic/atomic_store.c	Sun Jul  6 01:19:45 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_store.c,v 1.1 2014/07/05 20:44:46 joerg Exp $	*/
+/*	$NetBSD: atomic_store.c,v 1.2 2014/07/06 01:19:45 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_store.c,v 1.1 2014/07/05 20:44:46 joerg Exp $);
+__RCSID($NetBSD: atomic_store.c,v 1.2 2014/07/06 01:19:45 joerg Exp $);
 
 #include atomic_op_namespace.h
 
@@ -35,9 +35,10 @@ __RCSID($NetBSD: atomic_store.c,v 1.1 2
 #include sys/atomic.h
 
 #define atomic_store_n(n,b) \
-void __atomic_store_ ## n(volatile uint ## b ## _t *, uint ## b ## _t); \
+void __atomic_store_ ## n(volatile uint ## b ## _t *, uint ## b ## _t, int); \
 void \
-__atomic_store_ ## n(volatile uint ## b ## _t *ptr, uint ## b ## _t val) \
+__atomic_store_ ## n(volatile uint ## b ## _t *ptr, uint ## b ## _t val, \
+ int memmodel) \
 { \
 	membar_enter(); \
 	*ptr = val; \



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

2014-03-09 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sun Mar  9 16:19:14 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_cas_by_cas32.c

Log Message:
Fix subword atomic_cas.

- Don't loop forever on failure.
- Don't shift away the result and return zero on success.

Evidently we lack automatic tests for these!


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/atomic/atomic_cas_by_cas32.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_cas_by_cas32.c
diff -u src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.2 src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.3
--- src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.2	Fri Mar  7 08:42:58 2014
+++ src/common/lib/libc/atomic/atomic_cas_by_cas32.c	Sun Mar  9 16:19:14 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_by_cas32.c,v 1.2 2014/03/07 08:42:58 martin Exp $	*/
+/*	$NetBSD: atomic_cas_by_cas32.c,v 1.3 2014/03/09 16:19:14 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -48,14 +48,18 @@ _atomic_cas_16(volatile uint16_t *addr, 
 	volatile uint32_t * ptr = (volatile uint32_t *)base;
 	const size_t shift = off*8;
 	const uint32_t mask = 0x0  shift;
+	const uint32_t old32_part = (uint32_t)old  shift;
+	const uint32_t new32_part = (uint32_t)new  shift;
 	uint32_t old32, new32;
 
 	do {
 		old32 = *ptr;
-		new32 = (old32  ~mask) | (uint32_t)new  shift;
-		old32 = (old32  ~mask) | (uint32_t)old  shift;
+		if ((old32  mask) != old32_part)
+			return (uint16_t)((old32  mask)  shift);
+		new32 = (old32  ~mask) | new32_part;
 	} while (_atomic_cas_32(ptr, old32, new32) != old32);
-	return (old  mask)  shift;
+
+	return old;
 }
 
 uint8_t
@@ -66,12 +70,16 @@ _atomic_cas_8(volatile uint8_t *addr, ui
 	volatile uint32_t * ptr = (volatile uint32_t *)base;
 	const size_t shift = off*8;
 	const uint32_t mask = 0x0ff  shift;
+	const uint32_t old32_part = (uint32_t)old  shift;
+	const uint32_t new32_part = (uint32_t)new  shift;
 	uint32_t old32, new32;
 
 	do {
 		old32 = *ptr;
-		new32 = (old32  ~mask) | (uint32_t)new  shift;
-		old32 = (old32  ~mask) | (uint32_t)old  shift;
+		if ((old32  mask) != old32_part)
+			return (uint8_t)((old32  mask)  shift);
+		new32 = (old32  ~mask) | new32_part;
 	} while (_atomic_cas_32(ptr, old32, new32) != old32);
-	return (old  mask)  shift;
+
+	return old;
 }



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

2014-03-07 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Mar  7 08:42:58 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_cas_by_cas32.c

Log Message:
Fix return value (typo, noticed by Nick Hudson)


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

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_cas_by_cas32.c
diff -u src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.1 src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.2
--- src/common/lib/libc/atomic/atomic_cas_by_cas32.c:1.1	Mon Feb 24 16:15:43 2014
+++ src/common/lib/libc/atomic/atomic_cas_by_cas32.c	Fri Mar  7 08:42:58 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_by_cas32.c,v 1.1 2014/02/24 16:15:43 martin Exp $	*/
+/*	$NetBSD: atomic_cas_by_cas32.c,v 1.2 2014/03/07 08:42:58 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -55,7 +55,7 @@ _atomic_cas_16(volatile uint16_t *addr, 
 		new32 = (old32  ~mask) | (uint32_t)new  shift;
 		old32 = (old32  ~mask) | (uint32_t)old  shift;
 	} while (_atomic_cas_32(ptr, old32, new32) != old32);
-	return (old  shift)  mask;
+	return (old  mask)  shift;
 }
 
 uint8_t
@@ -73,5 +73,5 @@ _atomic_cas_8(volatile uint8_t *addr, ui
 		new32 = (old32  ~mask) | (uint32_t)new  shift;
 		old32 = (old32  ~mask) | (uint32_t)old  shift;
 	} while (_atomic_cas_32(ptr, old32, new32) != old32);
-	return (old  shift)  mask;
+	return (old  mask)  shift;
 }



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

2014-02-24 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Feb 24 17:18:27 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
Provide CAS variants for 16 and 8 bit when running with more that 1 cpu


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.13 src/common/lib/libc/atomic/atomic_init_testset.c:1.14
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.13	Sat Feb 22 17:08:30 2014
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Mon Feb 24 17:18:27 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.13 2014/02/22 17:08:30 martin Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.14 2014/02/24 17:18:27 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.13 2014/02/22 17:08:30 martin Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.14 2014/02/24 17:18:27 martin Exp $);
 
 #include atomic_op_namespace.h
 
@@ -53,6 +53,12 @@ __RCSID($NetBSD: atomic_init_testset.c,
 #define	I128	I16 I16 I16 I16 I16 I16 I16 I16
 
 static __cpu_simple_lock_t atomic_locks[128] = { I128 };
+/*
+ * Pick a lock out of above array depending on the object address
+ * passed. Most variables used atomically will not be in the same
+ * cacheline - and if they are, using the same lock is fine.
+ */
+#define HASH(PTR)	(((uintptr_t)(PTR)  3)  127)
 
 #ifdef	__HAVE_ASM_ATOMIC_CAS_UP
 extern uint32_t _atomic_cas_up(volatile uint32_t *, uint32_t, uint32_t);
@@ -143,7 +149,41 @@ _atomic_cas_mp(volatile uint32_t *ptr, u
 	__cpu_simple_lock_t *lock;
 	uint32_t ret;
 
-	lock = atomic_locks[((uintptr_t)ptr  3)  127];
+	lock = atomic_locks[HASH(ptr)];
+	__cpu_simple_lock(lock);
+	ret = *ptr;
+	if (__predict_true(ret == old)) {
+		*ptr = new;
+	}
+	__cpu_simple_unlock(lock);
+
+	return ret;
+}
+
+static uint16_t
+_atomic_cas_16_mp(volatile uint16_t *ptr, uint16_t old, uint16_t new)
+{
+	__cpu_simple_lock_t *lock;
+	uint16_t ret;
+
+	lock = atomic_locks[HASH(ptr)];
+	__cpu_simple_lock(lock);
+	ret = *ptr;
+	if (__predict_true(ret == old)) {
+		*ptr = new;
+	}
+	__cpu_simple_unlock(lock);
+
+	return ret;
+}
+
+static uint8_t
+_atomic_cas_8_mp(volatile uint8_t *ptr, uint8_t old, uint8_t new)
+{
+	__cpu_simple_lock_t *lock;
+	uint8_t ret;
+
+	lock = atomic_locks[HASH(ptr)];
 	__cpu_simple_lock(lock);
 	ret = *ptr;
 	if (__predict_true(ret == old)) {
@@ -186,6 +226,8 @@ __libc_atomic_init(void)
 	size_t len;
 
 	_atomic_cas_fn = _atomic_cas_mp;
+	_atomic_cas_16_fn = _atomic_cas_16_mp;
+	_atomic_cas_8_fn = _atomic_cas_8_mp;
 
 	mib[0] = CTL_HW;
 	mib[1] = HW_NCPU; 



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_swap_32_cas.c atomic_swap_64_cas.c

Log Message:
Add missing __sync_lock_test_and_set_* aliases for PR lib/48601


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/atomic_swap_32_cas.c
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_swap_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_swap_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.4 src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.4	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_swap_32_cas.c	Fri Feb 21 10:27:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_32_cas.c,v 1.4 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_swap_32_cas.c,v 1.5 2014/02/21 10:27:34 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -50,6 +50,7 @@ atomic_op_alias(atomic_swap_32,_atomic_s
 #undef atomic_swap_uint
 atomic_op_alias(atomic_swap_uint,_atomic_swap_32)
 __strong_alias(_atomic_swap_uint,_atomic_swap_32)
+__strong_alias(__sync_lock_test_and_set_4,_atomic_swap_32)
 #if !defined(_LP64)
 #undef atomic_swap_ulong
 atomic_op_alias(atomic_swap_ulong,_atomic_swap_32)

Index: src/common/lib/libc/atomic/atomic_swap_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.5 src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.5	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_swap_64_cas.c	Fri Feb 21 10:27:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64_cas.c,v 1.5 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_swap_64_cas.c,v 1.6 2014/02/21 10:27:34 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -53,6 +53,7 @@ atomic_op_alias(atomic_swap_64,_atomic_s
 #undef atomic_swap_ulong
 atomic_op_alias(atomic_swap_ulong,_atomic_swap_64)
 __strong_alias(_atomic_swap_ulong,_atomic_swap_64)
+__strong_alias(__sync_lock_test_and_set_8,_atomic_swap_64)
 #undef atomic_swap_ptr
 atomic_op_alias(atomic_swap_ptr,_atomic_swap_64)
 __strong_alias(_atomic_swap_ptr,_atomic_swap_64)



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

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

Added Files:
src/common/lib/libc/atomic: atomic_cas_32_cas.c atomic_nand_32_cas.c
atomic_sub_32_cas.c atomic_xor_32_cas.c

Log Message:
Provide 32bit __sync ops based on atomic_cas_32.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/atomic/atomic_cas_32_cas.c \
src/common/lib/libc/atomic/atomic_nand_32_cas.c \
src/common/lib/libc/atomic/atomic_sub_32_cas.c \
src/common/lib/libc/atomic/atomic_xor_32_cas.c

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

Added files:

Index: src/common/lib/libc/atomic/atomic_cas_32_cas.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_cas_32_cas.c:1.1
--- /dev/null	Fri Feb 21 10:52:50 2014
+++ src/common/lib/libc/atomic/atomic_cas_32_cas.c	Fri Feb 21 10:52:50 2014
@@ -0,0 +1,45 @@
+/*	$NetBSD: atomic_cas_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * 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.
+ */
+
+#if !defined(_KERNEL)  !defined(_STANDALONE)
+#include stdbool.h
+#endif
+#include sys/atomic.h
+
+bool bool_compare_and_swap_4(volatile uint32_t *, uint32_t, uint32_t, ...)
+asm(__sync_bool_compare_and_swap_4);
+
+bool
+bool_compare_and_swap_4(volatile uint32_t *addr, uint32_t oldval,
+	uint32_t newval, ...)
+{
+	return atomic_cas_32(addr, oldval, newval) == oldval;
+}
Index: src/common/lib/libc/atomic/atomic_nand_32_cas.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_nand_32_cas.c:1.1
--- /dev/null	Fri Feb 21 10:52:50 2014
+++ src/common/lib/libc/atomic/atomic_nand_32_cas.c	Fri Feb 21 10:52:50 2014
@@ -0,0 +1,61 @@
+/*	$NetBSD: atomic_nand_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include sys/atomic.h
+
+uint32_t fetch_and_nand_4(volatile uint32_t *, uint32_t, ...)
+asm(__sync_fetch_and_nand_4);
+uint32_t nand_and_fetch_4(volatile uint32_t *, uint32_t, ...)
+asm(__sync_nand_and_fetch_4);
+

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

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

Modified Files:
src/common/lib/libc/atomic: atomic_swap_64_cas.c

Log Message:
Fix previous: move the alias declaration outside of a #ifdef _LP64


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/atomic/atomic_swap_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_swap_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.6 src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.7
--- src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.6	Fri Feb 21 10:27:34 2014
+++ src/common/lib/libc/atomic/atomic_swap_64_cas.c	Fri Feb 21 14:42:09 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_swap_64_cas.c,v 1.6 2014/02/21 10:27:34 martin Exp $	*/
+/*	$NetBSD: atomic_swap_64_cas.c,v 1.7 2014/02/21 14:42:09 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -49,11 +49,11 @@ atomic_swap_64(volatile uint64_t *addr, 
 
 #undef atomic_swap_64
 atomic_op_alias(atomic_swap_64,_atomic_swap_64)
+__strong_alias(__sync_lock_test_and_set_8,_atomic_swap_64)
 #if defined(_LP64)
 #undef atomic_swap_ulong
 atomic_op_alias(atomic_swap_ulong,_atomic_swap_64)
 __strong_alias(_atomic_swap_ulong,_atomic_swap_64)
-__strong_alias(__sync_lock_test_and_set_8,_atomic_swap_64)
 #undef atomic_swap_ptr
 atomic_op_alias(atomic_swap_ptr,_atomic_swap_64)
 __strong_alias(_atomic_swap_ptr,_atomic_swap_64)



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_op_namespace.h
Added Files:
src/common/lib/libc/atomic: atomic_add_16_cas.c atomic_add_8_cas.c
atomic_and_16_cas.c atomic_and_8_cas.c atomic_cas_16_cas.c
atomic_cas_8_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c
atomic_or_16_cas.c atomic_or_8_cas.c atomic_sub_16_cas.c
atomic_sub_8_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c
atomic_xor_16_cas.c atomic_xor_8_cas.c

Log Message:
Provide 8 and 16 bit sync ops (using 16 bit and 8 bit cas)


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.2 src/common/lib/libc/atomic/atomic_add_16_cas.c \
src/common/lib/libc/atomic/atomic_add_8_cas.c \
src/common/lib/libc/atomic/atomic_and_16_cas.c \
src/common/lib/libc/atomic/atomic_and_8_cas.c \
src/common/lib/libc/atomic/atomic_cas_16_cas.c \
src/common/lib/libc/atomic/atomic_cas_8_cas.c \
src/common/lib/libc/atomic/atomic_or_16_cas.c \
src/common/lib/libc/atomic/atomic_or_8_cas.c \
src/common/lib/libc/atomic/atomic_swap_16_cas.c \
src/common/lib/libc/atomic/atomic_swap_8_cas.c
cvs rdiff -u -r0 -r1.1 src/common/lib/libc/atomic/atomic_nand_16_cas.c \
src/common/lib/libc/atomic/atomic_nand_8_cas.c \
src/common/lib/libc/atomic/atomic_sub_16_cas.c \
src/common/lib/libc/atomic/atomic_sub_8_cas.c \
src/common/lib/libc/atomic/atomic_xor_16_cas.c \
src/common/lib/libc/atomic/atomic_xor_8_cas.c
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/atomic_op_namespace.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/atomic/atomic_op_namespace.h
diff -u src/common/lib/libc/atomic/atomic_op_namespace.h:1.4 src/common/lib/libc/atomic/atomic_op_namespace.h:1.5
--- src/common/lib/libc/atomic/atomic_op_namespace.h:1.4	Mon Jun 23 10:33:52 2008
+++ src/common/lib/libc/atomic/atomic_op_namespace.h	Fri Feb 21 15:51:07 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_op_namespace.h,v 1.4 2008/06/23 10:33:52 ad Exp $	*/
+/*	$NetBSD: atomic_op_namespace.h,v 1.5 2014/02/21 15:51:07 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -73,6 +73,8 @@
 #define	atomic_cas_ulong	_atomic_cas_ulong
 #define	atomic_cas_ptr		_atomic_cas_ptr
 #define	atomic_cas_64		_atomic_cas_64
+#define atomic_cas_16		_atomic_cas_16
+#define atomic_cas_8		_atomic_cas_8
 
 #define	atomic_cas_32_ni	_atomic_cas_32_ni
 #define	atomic_cas_uint_ni	_atomic_cas_uint_ni

Added files:

Index: src/common/lib/libc/atomic/atomic_add_16_cas.c
diff -u /dev/null src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2
--- /dev/null	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_add_16_cas.c	Fri Feb 21 15:51:07 2014
@@ -0,0 +1,63 @@
+/*	$NetBSD: atomic_add_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2007 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * 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 atomic_op_namespace.h
+
+#include sys/atomic.h
+
+uint16_t fetch_and_add_2(volatile uint16_t *, uint16_t, ...)
+asm(__sync_fetch_and_add_2);
+uint16_t add_and_fetch_2(volatile uint16_t *, uint16_t, ...)
+asm(__sync_add_and_fetch_2);
+
+uint16_t
+fetch_and_add_2(volatile uint16_t *addr, uint16_t val, ...)
+{
+	uint16_t old, new;
+
+	do {
+		old = *addr;
+		new = old + val;
+	} while (atomic_cas_16(addr, old, new) != old);
+	return old;
+}
+
+uint16_t

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

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

Modified Files:
src/common/lib/libc/atomic: atomic_cas_16_cas.c atomic_cas_8_cas.c
atomic_nand_16_cas.c atomic_nand_8_cas.c atomic_sub_16_cas.c
atomic_sub_8_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c

Log Message:
Add a few missing namespace includes


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/atomic/atomic_cas_16_cas.c \
src/common/lib/libc/atomic/atomic_cas_8_cas.c
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/atomic/atomic_nand_16_cas.c \
src/common/lib/libc/atomic/atomic_nand_8_cas.c \
src/common/lib/libc/atomic/atomic_sub_16_cas.c \
src/common/lib/libc/atomic/atomic_sub_8_cas.c \
src/common/lib/libc/atomic/atomic_xor_16_cas.c \
src/common/lib/libc/atomic/atomic_xor_8_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_cas_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_cas_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_cas_16_cas.c:1.3
--- src/common/lib/libc/atomic/atomic_cas_16_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_cas_16_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_cas_16_cas.c,v 1.3 2014/02/21 16:06:48 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include atomic_op_namespace.h
+
 #if !defined(_KERNEL)  !defined(_STANDALONE)
 #include stdbool.h
 #endif
Index: src/common/lib/libc/atomic/atomic_cas_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_cas_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_cas_8_cas.c:1.3
--- src/common/lib/libc/atomic/atomic_cas_8_cas.c:1.2	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_cas_8_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_cas_8_cas.c,v 1.3 2014/02/21 16:06:48 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include atomic_op_namespace.h
+
 #if !defined(_KERNEL)  !defined(_STANDALONE)
 #include stdbool.h
 #endif

Index: src/common/lib/libc/atomic/atomic_nand_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.1 src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_nand_16_cas.c:1.1	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_nand_16_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_16_cas.c,v 1.1 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_nand_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include atomic_op_namespace.h
+
 #include sys/atomic.h
 
 uint16_t fetch_and_nand_2(volatile uint16_t *, uint16_t, ...)
Index: src/common/lib/libc/atomic/atomic_nand_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.1 src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_nand_8_cas.c:1.1	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_nand_8_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_8_cas.c,v 1.1 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_nand_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include atomic_op_namespace.h
+
 #include sys/atomic.h
 
 uint8_t fetch_and_nand_1(volatile uint8_t *, uint8_t, ...)
Index: src/common/lib/libc/atomic/atomic_sub_16_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.1 src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.1	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_sub_16_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_16_cas.c,v 1.1 2014/02/21 15:51:07 martin Exp $	*/
+/*	$NetBSD: atomic_sub_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include atomic_op_namespace.h
+
 #include sys/atomic.h
 
 uint16_t fetch_and_sub_2(volatile uint16_t *, uint16_t, ...)
Index: src/common/lib/libc/atomic/atomic_sub_8_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.1 src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.1	Fri Feb 21 15:51:07 2014
+++ src/common/lib/libc/atomic/atomic_sub_8_cas.c	Fri Feb 21 16:06:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_8_cas.c,v 1.1 2014/02/21 15:51:07 martin Exp $	*/
+/*	

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

2014-02-18 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Feb 18 12:23:07 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_cas_64_cas.c

Log Message:
Do not include stdbool.h in the kernel


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

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_cas_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_cas_64_cas.c:1.1 src/common/lib/libc/atomic/atomic_cas_64_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_cas_64_cas.c:1.1	Tue Feb 18 10:16:55 2014
+++ src/common/lib/libc/atomic/atomic_cas_64_cas.c	Tue Feb 18 12:23:07 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_cas_64_cas.c,v 1.1 2014/02/18 10:16:55 martin Exp $	*/
+/*	$NetBSD: atomic_cas_64_cas.c,v 1.2 2014/02/18 12:23:07 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,7 +29,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#if !defined(_KERNEL)  !defined(_STANDALONE)
 #include stdbool.h
+#endif
 #include sys/atomic.h
 
 #ifdef __HAVE_ATOMIC64_OPS



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

2014-02-18 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Feb 18 13:21:04 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_nand_64_cas.c atomic_sub_64_cas.c
atomic_xor_64_cas.c

Log Message:
Make the _and_fetch_8 primitives return the new value they calculated
and set - not whatever is found in memory later.


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

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_nand_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_nand_64_cas.c:1.1 src/common/lib/libc/atomic/atomic_nand_64_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_nand_64_cas.c:1.1	Tue Feb 18 10:16:55 2014
+++ src/common/lib/libc/atomic/atomic_nand_64_cas.c	Tue Feb 18 13:21:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_nand_64_cas.c,v 1.1 2014/02/18 10:16:55 martin Exp $	*/
+/*	$NetBSD: atomic_nand_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@ nand_and_fetch_8(volatile uint64_t *addr
 		old = *addr;
 		new = ~(old  val);
 	} while (atomic_cas_64(addr, old, new) != old);
-	return *addr;
+	return new;
 }
 
 #endif
Index: src/common/lib/libc/atomic/atomic_sub_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.1 src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.1	Tue Feb 18 10:16:55 2014
+++ src/common/lib/libc/atomic/atomic_sub_64_cas.c	Tue Feb 18 13:21:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_sub_64_cas.c,v 1.1 2014/02/18 10:16:55 martin Exp $	*/
+/*	$NetBSD: atomic_sub_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@ sub_and_fetch_8(volatile uint64_t *addr,
 		old = *addr;
 		new = old - val;
 	} while (atomic_cas_64(addr, old, new) != old);
-	return *addr;
+	return new;
 }
 
 #endif
Index: src/common/lib/libc/atomic/atomic_xor_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.1 src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2
--- src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.1	Tue Feb 18 10:16:55 2014
+++ src/common/lib/libc/atomic/atomic_xor_64_cas.c	Tue Feb 18 13:21:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_xor_64_cas.c,v 1.1 2014/02/18 10:16:55 martin Exp $	*/
+/*	$NetBSD: atomic_xor_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@ xor_and_fetch_8(volatile uint64_t *addr,
 		old = *addr;
 		new = old ^ val;
 	} while (atomic_cas_64(addr, old, new) != old);
-	return *addr;
+	return new;
 }
 
 #endif



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

2014-01-29 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jan 29 14:44:32 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
Fix copypasto


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.10 src/common/lib/libc/atomic/atomic_init_testset.c:1.11
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.10	Mon Jan 27 18:03:44 2014
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Wed Jan 29 14:44:32 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.10 2014/01/27 18:03:44 matt Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.11 2014/01/29 14:44:32 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.10 2014/01/27 18:03:44 matt Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.11 2014/01/29 14:44:32 martin Exp $);
 
 #include atomic_op_namespace.h
 
@@ -119,9 +119,9 @@ _atomic_cas_up_16(volatile uint16_t *ptr
 }
 #endif
 
-#ifndef	__HAVE_ASM_ATOMIC_CAS_UP
+#ifndef	__HAVE_ASM_ATOMIC_CAS_8_UP
 static uint8_t
-_atomic_cas_up(volatile uint8_t *ptr, uint8_t old, uint8_t new)
+_atomic_cas_8_up(volatile uint8_t *ptr, uint8_t old, uint8_t new)
 {
 	uint8_t ret;
 



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

2014-01-29 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jan 29 14:49:35 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
Fix a few more copypastos - now it actually builds.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.11 src/common/lib/libc/atomic/atomic_init_testset.c:1.12
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.11	Wed Jan 29 14:44:32 2014
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Wed Jan 29 14:49:35 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.11 2014/01/29 14:44:32 martin Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.12 2014/01/29 14:49:35 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.11 2014/01/29 14:44:32 martin Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.12 2014/01/29 14:49:35 martin Exp $);
 
 #include atomic_op_namespace.h
 
@@ -103,7 +103,7 @@ _atomic_cas_up(volatile uint32_t *ptr, u
 
 #ifndef	__HAVE_ASM_ATOMIC_CAS_16_UP
 static uint16_t
-_atomic_cas_up_16(volatile uint16_t *ptr, uint16_t old, uint16_t new)
+_atomic_cas_16_up(volatile uint16_t *ptr, uint16_t old, uint16_t new)
 {
 	uint16_t ret;
 
@@ -131,7 +131,7 @@ _atomic_cas_8_up(volatile uint8_t *ptr, 
 		return ret;
 	}
 	*ptr = new;
-	RAS_END(_atomic_cas_16);
+	RAS_END(_atomic_cas_8);
 
 	return ret;
 }



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

2014-01-29 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Wed Jan 29 15:59:12 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_add_32_cas.c atomic_and_32_cas.c
atomic_or_32_cas.c

Log Message:
Fix up the remaining __sync_* functions to build with Clang on ARM.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/atomic/atomic_add_32_cas.c
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_and_32_cas.c \
src/common/lib/libc/atomic/atomic_or_32_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_cas.c:1.6 src/common/lib/libc/atomic/atomic_add_32_cas.c:1.7
--- src/common/lib/libc/atomic/atomic_add_32_cas.c:1.6	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_add_32_cas.c	Wed Jan 29 15:59:11 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_add_32_cas.c,v 1.7 2014/01/29 15:59:11 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,10 +33,11 @@
 
 #include sys/atomic.h
 
-uint32_t __sync_fetch_and_add_4(volatile uint32_t *, int32_t);
+uint32_t fetch_and_add_4(volatile uint32_t *, uint32_t, ...)
+asm(__sync_fetch_and_add_4);
 
 uint32_t
-__sync_fetch_and_add_4(volatile uint32_t *addr, int32_t val)
+fetch_and_add_4(volatile uint32_t *addr, uint32_t val, ...)
 {
 	uint32_t old, new;
 
@@ -50,7 +51,7 @@ __sync_fetch_and_add_4(volatile uint32_t
 void
 atomic_add_32(volatile uint32_t *addr, int32_t val)
 {
-	(void) __sync_fetch_and_add_4(addr, val);
+	(void) fetch_and_add_4(addr, val);
 }
 
 #undef atomic_add_32

Index: src/common/lib/libc/atomic/atomic_and_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.7 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.8
--- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.7	Mon Jan 27 18:36:52 2014
+++ src/common/lib/libc/atomic/atomic_and_32_cas.c	Wed Jan 29 15:59:11 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_cas.c,v 1.7 2014/01/27 18:36:52 matt Exp $	*/
+/*	$NetBSD: atomic_and_32_cas.c,v 1.8 2014/01/29 15:59:11 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,10 +33,11 @@
 
 #include sys/atomic.h
 
-uint32_t __sync_fetch_and_and_4(volatile uint32_t *, uint32_t);
+uint32_t fetch_and_and_4(volatile uint32_t *, uint32_t, ...)
+asm(__sync_fetch_and_and_4);
 
 uint32_t
-__sync_fetch_and_and_4(volatile uint32_t *addr, uint32_t val)
+fetch_and_and_4(volatile uint32_t *addr, uint32_t val, ...)
 {
 	uint32_t old, new;
 
@@ -50,7 +51,7 @@ __sync_fetch_and_and_4(volatile uint32_t
 void
 atomic_and_32(volatile uint32_t *addr, uint32_t val)
 {
-	(void) __sync_fetch_and_and_4(addr, val);
+	(void) fetch_and_and_4(addr, val);
 }
 
 #undef atomic_and_32
Index: src/common/lib/libc/atomic/atomic_or_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.7 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.8
--- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.7	Mon Jan 27 18:36:52 2014
+++ src/common/lib/libc/atomic/atomic_or_32_cas.c	Wed Jan 29 15:59:11 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_cas.c,v 1.7 2014/01/27 18:36:52 matt Exp $	*/
+/*	$NetBSD: atomic_or_32_cas.c,v 1.8 2014/01/29 15:59:11 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,10 +33,11 @@
 
 #include sys/atomic.h
 
-uint32_t __sync_fetch_and_or_4(volatile uint32_t *, uint32_t);
+uint32_t fetch_and_or_4(volatile uint32_t *, uint32_t, ...)
+asm(__sync_fetch_and_or_4);
 
 uint32_t
-__sync_fetch_and_or_4(volatile uint32_t *addr, uint32_t val)
+fetch_and_or_4(volatile uint32_t *addr, uint32_t val, ...)
 {
 	uint32_t old, new;
 
@@ -50,7 +51,7 @@ __sync_fetch_and_or_4(volatile uint32_t 
 void
 atomic_or_32(volatile uint32_t *addr, uint32_t val)
 {
-	(void) __sync_fetch_and_or_4(addr, val);
+	(void) fetch_and_or_4(addr, val);
 }
 
 #undef atomic_or_32



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

2014-01-28 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Tue Jan 28 21:47:48 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_add_64_cas.c atomic_and_64_cas.c
atomic_or_64_cas.c

Log Message:
Allow building with clang.
XXX __RENAME is currently not allowed for the kernel, so use plain asm.
Clang rejects definitions of builtins, so it doesn't work without.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_add_64_cas.c
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/atomic/atomic_and_64_cas.c \
src/common/lib/libc/atomic/atomic_or_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.7 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8
--- src/common/lib/libc/atomic/atomic_add_64_cas.c:1.7	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_add_64_cas.c	Tue Jan 28 21:47:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64_cas.c,v 1.7 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_add_64_cas.c,v 1.8 2014/01/28 21:47:48 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -35,10 +35,11 @@
 
 #ifdef __HAVE_ATOMIC64_OPS
 
-uint64_t __sync_fetch_and_add_8(volatile uint64_t *, int64_t);
+uint64_t fetch_and_add_8(volatile uint64_t *, uint64_t, ...)
+asm(__sync_fetch_and_add_8);
 
 uint64_t
-__sync_fetch_and_add_8(volatile uint64_t *addr, int64_t val)
+fetch_and_add_8(volatile uint64_t *addr, uint64_t val, ...)
 {
 	uint64_t old, new;
 
@@ -52,7 +53,7 @@ __sync_fetch_and_add_8(volatile uint64_t
 void
 atomic_add_64(volatile uint64_t *addr, int64_t val)
 {
-   (void) __sync_fetch_and_add_8(addr, val);
+   (void) fetch_and_add_8(addr, val);
 }
 
 #undef atomic_add_64

Index: src/common/lib/libc/atomic/atomic_and_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9
--- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.8	Mon Jan 27 20:01:50 2014
+++ src/common/lib/libc/atomic/atomic_and_64_cas.c	Tue Jan 28 21:47:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64_cas.c,v 1.8 2014/01/27 20:01:50 matt Exp $	*/
+/*	$NetBSD: atomic_and_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -35,10 +35,11 @@
 
 #ifdef __HAVE_ATOMIC64_OPS
 
-uint64_t __sync_fetch_and_and_8(volatile uint64_t *, uint64_t);
+uint64_t fetch_and_and_8(volatile uint64_t *, uint64_t, ...)
+asm(__sync_fetch_and_and_8);
 
 uint64_t
-__sync_fetch_and_and_8(volatile uint64_t *addr, uint64_t val)
+fetch_and_and_8(volatile uint64_t *addr, uint64_t val, ...)
 {
 	uint64_t old, new;
 
@@ -52,7 +53,7 @@ __sync_fetch_and_and_8(volatile uint64_t
 void
 atomic_and_64(volatile uint64_t *addr, uint64_t val)
 {
-	(void) __sync_fetch_and_and_8(addr, val);
+	(void) fetch_and_and_8(addr, val);
 }
 
 #undef atomic_and_64
Index: src/common/lib/libc/atomic/atomic_or_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9
--- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.8	Mon Jan 27 20:44:29 2014
+++ src/common/lib/libc/atomic/atomic_or_64_cas.c	Tue Jan 28 21:47:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64_cas.c,v 1.8 2014/01/27 20:44:29 matt Exp $	*/
+/*	$NetBSD: atomic_or_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -35,10 +35,11 @@
 
 #ifdef __HAVE_ATOMIC64_OPS
 
-uint64_t __sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val);
+uint64_t fetch_and_or_8(volatile uint64_t *addr, uint64_t val, ...)
+asm(__sync_fetch_and_or_8);
 
 uint64_t
-__sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val)
+fetch_and_or_8(volatile uint64_t *addr, uint64_t val, ...)
 {
 	uint64_t old, new;
 
@@ -52,7 +53,7 @@ __sync_fetch_and_or_8(volatile uint64_t 
 void
 atomic_or_64(volatile uint64_t *addr, uint64_t val)
 {
-	(void) __sync_fetch_and_or_8(addr, val);
+	(void) fetch_and_or_8(addr, val);
 }
 
 #undef atomic_or_64



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
Add _atomic_cas_16 and _atomic_cas_8 and their aliases
__sync_val_compare_and_swap_2  __sync_val_compare_and_swap_1


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.9 src/common/lib/libc/atomic/atomic_init_testset.c:1.10
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.9	Wed Aug 21 03:00:56 2013
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Mon Jan 27 18:03:44 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.9 2013/08/21 03:00:56 matt Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.10 2014/01/27 18:03:44 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.9 2013/08/21 03:00:56 matt Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.10 2014/01/27 18:03:44 matt Exp $);
 
 #include atomic_op_namespace.h
 
@@ -59,13 +59,29 @@ extern uint32_t _atomic_cas_up(volatile 
 #else
 static uint32_t _atomic_cas_up(volatile uint32_t *, uint32_t, uint32_t);
 #endif
-
 static uint32_t (*_atomic_cas_fn)(volatile uint32_t *, uint32_t, uint32_t) =
 _atomic_cas_up;
+RAS_DECL(_atomic_cas);
 
-void	__libc_atomic_init(void) __attribute__ ((visibility(hidden)));
+#ifdef	__HAVE_ASM_ATOMIC_CAS_16_UP
+extern uint16_t _atomic_cas_16_up(volatile uint16_t *, uint16_t, uint16_t);
+#else
+static uint16_t _atomic_cas_16_up(volatile uint16_t *, uint16_t, uint16_t);
+#endif
+static uint16_t (*_atomic_cas_16_fn)(volatile uint16_t *, uint16_t, uint16_t) =
+_atomic_cas_16_up;
+RAS_DECL(_atomic_cas_16);
 
-RAS_DECL(_atomic_cas);
+#ifdef	__HAVE_ASM_ATOMIC_CAS_8_UP
+extern uint8_t _atomic_cas_8_up(volatile uint8_t *, uint8_t, uint8_t);
+#else
+static uint8_t _atomic_cas_8_up(volatile uint8_t *, uint8_t, uint8_t);
+#endif
+static uint8_t (*_atomic_cas_8_fn)(volatile uint8_t *, uint8_t, uint8_t) =
+_atomic_cas_8_up;
+RAS_DECL(_atomic_cas_8);
+
+void	__libc_atomic_init(void) __attribute__ ((visibility(hidden)));
 
 #ifndef	__HAVE_ASM_ATOMIC_CAS_UP
 static uint32_t
@@ -85,6 +101,42 @@ _atomic_cas_up(volatile uint32_t *ptr, u
 }
 #endif
 
+#ifndef	__HAVE_ASM_ATOMIC_CAS_16_UP
+static uint16_t
+_atomic_cas_up_16(volatile uint16_t *ptr, uint16_t old, uint16_t new)
+{
+	uint16_t ret;
+
+	RAS_START(_atomic_cas_16);
+	ret = *ptr;
+	if (__predict_false(ret != old)) {
+		return ret;
+	}
+	*ptr = new;
+	RAS_END(_atomic_cas_16);
+
+	return ret;
+}
+#endif
+
+#ifndef	__HAVE_ASM_ATOMIC_CAS_UP
+static uint8_t
+_atomic_cas_up(volatile uint8_t *ptr, uint8_t old, uint8_t new)
+{
+	uint8_t ret;
+
+	RAS_START(_atomic_cas_8);
+	ret = *ptr;
+	if (__predict_false(ret != old)) {
+		return ret;
+	}
+	*ptr = new;
+	RAS_END(_atomic_cas_16);
+
+	return ret;
+}
+#endif
+
 static uint32_t
 _atomic_cas_mp(volatile uint32_t *ptr, uint32_t old, uint32_t new)
 {
@@ -109,6 +161,24 @@ _atomic_cas_32(volatile uint32_t *ptr, u
 	return (*_atomic_cas_fn)(ptr, old, new);
 }
 
+uint16_t _atomic_cas_16(volatile uint16_t *, uint16_t, uint16_t);
+
+uint16_t
+_atomic_cas_16(volatile uint16_t *ptr, uint16_t old, uint16_t new)
+{
+
+	return (*_atomic_cas_16_fn)(ptr, old, new);
+}
+
+uint8_t _atomic_cas_8(volatile uint8_t *, uint8_t, uint8_t);
+
+uint8_t
+_atomic_cas_8(volatile uint8_t *ptr, uint8_t old, uint8_t new)
+{
+
+	return (*_atomic_cas_8_fn)(ptr, old, new);
+}
+
 void __section(.text.startup)
 __libc_atomic_init(void)
 {
@@ -129,6 +199,18 @@ __libc_atomic_init(void)
 		_atomic_cas_fn = _atomic_cas_up;
 		return;
 	}
+
+	if (rasctl(RAS_ADDR(_atomic_cas_16), RAS_SIZE(_atomic_cas_16),
+	RAS_INSTALL) == 0) {
+		_atomic_cas_16_fn = _atomic_cas_16_up;
+		return;
+	}
+
+	if (rasctl(RAS_ADDR(_atomic_cas_8), RAS_SIZE(_atomic_cas_8),
+	RAS_INSTALL) == 0) {
+		_atomic_cas_8_fn = _atomic_cas_8_up;
+		return;
+	}
 }
 
 #undef atomic_cas_32
@@ -156,3 +238,7 @@ atomic_op_alias(atomic_cas_ulong_ni,_ato
 __strong_alias(_atomic_cas_ulong_ni,_atomic_cas_32)
 atomic_op_alias(atomic_cas_ptr_ni,_atomic_cas_32)
 __strong_alias(_atomic_cas_ptr_ni,_atomic_cas_32)
+
+__strong_alias(__sync_val_compare_and_swap_4,_atomic_cas_32)
+__strong_alias(__sync_val_compare_and_swap_2,_atomic_cas_16)
+__strong_alias(__sync_val_compare_and_swap_1,_atomic_cas_8)



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_add_64_cas.c

Log Message:
Add __sync_fetch_and_add_8 alias


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_add_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.5 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_add_64_cas.c:1.5	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_add_64_cas.c	Mon Jan 27 18:09:51 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64_cas.c,v 1.5 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_add_64_cas.c,v 1.6 2014/01/27 18:09:51 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,7 @@ atomic_add_64(volatile uint64_t *addr, i
 
 #undef atomic_add_64
 atomic_op_alias(atomic_add_64,_atomic_add_64)
+__strong_alias(__sync_fetch_and_add_8,_atomic_add_64)
 
 #if defined(_LP64)
 #undef atomic_add_long



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_add_32_cas.c

Log Message:
Add __sync_fetch_and_add_4 alias


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/atomic_add_32_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_cas.c:1.4 src/common/lib/libc/atomic/atomic_add_32_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_add_32_cas.c:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_add_32_cas.c	Mon Jan 27 18:08:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_cas.c,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_add_32_cas.c,v 1.5 2014/01/27 18:08:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -50,6 +50,7 @@ atomic_op_alias(atomic_add_32,_atomic_ad
 #undef atomic_add_int
 atomic_op_alias(atomic_add_int,_atomic_add_32)
 __strong_alias(_atomic_add_int,_atomic_add_32)
+__strong_alias(__sync_fetch_and_add_4,_atomic_add_32)
 
 #if !defined(_LP64)
 #undef atomic_add_long



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_and_32_cas.c atomic_and_64_cas.c
atomic_or_32_cas.c atomic_or_64_cas.c

Log Message:
Add __sync_fetch_and_OP_N aliases


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/atomic_and_32_cas.c \
src/common/lib/libc/atomic/atomic_or_32_cas.c
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_and_64_cas.c \
src/common/lib/libc/atomic/atomic_or_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_and_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.4 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_and_32_cas.c	Mon Jan 27 18:12:57 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_cas.c,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_and_32_cas.c,v 1.5 2014/01/27 18:12:57 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -46,6 +46,8 @@ atomic_and_32(volatile uint32_t *addr, u
 
 #undef atomic_and_32
 atomic_op_alias(atomic_and_32,_atomic_and_32)
+__strong_alias(__sync_fetch_and_and_4,_atomic_and_32)
+
 #undef atomic_and_uint
 atomic_op_alias(atomic_and_uint,_atomic_and_32)
 __strong_alias(_atomic_and_uint,_atomic_and_32)
Index: src/common/lib/libc/atomic/atomic_or_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.4 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.4	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_or_32_cas.c	Mon Jan 27 18:12:57 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_cas.c,v 1.4 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_or_32_cas.c,v 1.5 2014/01/27 18:12:57 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -46,6 +46,8 @@ atomic_or_32(volatile uint32_t *addr, ui
 
 #undef atomic_or_32
 atomic_op_alias(atomic_or_32,_atomic_or_32)
+__strong_alias(__sync_fetch_and_or_4,_atomic_or_32)
+
 #undef atomic_or_uint
 atomic_op_alias(atomic_or_uint,_atomic_or_32)
 __strong_alias(_atomic_or_uint,_atomic_or_32)

Index: src/common/lib/libc/atomic/atomic_and_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.5 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.5	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_and_64_cas.c	Mon Jan 27 18:12:57 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64_cas.c,v 1.5 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_and_64_cas.c,v 1.6 2014/01/27 18:12:57 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,8 @@ atomic_and_64(volatile uint64_t *addr, u
 
 #undef atomic_and_64
 atomic_op_alias(atomic_and_64,_atomic_and_64)
+__strong_alias(__sync_fetch_and_and_8,_atomic_and_64)
+
 #if defined(_LP64)
 #undef atomic_and_ulong
 atomic_op_alias(atomic_and_ulong,_atomic_and_64)
Index: src/common/lib/libc/atomic/atomic_or_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.5 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.5	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_or_64_cas.c	Mon Jan 27 18:12:57 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64_cas.c,v 1.5 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_or_64_cas.c,v 1.6 2014/01/27 18:12:57 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,8 @@ atomic_or_64(volatile uint64_t *addr, ui
 
 #undef atomic_or_64
 atomic_op_alias(atomic_or_64,_atomic_or_64)
+__strong_alias(__sync_fetch_and_or_8,_atomic_or_64)
+
 #if defined(_LP64)
 #undef atomic_or_ulong
 atomic_op_alias(atomic_or_ulong,_atomic_or_64)



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_add_32_cas.c atomic_add_64_cas.c
atomic_and_32_cas.c atomic_and_64_cas.c atomic_or_32_cas.c
atomic_or_64_cas.c

Log Message:
Rework so that __sync_fetch_and_OP_N actually returns a value.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_add_32_cas.c \
src/common/lib/libc/atomic/atomic_and_32_cas.c \
src/common/lib/libc/atomic/atomic_or_32_cas.c
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/atomic/atomic_add_64_cas.c \
src/common/lib/libc/atomic/atomic_and_64_cas.c \
src/common/lib/libc/atomic/atomic_or_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_cas.c:1.5 src/common/lib/libc/atomic/atomic_add_32_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_add_32_cas.c:1.5	Mon Jan 27 18:08:37 2014
+++ src/common/lib/libc/atomic/atomic_add_32_cas.c	Mon Jan 27 18:29:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_cas.c,v 1.5 2014/01/27 18:08:37 matt Exp $	*/
+/*	$NetBSD: atomic_add_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,8 +33,10 @@
 
 #include sys/atomic.h
 
-void
-atomic_add_32(volatile uint32_t *addr, int32_t val)
+uint32_t __sync_fetch_and_add_4(volatile uint32_t *, int32_t);
+
+uint32_t
+__sync_fetch_and_add_4(volatile uint32_t *addr, int32_t val)
 {
 	uint32_t old, new;
 
@@ -42,6 +44,13 @@ atomic_add_32(volatile uint32_t *addr, i
 		old = *addr;
 		new = old + val;
 	} while (atomic_cas_32(addr, old, new) != old);
+	return old;
+}
+
+void
+atomic_add_32(volatile uint32_t *addr, int32_t val)
+{
+	(void) __sync_fetch_and_add_4(addr, val);
 }
 
 #undef atomic_add_32
@@ -50,7 +59,6 @@ atomic_op_alias(atomic_add_32,_atomic_ad
 #undef atomic_add_int
 atomic_op_alias(atomic_add_int,_atomic_add_32)
 __strong_alias(_atomic_add_int,_atomic_add_32)
-__strong_alias(__sync_fetch_and_add_4,_atomic_add_32)
 
 #if !defined(_LP64)
 #undef atomic_add_long
Index: src/common/lib/libc/atomic/atomic_and_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.5 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.5	Mon Jan 27 18:12:57 2014
+++ src/common/lib/libc/atomic/atomic_and_32_cas.c	Mon Jan 27 18:29:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_cas.c,v 1.5 2014/01/27 18:12:57 matt Exp $	*/
+/*	$NetBSD: atomic_and_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,8 +33,10 @@
 
 #include sys/atomic.h
 
-void
-atomic_and_32(volatile uint32_t *addr, uint32_t val)
+uint32_t atomic_and_32(volatile uint32_t *, uint32_t);
+
+uint32_t
+__sync_fetch_and_and_4(volatile uint32_t *addr, uint32_t val)
 {
 	uint32_t old, new;
 
@@ -42,11 +44,17 @@ atomic_and_32(volatile uint32_t *addr, u
 		old = *addr;
 		new = old  val;
 	} while (atomic_cas_32(addr, old, new) != old);
+	return old;
+}
+
+void
+atomic_and_32(volatile uint32_t *addr, uint32_t val)
+{
+	(void) __sync_fetch_and_and_4(addr, val);
 }
 
 #undef atomic_and_32
 atomic_op_alias(atomic_and_32,_atomic_and_32)
-__strong_alias(__sync_fetch_and_and_4,_atomic_and_32)
 
 #undef atomic_and_uint
 atomic_op_alias(atomic_and_uint,_atomic_and_32)
Index: src/common/lib/libc/atomic/atomic_or_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.5 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.5	Mon Jan 27 18:12:57 2014
+++ src/common/lib/libc/atomic/atomic_or_32_cas.c	Mon Jan 27 18:29:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_cas.c,v 1.5 2014/01/27 18:12:57 matt Exp $	*/
+/*	$NetBSD: atomic_or_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,8 +33,10 @@
 
 #include sys/atomic.h
 
-void
-atomic_or_32(volatile uint32_t *addr, uint32_t val)
+uint32_t __sync_fetch_and_or_4(volatile uint32_t *, uint32_t);
+
+uint32_t
+__sync_fetch_and_or_4(volatile uint32_t *addr, uint32_t val)
 {
 	uint32_t old, new;
 
@@ -42,11 +44,17 @@ atomic_or_32(volatile uint32_t *addr, ui
 		old = *addr;
 		new = old | val;
 	} while (atomic_cas_32(addr, old, new) != old);
+	return old;
+}
+
+void
+atomic_or_32(volatile uint32_t *addr, uint32_t val)
+{
+	(void) __sync_val_compare_and_swap_4(addr, val);
 }
 
 #undef atomic_or_32
 atomic_op_alias(atomic_or_32,_atomic_or_32)
-__strong_alias(__sync_fetch_and_or_4,_atomic_or_32)
 
 #undef atomic_or_uint
 atomic_op_alias(atomic_or_uint,_atomic_or_32)

Index: src/common/lib/libc/atomic/atomic_add_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.6 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.7
--- 

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

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

Modified Files:
src/common/lib/libc/atomic: atomic_and_32_cas.c atomic_or_32_cas.c

Log Message:
fix tpyos.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/atomic/atomic_and_32_cas.c \
src/common/lib/libc/atomic/atomic_or_32_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_and_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.6 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.7
--- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.6	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_and_32_cas.c	Mon Jan 27 18:36:52 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_and_32_cas.c,v 1.7 2014/01/27 18:36:52 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 
 #include sys/atomic.h
 
-uint32_t atomic_and_32(volatile uint32_t *, uint32_t);
+uint32_t __sync_fetch_and_and_4(volatile uint32_t *, uint32_t);
 
 uint32_t
 __sync_fetch_and_and_4(volatile uint32_t *addr, uint32_t val)
Index: src/common/lib/libc/atomic/atomic_or_32_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.6 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.7
--- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.6	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_or_32_cas.c	Mon Jan 27 18:36:52 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_cas.c,v 1.6 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_or_32_cas.c,v 1.7 2014/01/27 18:36:52 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@ __sync_fetch_and_or_4(volatile uint32_t 
 void
 atomic_or_32(volatile uint32_t *addr, uint32_t val)
 {
-	(void) __sync_val_compare_and_swap_4(addr, val);
+	(void) __sync_fetch_and_or_4(addr, val);
 }
 
 #undef atomic_or_32



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

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

Modified Files:
src/common/lib/libc/atomic: atomic_add_32_nv_cas.c
atomic_add_64_nv_cas.c atomic_and_32_nv_cas.c
atomic_and_64_nv_cas.c atomic_or_32_nv_cas.c atomic_or_64_nv_cas.c

Log Message:
Add __sync_OP_and_fetch_N aliases


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/atomic_add_32_nv_cas.c \
src/common/lib/libc/atomic/atomic_and_32_nv_cas.c \
src/common/lib/libc/atomic/atomic_or_32_nv_cas.c
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_add_64_nv_cas.c \
src/common/lib/libc/atomic/atomic_and_64_nv_cas.c \
src/common/lib/libc/atomic/atomic_or_64_nv_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_add_32_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.4 src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_add_32_nv_cas.c:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_add_32_nv_cas.c	Mon Jan 27 18:36:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_32_nv_cas.c,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_add_32_nv_cas.c,v 1.5 2014/01/27 18:36:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,7 @@ atomic_add_32_nv(volatile uint32_t *addr
 
 #undef atomic_add_32_nv
 atomic_op_alias(atomic_add_32_nv,_atomic_add_32_nv)
+__strong_alias(__sync_add_and_fetch_4,_atomic_add_32_nv)
 
 #undef atomic_add_int_nv
 atomic_op_alias(atomic_add_int_nv,_atomic_add_32_nv)
Index: src/common/lib/libc/atomic/atomic_and_32_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.4 src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.4	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_and_32_nv_cas.c	Mon Jan 27 18:36:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_nv_cas.c,v 1.4 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_and_32_nv_cas.c,v 1.5 2014/01/27 18:36:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,8 @@ atomic_and_32_nv(volatile uint32_t *addr
 
 #undef atomic_and_32_nv
 atomic_op_alias(atomic_and_32_nv,_atomic_and_32_nv)
+__strong_alias(__sync_and_and_fetch_4,_atomic_add_32_nv)
+
 #undef atomic_and_uint_nv
 atomic_op_alias(atomic_and_uint_nv,_atomic_and_32_nv)
 __strong_alias(_atomic_and_uint_nv,_atomic_and_32_nv)
Index: src/common/lib/libc/atomic/atomic_or_32_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_32_nv_cas.c:1.4 src/common/lib/libc/atomic/atomic_or_32_nv_cas.c:1.5
--- src/common/lib/libc/atomic/atomic_or_32_nv_cas.c:1.4	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_or_32_nv_cas.c	Mon Jan 27 18:36:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_32_nv_cas.c,v 1.4 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_or_32_nv_cas.c,v 1.5 2014/01/27 18:36:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,8 @@ atomic_or_32_nv(volatile uint32_t *addr,
 
 #undef atomic_or_32_nv
 atomic_op_alias(atomic_or_32_nv,_atomic_or_32_nv)
+__strong_alias(__sync_or_and_fetch_4,_atomic_or_32_nv)
+
 #undef atomic_or_uint_nv
 atomic_op_alias(atomic_or_uint_nv,_atomic_or_32_nv)
 __strong_alias(_atomic_or_uint_nv,_atomic_or_32_nv)

Index: src/common/lib/libc/atomic/atomic_add_64_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_add_64_nv_cas.c:1.5 src/common/lib/libc/atomic/atomic_add_64_nv_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_add_64_nv_cas.c:1.5	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_add_64_nv_cas.c	Mon Jan 27 18:36:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_add_64_nv_cas.c,v 1.5 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_add_64_nv_cas.c,v 1.6 2014/01/27 18:36:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -50,6 +50,7 @@ atomic_add_64_nv(volatile uint64_t *addr
 
 #undef atomic_add_64_nv
 atomic_op_alias(atomic_add_64_nv,_atomic_add_64_nv)
+__strong_alias(__sync_add_and_fetch_8,_atomic_add_64_nv)
 
 #if defined(_LP64)
 #undef atomic_add_long_nv
Index: src/common/lib/libc/atomic/atomic_and_64_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_64_nv_cas.c:1.5 src/common/lib/libc/atomic/atomic_and_64_nv_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_and_64_nv_cas.c:1.5	Mon Apr 28 20:22:52 2008
+++ src/common/lib/libc/atomic/atomic_and_64_nv_cas.c	Mon Jan 27 18:36:37 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64_nv_cas.c,v 1.5 2008/04/28 20:22:52 martin Exp $	*/
+/*	$NetBSD: atomic_and_64_nv_cas.c,v 1.6 2014/01/27 18:36:37 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -50,6 +50,8 @@ atomic_and_64_nv(volatile uint64_t *addr
 
 #undef atomic_and_64_nv
 

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

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

Modified Files:
src/common/lib/libc/atomic: atomic_and_32_nv_cas.c

Log Message:
Fix tpyo (add-and)


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/atomic_and_32_nv_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_and_32_nv_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.5 src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.6
--- src/common/lib/libc/atomic/atomic_and_32_nv_cas.c:1.5	Mon Jan 27 18:36:37 2014
+++ src/common/lib/libc/atomic/atomic_and_32_nv_cas.c	Mon Jan 27 18:43:07 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_32_nv_cas.c,v 1.5 2014/01/27 18:36:37 matt Exp $	*/
+/*	$NetBSD: atomic_and_32_nv_cas.c,v 1.6 2014/01/27 18:43:07 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@ atomic_and_32_nv(volatile uint32_t *addr
 
 #undef atomic_and_32_nv
 atomic_op_alias(atomic_and_32_nv,_atomic_and_32_nv)
-__strong_alias(__sync_and_and_fetch_4,_atomic_add_32_nv)
+__strong_alias(__sync_and_and_fetch_4,_atomic_and_32_nv)
 
 #undef atomic_and_uint_nv
 atomic_op_alias(atomic_and_uint_nv,_atomic_and_32_nv)



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

2014-01-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 27 20:01:50 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_and_64_cas.c

Log Message:
Return old


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_and_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_and_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.7 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.8
--- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.7	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_and_64_cas.c	Mon Jan 27 20:01:50 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_and_64_cas.c,v 1.7 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_and_64_cas.c,v 1.8 2014/01/27 20:01:50 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -46,6 +46,7 @@ __sync_fetch_and_and_8(volatile uint64_t
 		old = *addr;
 		new = old  val;
 	} while (atomic_cas_64(addr, old, new) != old);
+	return old;
 }
 
 void



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

2014-01-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 27 20:44:29 UTC 2014

Modified Files:
src/common/lib/libc/atomic: atomic_or_64_cas.c

Log Message:
fix cp bug.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_or_64_cas.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_or_64_cas.c
diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.7 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.8
--- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.7	Mon Jan 27 18:29:47 2014
+++ src/common/lib/libc/atomic/atomic_or_64_cas.c	Mon Jan 27 20:44:29 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_or_64_cas.c,v 1.7 2014/01/27 18:29:47 matt Exp $	*/
+/*	$NetBSD: atomic_or_64_cas.c,v 1.8 2014/01/27 20:44:29 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 
 uint64_t __sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val);
 
-void
+uint64_t
 __sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val)
 {
 	uint64_t old, new;



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

2013-12-07 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Dec  7 13:09:55 UTC 2013

Modified Files:
src/common/lib/libc/atomic: membar_ops_nop.c

Log Message:
Add __sync_synchronize alias.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/atomic/membar_ops_nop.c

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

Modified files:

Index: src/common/lib/libc/atomic/membar_ops_nop.c
diff -u src/common/lib/libc/atomic/membar_ops_nop.c:1.5 src/common/lib/libc/atomic/membar_ops_nop.c:1.6
--- src/common/lib/libc/atomic/membar_ops_nop.c:1.5	Fri Aug 21 14:31:02 2009
+++ src/common/lib/libc/atomic/membar_ops_nop.c	Sat Dec  7 13:09:55 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops_nop.c,v 1.5 2009/08/21 14:31:02 skrll Exp $	*/
+/*	$NetBSD: membar_ops_nop.c,v 1.6 2013/12/07 13:09:55 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -54,3 +54,4 @@ atomic_op_alias(membar_consumer,_membar_
 __strong_alias(_membar_consumer,_membar_sync)
 #undef membar_sync
 atomic_op_alias(membar_sync,_membar_sync)
+atomic_op_alias(__sync_synchronize,_membar_sync)



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

2013-08-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Aug 21 03:00:56 UTC 2013

Modified Files:
src/common/lib/libc/atomic: atomic_init_cas.c atomic_init_testset.c

Log Message:
Use __section(.test.startup) for the init routines


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/atomic/atomic_init_cas.c
cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_cas.c
diff -u src/common/lib/libc/atomic/atomic_init_cas.c:1.3 src/common/lib/libc/atomic/atomic_init_cas.c:1.4
--- src/common/lib/libc/atomic/atomic_init_cas.c:1.3	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/atomic_init_cas.c	Wed Aug 21 03:00:56 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_cas.c,v 1.3 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: atomic_init_cas.c,v 1.4 2013/08/21 03:00:56 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -32,11 +32,11 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_cas.c,v 1.3 2008/04/28 20:22:53 martin Exp $);
+__RCSID($NetBSD: atomic_init_cas.c,v 1.4 2013/08/21 03:00:56 matt Exp $);
 
 void	__libc_atomic_init(void) __attribute__ ((visibility(hidden)));
 
-void
+void __section(.text.startup)
 __libc_atomic_init(void)
 {
 

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.8 src/common/lib/libc/atomic/atomic_init_testset.c:1.9
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.8	Tue Feb 28 20:41:19 2012
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Wed Aug 21 03:00:56 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.8 2012/02/28 20:41:19 joerg Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.9 2013/08/21 03:00:56 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.8 2012/02/28 20:41:19 joerg Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.9 2013/08/21 03:00:56 matt Exp $);
 
 #include atomic_op_namespace.h
 
@@ -109,7 +109,7 @@ _atomic_cas_32(volatile uint32_t *ptr, u
 	return (*_atomic_cas_fn)(ptr, old, new);
 }
 
-void
+void __section(.text.startup)
 __libc_atomic_init(void)
 {
 	int ncpu, mib[2];



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

2012-02-28 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Tue Feb 28 20:41:19 UTC 2012

Modified Files:
src/common/lib/libc/atomic: atomic_init_testset.c

Log Message:
Make sure to create the right aliases.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_init_testset.c

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

Modified files:

Index: src/common/lib/libc/atomic/atomic_init_testset.c
diff -u src/common/lib/libc/atomic/atomic_init_testset.c:1.7 src/common/lib/libc/atomic/atomic_init_testset.c:1.8
--- src/common/lib/libc/atomic/atomic_init_testset.c:1.7	Mon Dec 14 00:39:00 2009
+++ src/common/lib/libc/atomic/atomic_init_testset.c	Tue Feb 28 20:41:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic_init_testset.c,v 1.7 2009/12/14 00:39:00 matt Exp $	*/
+/*	$NetBSD: atomic_init_testset.c,v 1.8 2012/02/28 20:41:19 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include sys/cdefs.h
-__RCSID($NetBSD: atomic_init_testset.c,v 1.7 2009/12/14 00:39:00 matt Exp $);
+__RCSID($NetBSD: atomic_init_testset.c,v 1.8 2012/02/28 20:41:19 joerg Exp $);
 
 #include atomic_op_namespace.h
 
@@ -135,6 +135,10 @@ __libc_atomic_init(void)
 #undef atomic_cas_uint
 #undef atomic_cas_ulong
 #undef atomic_cas_ptr
+#undef atomic_cas_32_ni
+#undef atomic_cas_uint_ni
+#undef atomic_cas_ulong_ni
+#undef atomic_cas_ptr_ni
 
 atomic_op_alias(atomic_cas_32,_atomic_cas_32)
 atomic_op_alias(atomic_cas_uint,_atomic_cas_32)



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

2009-08-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Aug 21 14:31:03 UTC 2009

Modified Files:
src/common/lib/libc/atomic: membar_ops_nop.c

Log Message:
__strong_alias(foo,foo) is... pointless.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/atomic/membar_ops_nop.c

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

Modified files:

Index: src/common/lib/libc/atomic/membar_ops_nop.c
diff -u src/common/lib/libc/atomic/membar_ops_nop.c:1.4 src/common/lib/libc/atomic/membar_ops_nop.c:1.5
--- src/common/lib/libc/atomic/membar_ops_nop.c:1.4	Mon Apr 28 20:22:53 2008
+++ src/common/lib/libc/atomic/membar_ops_nop.c	Fri Aug 21 14:31:02 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: membar_ops_nop.c,v 1.4 2008/04/28 20:22:53 martin Exp $	*/
+/*	$NetBSD: membar_ops_nop.c,v 1.5 2009/08/21 14:31:02 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -54,4 +54,3 @@
 __strong_alias(_membar_consumer,_membar_sync)
 #undef membar_sync
 atomic_op_alias(membar_sync,_membar_sync)
-__strong_alias(_membar_sync,_membar_sync)