Fri, 16 Jan 2015 04:50:19 +0100
Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nspr_cpucfg___
7 #define nspr_cpucfg___
9 #ifndef XP_UNIX
10 #define XP_UNIX
11 #endif
13 #ifndef NETBSD
14 #define NETBSD
15 #endif
17 #define PR_AF_INET6 24 /* same as AF_INET6 */
19 #ifndef HAVE_LONG_LONG
20 #define HAVE_LONG_LONG
21 #endif
23 #if defined(__i386__) || defined(__arm32__) || defined(__ARMEL__) || \
24 defined(__MIPSEL__)
26 #define IS_LITTLE_ENDIAN 1
27 #undef IS_BIG_ENDIAN
28 #undef HAVE_ALIGNED_DOUBLES
29 #undef HAVE_ALIGNED_LONGLONGS
31 #define PR_BYTES_PER_BYTE 1
32 #define PR_BYTES_PER_SHORT 2
33 #define PR_BYTES_PER_INT 4
34 #define PR_BYTES_PER_INT64 8
35 #define PR_BYTES_PER_LONG 4
36 #define PR_BYTES_PER_FLOAT 4
37 #define PR_BYTES_PER_DOUBLE 8
38 #define PR_BYTES_PER_WORD 4
39 #define PR_BYTES_PER_DWORD 8
40 #define PR_BYTES_PER_WORD_LOG2 2
41 #define PR_BYTES_PER_DWORD_LOG2 3
43 #define PR_BITS_PER_BYTE 8
44 #define PR_BITS_PER_SHORT 16
45 #define PR_BITS_PER_INT 32
46 #define PR_BITS_PER_INT64 64
47 #define PR_BITS_PER_LONG 32
48 #define PR_BITS_PER_FLOAT 32
49 #define PR_BITS_PER_DOUBLE 64
50 #define PR_BITS_PER_WORD 32
52 #define PR_BITS_PER_BYTE_LOG2 3
53 #define PR_BITS_PER_SHORT_LOG2 4
54 #define PR_BITS_PER_INT_LOG2 5
55 #define PR_BITS_PER_INT64_LOG2 6
56 #define PR_BITS_PER_LONG_LOG2 5
57 #define PR_BITS_PER_FLOAT_LOG2 5
58 #define PR_BITS_PER_DOUBLE_LOG2 6
59 #define PR_BITS_PER_WORD_LOG2 5
61 #define PR_ALIGN_OF_SHORT 2
62 #define PR_ALIGN_OF_INT 4
63 #define PR_ALIGN_OF_LONG 4
64 #define PR_ALIGN_OF_INT64 4
65 #define PR_ALIGN_OF_FLOAT 4
66 #define PR_ALIGN_OF_DOUBLE 4
67 #define PR_ALIGN_OF_POINTER 4
69 #elif defined(__sparc_v9__)
71 #undef IS_LITTLE_ENDIAN
72 #define IS_BIG_ENDIAN 1
73 #define HAVE_ALIGNED_DOUBLES
74 #define HAVE_ALIGNED_LONGLONGS
75 #define IS_64
77 #define PR_BYTES_PER_BYTE 1
78 #define PR_BYTES_PER_SHORT 2
79 #define PR_BYTES_PER_INT 4
80 #define PR_BYTES_PER_INT64 8
81 #define PR_BYTES_PER_LONG 8
82 #define PR_BYTES_PER_FLOAT 4
83 #define PR_BYTES_PER_DOUBLE 8
84 #define PR_BYTES_PER_WORD 8
85 #define PR_BYTES_PER_DWORD 8
86 #define PR_BYTES_PER_WORD_LOG2 3
87 #define PR_BYTES_PER_DWORD_LOG2 3
89 #define PR_BITS_PER_BYTE 8
90 #define PR_BITS_PER_SHORT 16
91 #define PR_BITS_PER_INT 32
92 #define PR_BITS_PER_INT64 64
93 #define PR_BITS_PER_LONG 64
94 #define PR_BITS_PER_FLOAT 32
95 #define PR_BITS_PER_DOUBLE 64
96 #define PR_BITS_PER_WORD 64
98 #define PR_BITS_PER_BYTE_LOG2 3
99 #define PR_BITS_PER_SHORT_LOG2 4
100 #define PR_BITS_PER_INT_LOG2 5
101 #define PR_BITS_PER_INT64_LOG2 6
102 #define PR_BITS_PER_LONG_LOG2 6
103 #define PR_BITS_PER_FLOAT_LOG2 5
104 #define PR_BITS_PER_DOUBLE_LOG2 6
105 #define PR_BITS_PER_WORD_LOG2 6
107 #define PR_ALIGN_OF_SHORT 2
108 #define PR_ALIGN_OF_INT 4
109 #define PR_ALIGN_OF_LONG 8
110 #define PR_ALIGN_OF_INT64 8
111 #define PR_ALIGN_OF_FLOAT 4
112 #define PR_ALIGN_OF_DOUBLE 8
113 #define PR_ALIGN_OF_POINTER 8
115 #elif defined(__sparc__) || defined(__MIPSEB__) || defined(__ARMEB__)
117 #undef IS_LITTLE_ENDIAN
118 #define IS_BIG_ENDIAN 1
119 #define HAVE_ALIGNED_DOUBLES
120 #define HAVE_ALIGNED_LONGLONGS
122 #define PR_BYTES_PER_BYTE 1
123 #define PR_BYTES_PER_SHORT 2
124 #define PR_BYTES_PER_INT 4
125 #define PR_BYTES_PER_INT64 8
126 #define PR_BYTES_PER_LONG 4
127 #define PR_BYTES_PER_FLOAT 4
128 #define PR_BYTES_PER_DOUBLE 8
129 #define PR_BYTES_PER_WORD 4
130 #define PR_BYTES_PER_DWORD 8
131 #define PR_BYTES_PER_WORD_LOG2 2
132 #define PR_BYTES_PER_DWORD_LOG2 3
134 #define PR_BITS_PER_BYTE 8
135 #define PR_BITS_PER_SHORT 16
136 #define PR_BITS_PER_INT 32
137 #define PR_BITS_PER_INT64 64
138 #define PR_BITS_PER_LONG 32
139 #define PR_BITS_PER_FLOAT 32
140 #define PR_BITS_PER_DOUBLE 64
141 #define PR_BITS_PER_WORD 32
143 #define PR_BITS_PER_BYTE_LOG2 3
144 #define PR_BITS_PER_SHORT_LOG2 4
145 #define PR_BITS_PER_INT_LOG2 5
146 #define PR_BITS_PER_INT64_LOG2 6
147 #define PR_BITS_PER_LONG_LOG2 5
148 #define PR_BITS_PER_FLOAT_LOG2 5
149 #define PR_BITS_PER_DOUBLE_LOG2 6
150 #define PR_BITS_PER_WORD_LOG2 5
152 #define PR_ALIGN_OF_SHORT 2
153 #define PR_ALIGN_OF_INT 4
154 #define PR_ALIGN_OF_LONG 4
155 #define PR_ALIGN_OF_INT64 8
156 #define PR_ALIGN_OF_FLOAT 4
157 #define PR_ALIGN_OF_DOUBLE 8
158 #define PR_ALIGN_OF_POINTER 4
160 #elif defined(__alpha__)
161 #define IS_LITTLE_ENDIAN 1
162 #undef IS_BIG_ENDIAN
163 #define HAVE_ALIGNED_DOUBLES
164 #define HAVE_ALIGNED_LONGLONGS
165 #define IS_64
167 #define PR_BYTES_PER_BYTE 1
168 #define PR_BYTES_PER_SHORT 2
169 #define PR_BYTES_PER_INT 4
170 #define PR_BYTES_PER_INT64 8
171 #define PR_BYTES_PER_LONG 8
172 #define PR_BYTES_PER_FLOAT 4
173 #define PR_BYTES_PER_DOUBLE 8
174 #define PR_BYTES_PER_WORD 8
175 #define PR_BYTES_PER_DWORD 8
177 #define PR_BITS_PER_BYTE 8
178 #define PR_BITS_PER_SHORT 16
179 #define PR_BITS_PER_INT 32
180 #define PR_BITS_PER_INT64 64
181 #define PR_BITS_PER_LONG 64
182 #define PR_BITS_PER_FLOAT 32
183 #define PR_BITS_PER_DOUBLE 64
184 #define PR_BITS_PER_WORD 64
186 #define PR_BITS_PER_BYTE_LOG2 3
187 #define PR_BITS_PER_SHORT_LOG2 4
188 #define PR_BITS_PER_INT_LOG2 5
189 #define PR_BITS_PER_INT64_LOG2 6
190 #define PR_BITS_PER_LONG_LOG2 6
191 #define PR_BITS_PER_FLOAT_LOG2 5
192 #define PR_BITS_PER_DOUBLE_LOG2 6
193 #define PR_BITS_PER_WORD_LOG2 6
195 #define PR_ALIGN_OF_SHORT 2
196 #define PR_ALIGN_OF_INT 4
197 #define PR_ALIGN_OF_LONG 8
198 #define PR_ALIGN_OF_INT64 8
199 #define PR_ALIGN_OF_FLOAT 4
200 #define PR_ALIGN_OF_DOUBLE 8
201 #define PR_ALIGN_OF_POINTER 8
203 #define PR_BYTES_PER_WORD_LOG2 3
204 #define PR_BYTES_PER_DWORD_LOG2 3
206 #elif defined(__amd64__)
207 #define IS_LITTLE_ENDIAN 1
208 #undef IS_BIG_ENDIAN
209 #define HAVE_ALIGNED_DOUBLES
210 #define HAVE_ALIGNED_LONGLONGS
211 #define IS_64
213 #define PR_BYTES_PER_BYTE 1
214 #define PR_BYTES_PER_SHORT 2
215 #define PR_BYTES_PER_INT 4
216 #define PR_BYTES_PER_INT64 8
217 #define PR_BYTES_PER_LONG 8
218 #define PR_BYTES_PER_FLOAT 4
219 #define PR_BYTES_PER_DOUBLE 8
220 #define PR_BYTES_PER_WORD 8
221 #define PR_BYTES_PER_DWORD 8
223 #define PR_BITS_PER_BYTE 8
224 #define PR_BITS_PER_SHORT 16
225 #define PR_BITS_PER_INT 32
226 #define PR_BITS_PER_INT64 64
227 #define PR_BITS_PER_LONG 64
228 #define PR_BITS_PER_FLOAT 32
229 #define PR_BITS_PER_DOUBLE 64
230 #define PR_BITS_PER_WORD 64
232 #define PR_BITS_PER_BYTE_LOG2 3
233 #define PR_BITS_PER_SHORT_LOG2 4
234 #define PR_BITS_PER_INT_LOG2 5
235 #define PR_BITS_PER_INT64_LOG2 6
236 #define PR_BITS_PER_LONG_LOG2 6
237 #define PR_BITS_PER_FLOAT_LOG2 5
238 #define PR_BITS_PER_DOUBLE_LOG2 6
239 #define PR_BITS_PER_WORD_LOG2 6
241 #define PR_ALIGN_OF_SHORT 2
242 #define PR_ALIGN_OF_INT 4
243 #define PR_ALIGN_OF_LONG 8
244 #define PR_ALIGN_OF_INT64 8
245 #define PR_ALIGN_OF_FLOAT 4
246 #define PR_ALIGN_OF_DOUBLE 8
247 #define PR_ALIGN_OF_POINTER 8
248 #define PR_ALIGN_OF_WORD 8
250 #define PR_BYTES_PER_WORD_LOG2 3
251 #define PR_BYTES_PER_DWORD_LOG2 3
253 #elif defined(__powerpc__) || defined(__m68k__)
255 #undef IS_LITTLE_ENDIAN
256 #define IS_BIG_ENDIAN 1
257 #undef HAVE_ALIGNED_DOUBLES
258 #undef HAVE_ALIGNED_LONGLONGS
260 #define PR_BYTES_PER_BYTE 1
261 #define PR_BYTES_PER_SHORT 2
262 #define PR_BYTES_PER_INT 4
263 #define PR_BYTES_PER_INT64 8
264 #define PR_BYTES_PER_LONG 4
265 #define PR_BYTES_PER_FLOAT 4
266 #define PR_BYTES_PER_DOUBLE 8
267 #define PR_BYTES_PER_WORD 4
268 #define PR_BYTES_PER_DWORD 8
270 #define PR_BITS_PER_BYTE 8
271 #define PR_BITS_PER_SHORT 16
272 #define PR_BITS_PER_INT 32
273 #define PR_BITS_PER_INT64 64
274 #define PR_BITS_PER_LONG 32
275 #define PR_BITS_PER_FLOAT 32
276 #define PR_BITS_PER_DOUBLE 64
277 #define PR_BITS_PER_WORD 32
279 #define PR_BITS_PER_BYTE_LOG2 3
280 #define PR_BITS_PER_SHORT_LOG2 4
281 #define PR_BITS_PER_INT_LOG2 5
282 #define PR_BITS_PER_INT64_LOG2 6
283 #define PR_BITS_PER_LONG_LOG2 5
284 #define PR_BITS_PER_FLOAT_LOG2 5
285 #define PR_BITS_PER_DOUBLE_LOG2 6
286 #define PR_BITS_PER_WORD_LOG2 5
288 #define PR_ALIGN_OF_SHORT 2
289 #define PR_ALIGN_OF_INT 4
290 #define PR_ALIGN_OF_LONG 4
291 #define PR_ALIGN_OF_INT64 4
292 #define PR_ALIGN_OF_FLOAT 4
293 #define PR_ALIGN_OF_DOUBLE 4
294 #define PR_ALIGN_OF_POINTER 4
296 #define PR_BYTES_PER_WORD_LOG2 2
297 #define PR_BYTES_PER_DWORD_LOG2 3
299 #else
301 #error Must define constants for type sizes here.
303 #endif
306 #ifndef NO_NSPR_10_SUPPORT
308 #define BYTES_PER_BYTE PR_BYTES_PER_BYTE
309 #define BYTES_PER_SHORT PR_BYTES_PER_SHORT
310 #define BYTES_PER_INT PR_BYTES_PER_INT
311 #define BYTES_PER_INT64 PR_BYTES_PER_INT64
312 #define BYTES_PER_LONG PR_BYTES_PER_LONG
313 #define BYTES_PER_FLOAT PR_BYTES_PER_FLOAT
314 #define BYTES_PER_DOUBLE PR_BYTES_PER_DOUBLE
315 #define BYTES_PER_WORD PR_BYTES_PER_WORD
316 #define BYTES_PER_DWORD PR_BYTES_PER_DWORD
318 #define BITS_PER_BYTE PR_BITS_PER_BYTE
319 #define BITS_PER_SHORT PR_BITS_PER_SHORT
320 #define BITS_PER_INT PR_BITS_PER_INT
321 #define BITS_PER_INT64 PR_BITS_PER_INT64
322 #define BITS_PER_LONG PR_BITS_PER_LONG
323 #define BITS_PER_FLOAT PR_BITS_PER_FLOAT
324 #define BITS_PER_DOUBLE PR_BITS_PER_DOUBLE
325 #define BITS_PER_WORD PR_BITS_PER_WORD
327 #define BITS_PER_BYTE_LOG2 PR_BITS_PER_BYTE_LOG2
328 #define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2
329 #define BITS_PER_INT_LOG2 PR_BITS_PER_INT_LOG2
330 #define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2
331 #define BITS_PER_LONG_LOG2 PR_BITS_PER_LONG_LOG2
332 #define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2
333 #define BITS_PER_DOUBLE_LOG2 PR_BITS_PER_DOUBLE_LOG2
334 #define BITS_PER_WORD_LOG2 PR_BITS_PER_WORD_LOG2
336 #define ALIGN_OF_SHORT PR_ALIGN_OF_SHORT
337 #define ALIGN_OF_INT PR_ALIGN_OF_INT
338 #define ALIGN_OF_LONG PR_ALIGN_OF_LONG
339 #define ALIGN_OF_INT64 PR_ALIGN_OF_INT64
340 #define ALIGN_OF_FLOAT PR_ALIGN_OF_FLOAT
341 #define ALIGN_OF_DOUBLE PR_ALIGN_OF_DOUBLE
342 #define ALIGN_OF_POINTER PR_ALIGN_OF_POINTER
343 #define ALIGN_OF_WORD PR_ALIGN_OF_WORD
345 #define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2
346 #define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
347 #define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
349 #endif /* NO_NSPR_10_SUPPORT */
351 #endif /* nspr_cpucfg___ */