OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc4/] [libstdc++-v3/] [include/] [bits/] [atomicfwd_c.h] - Blame information for rev 519

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// -*- C++ -*- header.
2
 
3
// Copyright (C) 2008, 2009
4
// Free Software Foundation, Inc.
5
//
6
// This file is part of the GNU ISO C++ Library.  This library is free
7
// software; you can redistribute it and/or modify it under the
8
// terms of the GNU General Public License as published by the
9
// Free Software Foundation; either version 3, or (at your option)
10
// any later version.
11
 
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
// GNU General Public License for more details.
16
 
17
// Under Section 7 of GPL version 3, you are granted additional
18
// permissions described in the GCC Runtime Library Exception, version
19
// 3.1, as published by the Free Software Foundation.
20
 
21
// You should have received a copy of the GNU General Public License and
22
// a copy of the GCC Runtime Library Exception along with this program;
23
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24
// <http://www.gnu.org/licenses/>.
25
 
26
/** @file bits/atomicfwd_c.h
27
 *  This is an internal header file, included by other library headers.
28
 *  You should not attempt to use it directly.
29
 */
30
 
31
// "C" only bits.
32
 
33
#define _ATOMIC_MEMBER_ ((__a)->_M_i)
34
 
35
  // POD base classes for atomic intgral types.
36
  struct __atomic_bool_base
37
  {
38
    bool _M_i;
39
  };
40
 
41
  struct __atomic_char_base
42
  {
43
    char _M_i;
44
  };
45
 
46
  struct __atomic_schar_base
47
  {
48
    signed char _M_i;
49
  };
50
 
51
  struct __atomic_uchar_base
52
  {
53
    unsigned char _M_i;
54
  };
55
 
56
  struct __atomic_short_base
57
  {
58
    short _M_i;
59
  };
60
 
61
  struct __atomic_ushort_base
62
  {
63
    unsigned short _M_i;
64
  };
65
 
66
  struct __atomic_int_base
67
  {
68
    int _M_i;
69
  };
70
 
71
  struct __atomic_uint_base
72
  {
73
    unsigned int _M_i;
74
  };
75
 
76
  struct __atomic_long_base
77
  {
78
    long _M_i;
79
  };
80
 
81
  struct __atomic_ulong_base
82
  {
83
    unsigned long _M_i;
84
  };
85
 
86
  struct __atomic_llong_base
87
  {
88
    long long _M_i;
89
  };
90
 
91
  struct __atomic_ullong_base
92
  {
93
    unsigned long long  _M_i;
94
  };
95
 
96
  struct __atomic_wchar_t_base
97
  {
98
    wchar_t _M_i;
99
  };
100
 
101
  typedef struct __atomic_flag_base             atomic_flag;
102
  typedef struct __atomic_address_base          atomic_address;
103
  typedef struct __atomic_bool_base             atomic_bool;
104
  typedef struct __atomic_char_base             atomic_char;
105
  typedef struct __atomic_schar_base            atomic_schar;
106
  typedef struct __atomic_uchar_base            atomic_uchar;
107
  typedef struct __atomic_short_base            atomic_short;
108
  typedef struct __atomic_ushort_base           atomic_ushort;
109
  typedef struct __atomic_int_base              atomic_int;
110
  typedef struct __atomic_uint_base             atomic_uint;
111
  typedef struct __atomic_long_base             atomic_long;
112
  typedef struct __atomic_ulong_base            atomic_ulong;
113
  typedef struct __atomic_llong_base            atomic_llong;
114
  typedef struct __atomic_ullong_base           atomic_ullong;
115
  typedef struct __atomic_wchar_t_base          atomic_wchar_t;
116
  typedef struct __atomic_short_base            atomic_char16_t;
117
  typedef struct __atomic_int_base              atomic_char32_t;
118
 
119
#define atomic_is_lock_free(__a)                                        \
120
  false
121
 
122
#define atomic_load_explicit(__a, __x)                                  \
123
  _ATOMIC_LOAD_(__a, __x)
124
 
125
#define atomic_load(__a)                                                \
126
  atomic_load_explicit(__a, memory_order_seq_cst)
127
 
128
#define atomic_store_explicit(__a, __m, __x)                            \
129
  _ATOMIC_STORE_(__a, __m, __x)
130
 
131
#define atomic_store(__a, __m)                                          \
132
  atomic_store_explicit(__a, __m, memory_order_seq_cst)
133
 
134
#define atomic_exchange_explicit(__a, __m, __x)                         \
135
  _ATOMIC_MODIFY_(__a, =, __m, __x)
136
 
137
#define atomic_exchange(__a, __m)                                       \
138
  atomic_exchange_explicit(__a, __m, memory_order_seq_cst)
139
 
140
#define atomic_compare_exchange_explicit(__a, __e, __m, __x, __y)       \
141
  _ATOMIC_CMPEXCHNG_(__a, __e, __m, __x)
142
 
143
#define atomic_compare_exchange(__a, __e, __m)                          \
144
  _ATOMIC_CMPEXCHNG_(__a, __e, __m, memory_order_seq_cst)
145
 
146
#define atomic_fetch_add_explicit(__a, __m, __x)                        \
147
  _ATOMIC_MODIFY_(__a, +=, __m, __x)
148
 
149
#define atomic_fetch_add(__a, __m)                                      \
150
  atomic_fetch_add_explicit(__a, __m, memory_order_seq_cst)
151
 
152
#define atomic_fetch_sub_explicit(__a, __m, __x)                        \
153
  _ATOMIC_MODIFY_(__a, -=, __m, __x)
154
 
155
#define atomic_fetch_sub(__a, __m)                                      \
156
  atomic_fetch_sub_explicit(__a, __m, memory_order_seq_cst)
157
 
158
#define atomic_fetch_and_explicit(__a, __m, __x)                        \
159
  _ATOMIC_MODIFY_(__a, &=, __m, __x)
160
 
161
#define atomic_fetch_and(__a, __m)                                      \
162
  atomic_fetch_and_explicit(__a, __m, memory_order_seq_cst)
163
 
164
#define atomic_fetch_or_explicit(__a, __m, __x)                         \
165
  _ATOMIC_MODIFY_(__a, |=, __m, __x)
166
 
167
#define atomic_fetch_or(__a, __m)                                       \
168
  atomic_fetch_or_explicit(__a, __m, memory_order_seq_cst)
169
 
170
#define atomic_fetch_xor_explicit(__a, __m, __x)                        \
171
  _ATOMIC_MODIFY_(__a, ^=, __m, __x)
172
 
173
#define atomic_fetch_xor(__a, __m)                                      \
174
  atomic_fetch_xor_explicit(__a, __m, memory_order_seq_cst)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.