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 OPENBSD
14 #define OPENBSD
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(__arm__)
25 #define IS_LITTLE_ENDIAN 1
26 #undef IS_BIG_ENDIAN
27 #undef HAVE_ALIGNED_DOUBLES
28 #undef HAVE_ALIGNED_LONGLONGS
30 #define PR_BYTES_PER_BYTE 1
31 #define PR_BYTES_PER_SHORT 2
32 #define PR_BYTES_PER_INT 4
33 #define PR_BYTES_PER_INT64 8
34 #define PR_BYTES_PER_LONG 4
35 #define PR_BYTES_PER_FLOAT 4
36 #define PR_BYTES_PER_DOUBLE 8
37 #define PR_BYTES_PER_WORD 4
38 #define PR_BYTES_PER_DWORD 8
39 #define PR_BYTES_PER_WORD_LOG2 2
40 #define PR_BYTES_PER_DWORD_LOG2 3
42 #define PR_BITS_PER_BYTE 8
43 #define PR_BITS_PER_SHORT 16
44 #define PR_BITS_PER_INT 32
45 #define PR_BITS_PER_INT64 64
46 #define PR_BITS_PER_LONG 32
47 #define PR_BITS_PER_FLOAT 32
48 #define PR_BITS_PER_DOUBLE 64
49 #define PR_BITS_PER_WORD 32
51 #define PR_BITS_PER_BYTE_LOG2 3
52 #define PR_BITS_PER_SHORT_LOG2 4
53 #define PR_BITS_PER_INT_LOG2 5
54 #define PR_BITS_PER_INT64_LOG2 6
55 #define PR_BITS_PER_LONG_LOG2 5
56 #define PR_BITS_PER_FLOAT_LOG2 5
57 #define PR_BITS_PER_DOUBLE_LOG2 6
58 #define PR_BITS_PER_WORD_LOG2 5
60 #define PR_ALIGN_OF_SHORT 2
61 #define PR_ALIGN_OF_INT 4
62 #define PR_ALIGN_OF_LONG 4
63 #define PR_ALIGN_OF_INT64 4
64 #define PR_ALIGN_OF_FLOAT 4
65 #define PR_ALIGN_OF_DOUBLE 4
66 #define PR_ALIGN_OF_POINTER 4
68 #elif defined(__amd64__)
70 #define IS_LITTLE_ENDIAN 1
71 #undef IS_BIG_ENDIAN
72 #define IS_64
74 #define PR_BYTES_PER_BYTE 1
75 #define PR_BYTES_PER_SHORT 2
76 #define PR_BYTES_PER_INT 4
77 #define PR_BYTES_PER_INT64 8
78 #define PR_BYTES_PER_LONG 8
79 #define PR_BYTES_PER_FLOAT 4
80 #define PR_BYTES_PER_DOUBLE 8
81 #define PR_BYTES_PER_WORD 8
82 #define PR_BYTES_PER_DWORD 8
84 #define PR_BITS_PER_BYTE 8
85 #define PR_BITS_PER_SHORT 16
86 #define PR_BITS_PER_INT 32
87 #define PR_BITS_PER_INT64 64
88 #define PR_BITS_PER_LONG 64
89 #define PR_BITS_PER_FLOAT 32
90 #define PR_BITS_PER_DOUBLE 64
91 #define PR_BITS_PER_WORD 64
93 #define PR_BITS_PER_BYTE_LOG2 3
94 #define PR_BITS_PER_SHORT_LOG2 4
95 #define PR_BITS_PER_INT_LOG2 5
96 #define PR_BITS_PER_INT64_LOG2 6
97 #define PR_BITS_PER_LONG_LOG2 6
98 #define PR_BITS_PER_FLOAT_LOG2 5
99 #define PR_BITS_PER_DOUBLE_LOG2 6
100 #define PR_BITS_PER_WORD_LOG2 6
102 #define PR_ALIGN_OF_SHORT 2
103 #define PR_ALIGN_OF_INT 4
104 #define PR_ALIGN_OF_LONG 8
105 #define PR_ALIGN_OF_INT64 8
106 #define PR_ALIGN_OF_FLOAT 4
107 #define PR_ALIGN_OF_DOUBLE 8
108 #define PR_ALIGN_OF_POINTER 8
109 #define PR_ALIGN_OF_WORD 8
111 #define PR_BYTES_PER_WORD_LOG2 3
112 #define PR_BYTES_PER_DWORD_LOG2 3
114 #define HAVE_ALIGNED_DOUBLES
115 #define HAVE_ALIGNED_LONGLONGS
117 #elif defined(__sparc_v9__)
119 #undef IS_LITTLE_ENDIAN
120 #define IS_BIG_ENDIAN 1
121 #define HAVE_ALIGNED_DOUBLES
122 #define HAVE_ALIGNED_LONGLONGS
123 #define IS_64
125 #define PR_BYTES_PER_BYTE 1
126 #define PR_BYTES_PER_SHORT 2
127 #define PR_BYTES_PER_INT 4
128 #define PR_BYTES_PER_INT64 8
129 #define PR_BYTES_PER_LONG 8
130 #define PR_BYTES_PER_FLOAT 4
131 #define PR_BYTES_PER_DOUBLE 8
132 #define PR_BYTES_PER_WORD 8
133 #define PR_BYTES_PER_DWORD 8
135 #define PR_BITS_PER_BYTE 8
136 #define PR_BITS_PER_SHORT 16
137 #define PR_BITS_PER_INT 32
138 #define PR_BITS_PER_INT64 64
139 #define PR_BITS_PER_LONG 64
140 #define PR_BITS_PER_FLOAT 32
141 #define PR_BITS_PER_DOUBLE 64
142 #define PR_BITS_PER_WORD 64
144 #define PR_BITS_PER_BYTE_LOG2 3
145 #define PR_BITS_PER_SHORT_LOG2 4
146 #define PR_BITS_PER_INT_LOG2 5
147 #define PR_BITS_PER_INT64_LOG2 6
148 #define PR_BITS_PER_LONG_LOG2 6
149 #define PR_BITS_PER_FLOAT_LOG2 5
150 #define PR_BITS_PER_DOUBLE_LOG2 6
151 #define PR_BITS_PER_WORD_LOG2 6
153 #define PR_ALIGN_OF_SHORT 2
154 #define PR_ALIGN_OF_INT 4
155 #define PR_ALIGN_OF_LONG 8
156 #define PR_ALIGN_OF_INT64 8
157 #define PR_ALIGN_OF_FLOAT 4
158 #define PR_ALIGN_OF_DOUBLE 8
159 #define PR_ALIGN_OF_POINTER 8
161 #define PR_BYTES_PER_WORD_LOG2 3
162 #define PR_BYTES_PER_DWORD_LOG2 3
164 #elif defined(__sparc__)
166 #undef IS_LITTLE_ENDIAN
167 #define IS_BIG_ENDIAN 1
168 #define HAVE_ALIGNED_DOUBLES
169 #define HAVE_ALIGNED_LONGLONGS
171 #define PR_BYTES_PER_BYTE 1
172 #define PR_BYTES_PER_SHORT 2
173 #define PR_BYTES_PER_INT 4
174 #define PR_BYTES_PER_INT64 8
175 #define PR_BYTES_PER_LONG 4
176 #define PR_BYTES_PER_FLOAT 4
177 #define PR_BYTES_PER_DOUBLE 8
178 #define PR_BYTES_PER_WORD 4
179 #define PR_BYTES_PER_DWORD 8
180 #define PR_BYTES_PER_WORD_LOG2 2
181 #define PR_BYTES_PER_DWORD_LOG2 3
183 #define PR_BITS_PER_BYTE 8
184 #define PR_BITS_PER_SHORT 16
185 #define PR_BITS_PER_INT 32
186 #define PR_BITS_PER_INT64 64
187 #define PR_BITS_PER_LONG 32
188 #define PR_BITS_PER_FLOAT 32
189 #define PR_BITS_PER_DOUBLE 64
190 #define PR_BITS_PER_WORD 32
192 #define PR_BITS_PER_BYTE_LOG2 3
193 #define PR_BITS_PER_SHORT_LOG2 4
194 #define PR_BITS_PER_INT_LOG2 5
195 #define PR_BITS_PER_INT64_LOG2 6
196 #define PR_BITS_PER_LONG_LOG2 5
197 #define PR_BITS_PER_FLOAT_LOG2 5
198 #define PR_BITS_PER_DOUBLE_LOG2 6
199 #define PR_BITS_PER_WORD_LOG2 5
201 #define PR_ALIGN_OF_SHORT 2
202 #define PR_ALIGN_OF_INT 4
203 #define PR_ALIGN_OF_LONG 4
204 #define PR_ALIGN_OF_INT64 8
205 #define PR_ALIGN_OF_FLOAT 4
206 #define PR_ALIGN_OF_DOUBLE 8
207 #define PR_ALIGN_OF_POINTER 4
209 #elif defined(__alpha__)
210 #define IS_LITTLE_ENDIAN 1
211 #undef IS_BIG_ENDIAN
212 #define HAVE_ALIGNED_DOUBLES
213 #define HAVE_ALIGNED_LONGLONGS
214 #define IS_64
216 #define PR_BYTES_PER_BYTE 1
217 #define PR_BYTES_PER_SHORT 2
218 #define PR_BYTES_PER_INT 4
219 #define PR_BYTES_PER_INT64 8
220 #define PR_BYTES_PER_LONG 8
221 #define PR_BYTES_PER_FLOAT 4
222 #define PR_BYTES_PER_DOUBLE 8
223 #define PR_BYTES_PER_WORD 8
224 #define PR_BYTES_PER_DWORD 8
226 #define PR_BITS_PER_BYTE 8
227 #define PR_BITS_PER_SHORT 16
228 #define PR_BITS_PER_INT 32
229 #define PR_BITS_PER_INT64 64
230 #define PR_BITS_PER_LONG 64
231 #define PR_BITS_PER_FLOAT 32
232 #define PR_BITS_PER_DOUBLE 64
233 #define PR_BITS_PER_WORD 64
235 #define PR_BITS_PER_BYTE_LOG2 3
236 #define PR_BITS_PER_SHORT_LOG2 4
237 #define PR_BITS_PER_INT_LOG2 5
238 #define PR_BITS_PER_INT64_LOG2 6
239 #define PR_BITS_PER_LONG_LOG2 6
240 #define PR_BITS_PER_FLOAT_LOG2 5
241 #define PR_BITS_PER_DOUBLE_LOG2 6
242 #define PR_BITS_PER_WORD_LOG2 6
244 #define PR_ALIGN_OF_SHORT 2
245 #define PR_ALIGN_OF_INT 4
246 #define PR_ALIGN_OF_LONG 8
247 #define PR_ALIGN_OF_INT64 8
248 #define PR_ALIGN_OF_FLOAT 4
249 #define PR_ALIGN_OF_DOUBLE 8
250 #define PR_ALIGN_OF_POINTER 8
252 #define PR_BYTES_PER_WORD_LOG2 3
253 #define PR_BYTES_PER_DWORD_LOG2 3
255 #elif defined(__powerpc__) || defined(__m68k__)
257 #undef IS_LITTLE_ENDIAN
258 #define IS_BIG_ENDIAN 1
259 #undef HAVE_ALIGNED_DOUBLES
260 #undef HAVE_ALIGNED_LONGLONGS
262 #define PR_BYTES_PER_BYTE 1
263 #define PR_BYTES_PER_SHORT 2
264 #define PR_BYTES_PER_INT 4
265 #define PR_BYTES_PER_INT64 8
266 #define PR_BYTES_PER_LONG 4
267 #define PR_BYTES_PER_FLOAT 4
268 #define PR_BYTES_PER_DOUBLE 8
269 #define PR_BYTES_PER_WORD 4
270 #define PR_BYTES_PER_DWORD 8
272 #define PR_BITS_PER_BYTE 8
273 #define PR_BITS_PER_SHORT 16
274 #define PR_BITS_PER_INT 32
275 #define PR_BITS_PER_INT64 64
276 #define PR_BITS_PER_LONG 32
277 #define PR_BITS_PER_FLOAT 32
278 #define PR_BITS_PER_DOUBLE 64
279 #define PR_BITS_PER_WORD 32
281 #define PR_BITS_PER_BYTE_LOG2 3
282 #define PR_BITS_PER_SHORT_LOG2 4
283 #define PR_BITS_PER_INT_LOG2 5
284 #define PR_BITS_PER_INT64_LOG2 6
285 #define PR_BITS_PER_LONG_LOG2 5
286 #define PR_BITS_PER_FLOAT_LOG2 5
287 #define PR_BITS_PER_DOUBLE_LOG2 6
288 #define PR_BITS_PER_WORD_LOG2 5
290 #define PR_ALIGN_OF_SHORT 2
291 #define PR_ALIGN_OF_INT 4
292 #define PR_ALIGN_OF_LONG 4
293 #define PR_ALIGN_OF_INT64 4
294 #define PR_ALIGN_OF_FLOAT 4
295 #define PR_ALIGN_OF_DOUBLE 4
296 #define PR_ALIGN_OF_POINTER 4
298 #define PR_BYTES_PER_WORD_LOG2 2
299 #define PR_BYTES_PER_DWORD_LOG2 3
301 #else
303 #error Must define constants for type sizes here.
305 #endif
308 #ifndef NO_NSPR_10_SUPPORT
310 #define BYTES_PER_BYTE PR_BYTES_PER_BYTE
311 #define BYTES_PER_SHORT PR_BYTES_PER_SHORT
312 #define BYTES_PER_INT PR_BYTES_PER_INT
313 #define BYTES_PER_INT64 PR_BYTES_PER_INT64
314 #define BYTES_PER_LONG PR_BYTES_PER_LONG
315 #define BYTES_PER_FLOAT PR_BYTES_PER_FLOAT
316 #define BYTES_PER_DOUBLE PR_BYTES_PER_DOUBLE
317 #define BYTES_PER_WORD PR_BYTES_PER_WORD
318 #define BYTES_PER_DWORD PR_BYTES_PER_DWORD
320 #define BITS_PER_BYTE PR_BITS_PER_BYTE
321 #define BITS_PER_SHORT PR_BITS_PER_SHORT
322 #define BITS_PER_INT PR_BITS_PER_INT
323 #define BITS_PER_INT64 PR_BITS_PER_INT64
324 #define BITS_PER_LONG PR_BITS_PER_LONG
325 #define BITS_PER_FLOAT PR_BITS_PER_FLOAT
326 #define BITS_PER_DOUBLE PR_BITS_PER_DOUBLE
327 #define BITS_PER_WORD PR_BITS_PER_WORD
329 #define BITS_PER_BYTE_LOG2 PR_BITS_PER_BYTE_LOG2
330 #define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2
331 #define BITS_PER_INT_LOG2 PR_BITS_PER_INT_LOG2
332 #define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2
333 #define BITS_PER_LONG_LOG2 PR_BITS_PER_LONG_LOG2
334 #define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2
335 #define BITS_PER_DOUBLE_LOG2 PR_BITS_PER_DOUBLE_LOG2
336 #define BITS_PER_WORD_LOG2 PR_BITS_PER_WORD_LOG2
338 #define ALIGN_OF_SHORT PR_ALIGN_OF_SHORT
339 #define ALIGN_OF_INT PR_ALIGN_OF_INT
340 #define ALIGN_OF_LONG PR_ALIGN_OF_LONG
341 #define ALIGN_OF_INT64 PR_ALIGN_OF_INT64
342 #define ALIGN_OF_FLOAT PR_ALIGN_OF_FLOAT
343 #define ALIGN_OF_DOUBLE PR_ALIGN_OF_DOUBLE
344 #define ALIGN_OF_POINTER PR_ALIGN_OF_POINTER
345 #define ALIGN_OF_WORD PR_ALIGN_OF_WORD
347 #define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2
348 #define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
349 #define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
351 #endif /* NO_NSPR_10_SUPPORT */
353 #endif /* nspr_cpucfg___ */