Annotation of src/common/lib/libc/atomic/atomic_store.c, Revision 1.2
1.2 ! joerg 1: /* $NetBSD: atomic_store.c,v 1.1 2014/07/05 20:44:46 joerg Exp $ */
1.1 joerg 2:
3: /*-
4: * Copyright (c) 2014 The NetBSD Foundation, Inc.
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26: * POSSIBILITY OF SUCH DAMAGE.
27: */
28:
29: #include <sys/cdefs.h>
1.2 ! joerg 30: __RCSID("$NetBSD: atomic_store.c,v 1.1 2014/07/05 20:44:46 joerg Exp $");
1.1 joerg 31:
32: #include "atomic_op_namespace.h"
33:
34: #include <sys/types.h>
35: #include <sys/atomic.h>
36:
37: #define atomic_store_n(n,b) \
1.2 ! joerg 38: void __atomic_store_ ## n(volatile uint ## b ## _t *, uint ## b ## _t, int); \
1.1 joerg 39: void \
1.2 ! joerg 40: __atomic_store_ ## n(volatile uint ## b ## _t *ptr, uint ## b ## _t val, \
! 41: int memmodel) \
1.1 joerg 42: { \
43: membar_enter(); \
44: *ptr = val; \
45: membar_exit(); \
46: }
47:
48: atomic_store_n(1, 8)
49: atomic_store_n(2, 16)
50: atomic_store_n(4, 32)
51: #ifdef __HAVE_ATOMIC_CAS_64_UP
52: atomic_store_n(8, 64)
53: #endif
CVSweb <webmaster@jp.NetBSD.org>