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/. */
5
6/*
7 * This file is used by not only Linux but also other glibc systems
8 * such as GNU/Hurd and GNU/k*BSD.
9 */
10
11#ifndef nspr_cpucfg___
12#define nspr_cpucfg___
13
14#ifndef XP_UNIX
15#define XP_UNIX
16#endif
17
18#if !defined(LINUX) && defined(__linux__)
19#define LINUX
20#endif
21
22#ifdef __FreeBSD_kernel__
23#define PR_AF_INET6 28 /* same as AF_INET6 */
24#elif defined(__GNU__)
25#define PR_AF_INET6 26 /* same as AF_INET6 */
26#else
27#define PR_AF_INET6 10 /* same as AF_INET6 */
28#endif
29
30#ifdef __powerpc64__
31
32#ifdef __LITTLE_ENDIAN__
33#define IS_LITTLE_ENDIAN 1
34#undef IS_BIG_ENDIAN
35#else
36#undef IS_LITTLE_ENDIAN
37#define IS_BIG_ENDIAN 1
38#endif
39#define IS_64
40
41#define PR_BYTES_PER_BYTE 1
42#define PR_BYTES_PER_SHORT 2
43#define PR_BYTES_PER_INT 4
44#define PR_BYTES_PER_INT64 8
45#define PR_BYTES_PER_LONG 8
46#define PR_BYTES_PER_FLOAT 4
47#define PR_BYTES_PER_DOUBLE 8
48#define PR_BYTES_PER_WORD 8
49#define PR_BYTES_PER_DWORD 8
50
51#define PR_BITS_PER_BYTE 8
52#define PR_BITS_PER_SHORT 16
53#define PR_BITS_PER_INT 32
54#define PR_BITS_PER_INT64 64
55#define PR_BITS_PER_LONG 64
56#define PR_BITS_PER_FLOAT 32
57#define PR_BITS_PER_DOUBLE 64
58#define PR_BITS_PER_WORD 64
59
60#define PR_BITS_PER_BYTE_LOG2 3
61#define PR_BITS_PER_SHORT_LOG2 4
62#define PR_BITS_PER_INT_LOG2 5
63#define PR_BITS_PER_INT64_LOG2 6
64#define PR_BITS_PER_LONG_LOG2 6
65#define PR_BITS_PER_FLOAT_LOG2 5
66#define PR_BITS_PER_DOUBLE_LOG2 6
67#define PR_BITS_PER_WORD_LOG2 6
68
69#define PR_ALIGN_OF_SHORT 2
70#define PR_ALIGN_OF_INT 4
71#define PR_ALIGN_OF_LONG 8
72#define PR_ALIGN_OF_INT64 8
73#define PR_ALIGN_OF_FLOAT 4
74#define PR_ALIGN_OF_DOUBLE 8
75#define PR_ALIGN_OF_POINTER 8
76#define PR_ALIGN_OF_WORD 8
77
78#define PR_BYTES_PER_WORD_LOG2 3
79#define PR_BYTES_PER_DWORD_LOG2 3
80
81#elif defined(__powerpc__)
82
83#ifdef __LITTLE_ENDIAN__
84#define IS_LITTLE_ENDIAN 1
85#undef IS_BIG_ENDIAN
86#else
87#undef IS_LITTLE_ENDIAN
88#define IS_BIG_ENDIAN 1
89#endif
90
91#define PR_BYTES_PER_BYTE 1
92#define PR_BYTES_PER_SHORT 2
93#define PR_BYTES_PER_INT 4
94#define PR_BYTES_PER_INT64 8
95#define PR_BYTES_PER_LONG 4
96#define PR_BYTES_PER_FLOAT 4
97#define PR_BYTES_PER_DOUBLE 8
98#define PR_BYTES_PER_WORD 4
99#define PR_BYTES_PER_DWORD 8
100
101#define PR_BITS_PER_BYTE 8
102#define PR_BITS_PER_SHORT 16
103#define PR_BITS_PER_INT 32
104#define PR_BITS_PER_INT64 64
105#define PR_BITS_PER_LONG 32
106#define PR_BITS_PER_FLOAT 32
107#define PR_BITS_PER_DOUBLE 64
108#define PR_BITS_PER_WORD 32
109
110#define PR_BITS_PER_BYTE_LOG2 3
111#define PR_BITS_PER_SHORT_LOG2 4
112#define PR_BITS_PER_INT_LOG2 5
113#define PR_BITS_PER_INT64_LOG2 6
114#define PR_BITS_PER_LONG_LOG2 5
115#define PR_BITS_PER_FLOAT_LOG2 5
116#define PR_BITS_PER_DOUBLE_LOG2 6
117#define PR_BITS_PER_WORD_LOG2 5
118
119#define PR_ALIGN_OF_SHORT 2
120#define PR_ALIGN_OF_INT 4
121#define PR_ALIGN_OF_LONG 4
122#define PR_ALIGN_OF_INT64 8
123#define PR_ALIGN_OF_FLOAT 4
124#define PR_ALIGN_OF_DOUBLE 8
125#define PR_ALIGN_OF_POINTER 4
126#define PR_ALIGN_OF_WORD 4
127
128#define PR_BYTES_PER_WORD_LOG2 2
129#define PR_BYTES_PER_DWORD_LOG2 3
130
131#elif defined(__alpha)
132
133#define IS_LITTLE_ENDIAN 1
134#undef IS_BIG_ENDIAN
135#define IS_64
136
137#define PR_BYTES_PER_BYTE 1
138#define PR_BYTES_PER_SHORT 2
139#define PR_BYTES_PER_INT 4
140#define PR_BYTES_PER_INT64 8
141#define PR_BYTES_PER_LONG 8
142#define PR_BYTES_PER_FLOAT 4
143#define PR_BYTES_PER_DOUBLE 8
144#define PR_BYTES_PER_WORD 8
145#define PR_BYTES_PER_DWORD 8
146
147#define PR_BITS_PER_BYTE 8
148#define PR_BITS_PER_SHORT 16
149#define PR_BITS_PER_INT 32
150#define PR_BITS_PER_INT64 64
151#define PR_BITS_PER_LONG 64
152#define PR_BITS_PER_FLOAT 32
153#define PR_BITS_PER_DOUBLE 64
154#define PR_BITS_PER_WORD 64
155
156#define PR_BITS_PER_BYTE_LOG2 3
157#define PR_BITS_PER_SHORT_LOG2 4
158#define PR_BITS_PER_INT_LOG2 5
159#define PR_BITS_PER_INT64_LOG2 6
160#define PR_BITS_PER_LONG_LOG2 6
161#define PR_BITS_PER_FLOAT_LOG2 5
162#define PR_BITS_PER_DOUBLE_LOG2 6
163#define PR_BITS_PER_WORD_LOG2 6
164
165#define PR_ALIGN_OF_SHORT 2
166#define PR_ALIGN_OF_INT 4
167#define PR_ALIGN_OF_LONG 8
168#define PR_ALIGN_OF_INT64 8
169#define PR_ALIGN_OF_FLOAT 4
170#define PR_ALIGN_OF_DOUBLE 8
171#define PR_ALIGN_OF_POINTER 8
172#define PR_ALIGN_OF_WORD 8
173
174#define PR_BYTES_PER_WORD_LOG2 3
175#define PR_BYTES_PER_DWORD_LOG2 3
176
177#elif defined(__ia64__)
178
179#define IS_LITTLE_ENDIAN 1
180#undef IS_BIG_ENDIAN
181#define IS_64
182
183#define PR_BYTES_PER_BYTE 1
184#define PR_BYTES_PER_SHORT 2
185#define PR_BYTES_PER_INT 4
186#define PR_BYTES_PER_INT64 8
187#define PR_BYTES_PER_LONG 8
188#define PR_BYTES_PER_FLOAT 4
189#define PR_BYTES_PER_DOUBLE 8
190#define PR_BYTES_PER_WORD 8
191#define PR_BYTES_PER_DWORD 8
192
193#define PR_BITS_PER_BYTE 8
194#define PR_BITS_PER_SHORT 16
195#define PR_BITS_PER_INT 32
196#define PR_BITS_PER_INT64 64
197#define PR_BITS_PER_LONG 64
198#define PR_BITS_PER_FLOAT 32
199#define PR_BITS_PER_DOUBLE 64
200#define PR_BITS_PER_WORD 64
201
202#define PR_BITS_PER_BYTE_LOG2 3
203#define PR_BITS_PER_SHORT_LOG2 4
204#define PR_BITS_PER_INT_LOG2 5
205#define PR_BITS_PER_INT64_LOG2 6
206#define PR_BITS_PER_LONG_LOG2 6
207#define PR_BITS_PER_FLOAT_LOG2 5
208#define PR_BITS_PER_DOUBLE_LOG2 6
209#define PR_BITS_PER_WORD_LOG2 6
210
211#define PR_ALIGN_OF_SHORT 2
212#define PR_ALIGN_OF_INT 4
213#define PR_ALIGN_OF_LONG 8
214#define PR_ALIGN_OF_INT64 8
215#define PR_ALIGN_OF_FLOAT 4
216#define PR_ALIGN_OF_DOUBLE 8
217#define PR_ALIGN_OF_POINTER 8
218#define PR_ALIGN_OF_WORD 8
219
220#define PR_BYTES_PER_WORD_LOG2 3
221#define PR_BYTES_PER_DWORD_LOG2 3
222
223#elif defined(__x86_64__)
224
225#ifdef __ILP32__
226
227#define IS_LITTLE_ENDIAN 1
228#undef IS_BIG_ENDIAN
229
230#define PR_BYTES_PER_BYTE 1
231#define PR_BYTES_PER_SHORT 2
232#define PR_BYTES_PER_INT 4
233#define PR_BYTES_PER_INT64 8
234#define PR_BYTES_PER_LONG 4
235#define PR_BYTES_PER_FLOAT 4
236#define PR_BYTES_PER_DOUBLE 8
237#define PR_BYTES_PER_WORD 4
238#define PR_BYTES_PER_DWORD 8
239
240#define PR_BITS_PER_BYTE 8
241#define PR_BITS_PER_SHORT 16
242#define PR_BITS_PER_INT 32
243#define PR_BITS_PER_INT64 64
244#define PR_BITS_PER_LONG 32
245#define PR_BITS_PER_FLOAT 32
246#define PR_BITS_PER_DOUBLE 64
247#define PR_BITS_PER_WORD 32
248
249#define PR_BITS_PER_BYTE_LOG2 3
250#define PR_BITS_PER_SHORT_LOG2 4
251#define PR_BITS_PER_INT_LOG2 5
252#define PR_BITS_PER_INT64_LOG2 6
253#define PR_BITS_PER_LONG_LOG2 5
254#define PR_BITS_PER_FLOAT_LOG2 5
255#define PR_BITS_PER_DOUBLE_LOG2 6
256#define PR_BITS_PER_WORD_LOG2 5
257
258#define PR_ALIGN_OF_SHORT 2
259#define PR_ALIGN_OF_INT 4
260#define PR_ALIGN_OF_LONG 4
261#define PR_ALIGN_OF_INT64 8
262#define PR_ALIGN_OF_FLOAT 4
263#define PR_ALIGN_OF_DOUBLE 8
264#define PR_ALIGN_OF_POINTER 4
265#define PR_ALIGN_OF_WORD 4
266
267#define PR_BYTES_PER_WORD_LOG2 2
268#define PR_BYTES_PER_DWORD_LOG2 3
269
270#else
271
272#define IS_LITTLE_ENDIAN 1
273#undef IS_BIG_ENDIAN
274#define IS_64
275
276#define PR_BYTES_PER_BYTE 1
277#define PR_BYTES_PER_SHORT 2
278#define PR_BYTES_PER_INT 4
279#define PR_BYTES_PER_INT64 8
280#define PR_BYTES_PER_LONG 8
281#define PR_BYTES_PER_FLOAT 4
282#define PR_BYTES_PER_DOUBLE 8
283#define PR_BYTES_PER_WORD 8
284#define PR_BYTES_PER_DWORD 8
285
286#define PR_BITS_PER_BYTE 8
287#define PR_BITS_PER_SHORT 16
288#define PR_BITS_PER_INT 32
289#define PR_BITS_PER_INT64 64
290#define PR_BITS_PER_LONG 64
291#define PR_BITS_PER_FLOAT 32
292#define PR_BITS_PER_DOUBLE 64
293#define PR_BITS_PER_WORD 64
294
295#define PR_BITS_PER_BYTE_LOG2 3
296#define PR_BITS_PER_SHORT_LOG2 4
297#define PR_BITS_PER_INT_LOG2 5
298#define PR_BITS_PER_INT64_LOG2 6
299#define PR_BITS_PER_LONG_LOG2 6
300#define PR_BITS_PER_FLOAT_LOG2 5
301#define PR_BITS_PER_DOUBLE_LOG2 6
302#define PR_BITS_PER_WORD_LOG2 6
303
304#define PR_ALIGN_OF_SHORT 2
305#define PR_ALIGN_OF_INT 4
306#define PR_ALIGN_OF_LONG 8
307#define PR_ALIGN_OF_INT64 8
308#define PR_ALIGN_OF_FLOAT 4
309#define PR_ALIGN_OF_DOUBLE 8
310#define PR_ALIGN_OF_POINTER 8
311#define PR_ALIGN_OF_WORD 8
312
313#define PR_BYTES_PER_WORD_LOG2 3
314#define PR_BYTES_PER_DWORD_LOG2 3
315
316#endif
317
318#elif defined(__mc68000__)
319
320#undef IS_LITTLE_ENDIAN
321#define IS_BIG_ENDIAN 1
322
323#define PR_BYTES_PER_BYTE 1
324#define PR_BYTES_PER_SHORT 2
325#define PR_BYTES_PER_INT 4
326#define PR_BYTES_PER_INT64 8
327#define PR_BYTES_PER_LONG 4
328#define PR_BYTES_PER_FLOAT 4
329#define PR_BYTES_PER_DOUBLE 8
330#define PR_BYTES_PER_WORD 4
331#define PR_BYTES_PER_DWORD 8
332
333#define PR_BITS_PER_BYTE 8
334#define PR_BITS_PER_SHORT 16
335#define PR_BITS_PER_INT 32
336#define PR_BITS_PER_INT64 64
337#define PR_BITS_PER_LONG 32
338#define PR_BITS_PER_FLOAT 32
339#define PR_BITS_PER_DOUBLE 64
340#define PR_BITS_PER_WORD 32
341
342#define PR_BITS_PER_BYTE_LOG2 3
343#define PR_BITS_PER_SHORT_LOG2 4
344#define PR_BITS_PER_INT_LOG2 5
345#define PR_BITS_PER_INT64_LOG2 6
346#define PR_BITS_PER_LONG_LOG2 5
347#define PR_BITS_PER_FLOAT_LOG2 5
348#define PR_BITS_PER_DOUBLE_LOG2 6
349#define PR_BITS_PER_WORD_LOG2 5
350
351#define PR_ALIGN_OF_SHORT 2
352#define PR_ALIGN_OF_INT 2
353#define PR_ALIGN_OF_LONG 2
354#define PR_ALIGN_OF_INT64 2
355#define PR_ALIGN_OF_FLOAT 2
356#define PR_ALIGN_OF_DOUBLE 2
357#define PR_ALIGN_OF_POINTER 2
358#define PR_ALIGN_OF_WORD 2
359
360#define PR_BYTES_PER_WORD_LOG2 2
361#define PR_BYTES_PER_DWORD_LOG2 3
362
363#elif defined(__sparc__) && defined (__arch64__)
364
365#undef IS_LITTLE_ENDIAN
366#define IS_BIG_ENDIAN 1
367#define IS_64
368
369#define PR_BYTES_PER_BYTE 1
370#define PR_BYTES_PER_SHORT 2
371#define PR_BYTES_PER_INT 4
372#define PR_BYTES_PER_INT64 8
373#define PR_BYTES_PER_LONG 8
374#define PR_BYTES_PER_FLOAT 4
375#define PR_BYTES_PER_DOUBLE 8
376#define PR_BYTES_PER_WORD 8
377#define PR_BYTES_PER_DWORD 8
378
379#define PR_BITS_PER_BYTE 8
380#define PR_BITS_PER_SHORT 16
381#define PR_BITS_PER_INT 32
382#define PR_BITS_PER_INT64 64
383#define PR_BITS_PER_LONG 64
384#define PR_BITS_PER_FLOAT 32
385#define PR_BITS_PER_DOUBLE 64
386#define PR_BITS_PER_WORD 64
387
388#define PR_BITS_PER_BYTE_LOG2 3
389#define PR_BITS_PER_SHORT_LOG2 4
390#define PR_BITS_PER_INT_LOG2 5
391#define PR_BITS_PER_INT64_LOG2 6
392#define PR_BITS_PER_LONG_LOG2 6
393#define PR_BITS_PER_FLOAT_LOG2 5
394#define PR_BITS_PER_DOUBLE_LOG2 6
395#define PR_BITS_PER_WORD_LOG2 6
396
397#define PR_ALIGN_OF_SHORT 2
398#define PR_ALIGN_OF_INT 4
399#define PR_ALIGN_OF_INT64 8
400#define PR_ALIGN_OF_LONG 8
401#define PR_ALIGN_OF_FLOAT 4
402#define PR_ALIGN_OF_DOUBLE 8
403#define PR_ALIGN_OF_POINTER 8
404#define PR_ALIGN_OF_WORD 8
405
406#define PR_BYTES_PER_WORD_LOG2 3
407#define PR_BYTES_PER_DWORD_LOG2 3
408
409#elif defined(__sparc__)
410
411#undef IS_LITTLE_ENDIAN
412#define IS_BIG_ENDIAN 1
413
414#define PR_BYTES_PER_BYTE 1
415#define PR_BYTES_PER_SHORT 2
416#define PR_BYTES_PER_INT 4
417#define PR_BYTES_PER_INT64 8
418#define PR_BYTES_PER_LONG 4
419#define PR_BYTES_PER_FLOAT 4
420#define PR_BYTES_PER_DOUBLE 8
421#define PR_BYTES_PER_WORD 4
422#define PR_BYTES_PER_DWORD 8
423
424#define PR_BITS_PER_BYTE 8
425#define PR_BITS_PER_SHORT 16
426#define PR_BITS_PER_INT 32
427#define PR_BITS_PER_INT64 64
428#define PR_BITS_PER_LONG 32
429#define PR_BITS_PER_FLOAT 32
430#define PR_BITS_PER_DOUBLE 64
431#define PR_BITS_PER_WORD 32
432
433#define PR_BITS_PER_BYTE_LOG2 3
434#define PR_BITS_PER_SHORT_LOG2 4
435#define PR_BITS_PER_INT_LOG2 5
436#define PR_BITS_PER_INT64_LOG2 6
437#define PR_BITS_PER_LONG_LOG2 5
438#define PR_BITS_PER_FLOAT_LOG2 5
439#define PR_BITS_PER_DOUBLE_LOG2 6
440#define PR_BITS_PER_WORD_LOG2 5
441
442#define PR_ALIGN_OF_SHORT 2
443#define PR_ALIGN_OF_INT 4
444#define PR_ALIGN_OF_LONG 4
445#define PR_ALIGN_OF_INT64 8
446#define PR_ALIGN_OF_FLOAT 4
447#define PR_ALIGN_OF_DOUBLE 8
448#define PR_ALIGN_OF_POINTER 4
449#define PR_ALIGN_OF_WORD 4
450
451#define PR_BYTES_PER_WORD_LOG2 2
452#define PR_BYTES_PER_DWORD_LOG2 3
453
454#elif defined(__i386__)
455
456#define IS_LITTLE_ENDIAN 1
457#undef IS_BIG_ENDIAN
458
459#define PR_BYTES_PER_BYTE 1
460#define PR_BYTES_PER_SHORT 2
461#define PR_BYTES_PER_INT 4
462#define PR_BYTES_PER_INT64 8
463#define PR_BYTES_PER_LONG 4
464#define PR_BYTES_PER_FLOAT 4
465#define PR_BYTES_PER_DOUBLE 8
466#define PR_BYTES_PER_WORD 4
467#define PR_BYTES_PER_DWORD 8
468
469#define PR_BITS_PER_BYTE 8
470#define PR_BITS_PER_SHORT 16
471#define PR_BITS_PER_INT 32
472#define PR_BITS_PER_INT64 64
473#define PR_BITS_PER_LONG 32
474#define PR_BITS_PER_FLOAT 32
475#define PR_BITS_PER_DOUBLE 64
476#define PR_BITS_PER_WORD 32
477
478#define PR_BITS_PER_BYTE_LOG2 3
479#define PR_BITS_PER_SHORT_LOG2 4
480#define PR_BITS_PER_INT_LOG2 5
481#define PR_BITS_PER_INT64_LOG2 6
482#define PR_BITS_PER_LONG_LOG2 5
483#define PR_BITS_PER_FLOAT_LOG2 5
484#define PR_BITS_PER_DOUBLE_LOG2 6
485#define PR_BITS_PER_WORD_LOG2 5
486
487#define PR_ALIGN_OF_SHORT 2
488#define PR_ALIGN_OF_INT 4
489#define PR_ALIGN_OF_LONG 4
490#define PR_ALIGN_OF_INT64 4
491#define PR_ALIGN_OF_FLOAT 4
492#define PR_ALIGN_OF_DOUBLE 4
493#define PR_ALIGN_OF_POINTER 4
494#define PR_ALIGN_OF_WORD 4
495
496#define PR_BYTES_PER_WORD_LOG2 2
497#define PR_BYTES_PER_DWORD_LOG2 3
498
499#elif defined(__mips__)
500
501/* For _ABI64 */
502#if defined(__GLIBC__) || defined(__UCLIBC__)
503#include <sgidefs.h>
504#else
505#include <asm/sgidefs.h>
506#endif
507
508#ifdef __MIPSEB__
509#define IS_BIG_ENDIAN 1
510#undef IS_LITTLE_ENDIAN
511#elif defined(__MIPSEL__)
512#define IS_LITTLE_ENDIAN 1
513#undef IS_BIG_ENDIAN
514#else
515#error "Unknown MIPS endianness."
516#endif
517
518#if _MIPS_SIM == _ABI64
519
520#define IS_64
521
522#define PR_BYTES_PER_BYTE 1
523#define PR_BYTES_PER_SHORT 2
524#define PR_BYTES_PER_INT 4
525#define PR_BYTES_PER_INT64 8
526#define PR_BYTES_PER_LONG 8
527#define PR_BYTES_PER_FLOAT 4
528#define PR_BYTES_PER_DOUBLE 8
529#define PR_BYTES_PER_WORD 8
530#define PR_BYTES_PER_DWORD 8
531
532#define PR_BITS_PER_BYTE 8
533#define PR_BITS_PER_SHORT 16
534#define PR_BITS_PER_INT 32
535#define PR_BITS_PER_INT64 64
536#define PR_BITS_PER_LONG 64
537#define PR_BITS_PER_FLOAT 32
538#define PR_BITS_PER_DOUBLE 64
539#define PR_BITS_PER_WORD 64
540
541#define PR_BITS_PER_BYTE_LOG2 3
542#define PR_BITS_PER_SHORT_LOG2 4
543#define PR_BITS_PER_INT_LOG2 5
544#define PR_BITS_PER_INT64_LOG2 6
545#define PR_BITS_PER_LONG_LOG2 6
546#define PR_BITS_PER_FLOAT_LOG2 5
547#define PR_BITS_PER_DOUBLE_LOG2 6
548#define PR_BITS_PER_WORD_LOG2 6
549
550#define PR_ALIGN_OF_SHORT 2
551#define PR_ALIGN_OF_INT 4
552#define PR_ALIGN_OF_LONG 8
553#define PR_ALIGN_OF_INT64 8
554#define PR_ALIGN_OF_FLOAT 4
555#define PR_ALIGN_OF_DOUBLE 8
556#define PR_ALIGN_OF_POINTER 8
557#define PR_ALIGN_OF_WORD 8
558
559#define PR_BYTES_PER_WORD_LOG2 3
560#define PR_BYTES_PER_DWORD_LOG2 3
561
562#else /* _ABI64 */
563
564#define PR_BYTES_PER_BYTE 1
565#define PR_BYTES_PER_SHORT 2
566#define PR_BYTES_PER_INT 4
567#define PR_BYTES_PER_INT64 8
568#define PR_BYTES_PER_LONG 4
569#define PR_BYTES_PER_FLOAT 4
570#define PR_BYTES_PER_DOUBLE 8
571#define PR_BYTES_PER_WORD 4
572#define PR_BYTES_PER_DWORD 8
573
574#define PR_BITS_PER_BYTE 8
575#define PR_BITS_PER_SHORT 16
576#define PR_BITS_PER_INT 32
577#define PR_BITS_PER_INT64 64
578#define PR_BITS_PER_LONG 32
579#define PR_BITS_PER_FLOAT 32
580#define PR_BITS_PER_DOUBLE 64
581#define PR_BITS_PER_WORD 32
582
583#define PR_BITS_PER_BYTE_LOG2 3
584#define PR_BITS_PER_SHORT_LOG2 4
585#define PR_BITS_PER_INT_LOG2 5
586#define PR_BITS_PER_INT64_LOG2 6
587#define PR_BITS_PER_LONG_LOG2 5
588#define PR_BITS_PER_FLOAT_LOG2 5
589#define PR_BITS_PER_DOUBLE_LOG2 6
590#define PR_BITS_PER_WORD_LOG2 5
591
592#define PR_ALIGN_OF_SHORT 2
593#define PR_ALIGN_OF_INT 4
594#define PR_ALIGN_OF_LONG 4
595#define PR_ALIGN_OF_INT64 8
596#define PR_ALIGN_OF_FLOAT 4
597#define PR_ALIGN_OF_DOUBLE 8
598#define PR_ALIGN_OF_POINTER 4
599#define PR_ALIGN_OF_WORD 4
600
601#define PR_BYTES_PER_WORD_LOG2 2
602#define PR_BYTES_PER_DWORD_LOG2 3
603
604#endif /* _ABI64 */
605
606#elif defined(__arm__)
607
608#ifdef __ARMEB__
609#undef IS_LITTLE_ENDIAN
610#define IS_BIG_ENDIAN 1
611#elif defined(__ARMEL__)
612#define IS_LITTLE_ENDIAN 1
613#undef IS_BIG_ENDIAN
614#else
615#error "Unknown ARM endianness."
616#endif
617
618#define PR_BYTES_PER_BYTE 1
619#define PR_BYTES_PER_SHORT 2
620#define PR_BYTES_PER_INT 4
621#define PR_BYTES_PER_INT64 8
622#define PR_BYTES_PER_LONG 4
623#define PR_BYTES_PER_FLOAT 4
624#define PR_BYTES_PER_DOUBLE 8
625#define PR_BYTES_PER_WORD 4
626#define PR_BYTES_PER_DWORD 8
627
628#define PR_BITS_PER_BYTE 8
629#define PR_BITS_PER_SHORT 16
630#define PR_BITS_PER_INT 32
631#define PR_BITS_PER_INT64 64
632#define PR_BITS_PER_LONG 32
633#define PR_BITS_PER_FLOAT 32
634#define PR_BITS_PER_DOUBLE 64
635#define PR_BITS_PER_WORD 32
636
637#define PR_BITS_PER_BYTE_LOG2 3
638#define PR_BITS_PER_SHORT_LOG2 4
639#define PR_BITS_PER_INT_LOG2 5
640#define PR_BITS_PER_INT64_LOG2 6
641#define PR_BITS_PER_LONG_LOG2 5
642#define PR_BITS_PER_FLOAT_LOG2 5
643#define PR_BITS_PER_DOUBLE_LOG2 6
644#define PR_BITS_PER_WORD_LOG2 5
645
646#define PR_ALIGN_OF_SHORT 2
647#define PR_ALIGN_OF_INT 4
648#define PR_ALIGN_OF_LONG 4
649#define PR_ALIGN_OF_INT64 4
650#define PR_ALIGN_OF_FLOAT 4
651#define PR_ALIGN_OF_DOUBLE 4
652#define PR_ALIGN_OF_POINTER 4
653#define PR_ALIGN_OF_WORD 4
654
655#define PR_BYTES_PER_WORD_LOG2 2
656#define PR_BYTES_PER_DWORD_LOG2 3
657
658#elif defined(__aarch64__)
659
660#ifdef __AARCH64EB__
661#undef IS_LITTLE_ENDIAN
662#define IS_BIG_ENDIAN 1
663#elif defined(__AARCH64EL__)
664#define IS_LITTLE_ENDIAN 1
665#undef IS_BIG_ENDIAN
666#else
667#error "Unknown Aarch64 endianness."
668#endif
669#define IS_64
670
671#define PR_BYTES_PER_BYTE 1
672#define PR_BYTES_PER_SHORT 2
673#define PR_BYTES_PER_INT 4
674#define PR_BYTES_PER_INT64 8
675#define PR_BYTES_PER_LONG 8
676#define PR_BYTES_PER_FLOAT 4
677#define PR_BYTES_PER_DOUBLE 8
678#define PR_BYTES_PER_WORD 8
679#define PR_BYTES_PER_DWORD 8
680
681#define PR_BITS_PER_BYTE 8
682#define PR_BITS_PER_SHORT 16
683#define PR_BITS_PER_INT 32
684#define PR_BITS_PER_INT64 64
685#define PR_BITS_PER_LONG 64
686#define PR_BITS_PER_FLOAT 32
687#define PR_BITS_PER_DOUBLE 64
688#define PR_BITS_PER_WORD 64
689
690#define PR_BITS_PER_BYTE_LOG2 3
691#define PR_BITS_PER_SHORT_LOG2 4
692#define PR_BITS_PER_INT_LOG2 5
693#define PR_BITS_PER_INT64_LOG2 6
694#define PR_BITS_PER_LONG_LOG2 6
695#define PR_BITS_PER_FLOAT_LOG2 5
696#define PR_BITS_PER_DOUBLE_LOG2 6
697#define PR_BITS_PER_WORD_LOG2 6
698
699#define PR_ALIGN_OF_SHORT 2
700#define PR_ALIGN_OF_INT 4
701#define PR_ALIGN_OF_LONG 8
702#define PR_ALIGN_OF_INT64 8
703#define PR_ALIGN_OF_FLOAT 4
704#define PR_ALIGN_OF_DOUBLE 8
705#define PR_ALIGN_OF_POINTER 8
706#define PR_ALIGN_OF_WORD 8
707
708#define PR_BYTES_PER_WORD_LOG2 3
709#define PR_BYTES_PER_DWORD_LOG2 3
710
711#elif defined(__hppa__)
712
713#undef IS_LITTLE_ENDIAN
714#define IS_BIG_ENDIAN 1
715
716#define PR_BYTES_PER_BYTE 1
717#define PR_BYTES_PER_SHORT 2
718#define PR_BYTES_PER_INT 4
719#define PR_BYTES_PER_INT64 8
720#define PR_BYTES_PER_LONG 4
721#define PR_BYTES_PER_FLOAT 4
722#define PR_BYTES_PER_DOUBLE 8
723#define PR_BYTES_PER_WORD 4
724#define PR_BYTES_PER_DWORD 8
725
726#define PR_BITS_PER_BYTE 8
727#define PR_BITS_PER_SHORT 16
728#define PR_BITS_PER_INT 32
729#define PR_BITS_PER_INT64 64
730#define PR_BITS_PER_LONG 32
731#define PR_BITS_PER_FLOAT 32
732#define PR_BITS_PER_DOUBLE 64
733#define PR_BITS_PER_WORD 32
734
735#define PR_BITS_PER_BYTE_LOG2 3
736#define PR_BITS_PER_SHORT_LOG2 4
737#define PR_BITS_PER_INT_LOG2 5
738#define PR_BITS_PER_INT64_LOG2 6
739#define PR_BITS_PER_LONG_LOG2 5
740#define PR_BITS_PER_FLOAT_LOG2 5
741#define PR_BITS_PER_DOUBLE_LOG2 6
742#define PR_BITS_PER_WORD_LOG2 5
743
744#define PR_ALIGN_OF_SHORT 2
745#define PR_ALIGN_OF_INT 4
746#define PR_ALIGN_OF_LONG 4
747#define PR_ALIGN_OF_INT64 8
748#define PR_ALIGN_OF_FLOAT 4
749#define PR_ALIGN_OF_DOUBLE 8
750#define PR_ALIGN_OF_POINTER 4
751#define PR_ALIGN_OF_WORD 4
752
753#define PR_BYTES_PER_WORD_LOG2 2
754#define PR_BYTES_PER_DWORD_LOG2 3
755
756#elif defined(__s390x__)
757
758#define IS_BIG_ENDIAN 1
759#undef IS_LITTLE_ENDIAN
760#define IS_64
761
762#define PR_BYTES_PER_BYTE 1
763#define PR_BYTES_PER_SHORT 2
764#define PR_BYTES_PER_INT 4
765#define PR_BYTES_PER_INT64 8
766#define PR_BYTES_PER_LONG 8
767#define PR_BYTES_PER_FLOAT 4
768#define PR_BYTES_PER_DOUBLE 8
769#define PR_BYTES_PER_WORD 8
770#define PR_BYTES_PER_DWORD 8
771
772#define PR_BITS_PER_BYTE 8
773#define PR_BITS_PER_SHORT 16
774#define PR_BITS_PER_INT 32
775#define PR_BITS_PER_INT64 64
776#define PR_BITS_PER_LONG 64
777#define PR_BITS_PER_FLOAT 32
778#define PR_BITS_PER_DOUBLE 64
779#define PR_BITS_PER_WORD 64
780
781#define PR_BITS_PER_BYTE_LOG2 3
782#define PR_BITS_PER_SHORT_LOG2 4
783#define PR_BITS_PER_INT_LOG2 5
784#define PR_BITS_PER_INT64_LOG2 6
785#define PR_BITS_PER_LONG_LOG2 6
786#define PR_BITS_PER_FLOAT_LOG2 5
787#define PR_BITS_PER_DOUBLE_LOG2 6
788#define PR_BITS_PER_WORD_LOG2 6
789
790#define PR_ALIGN_OF_SHORT 2
791#define PR_ALIGN_OF_INT 4
792#define PR_ALIGN_OF_LONG 8
793#define PR_ALIGN_OF_INT64 8
794#define PR_ALIGN_OF_FLOAT 4
795#define PR_ALIGN_OF_DOUBLE 8
796#define PR_ALIGN_OF_POINTER 8
797#define PR_ALIGN_OF_WORD 8
798
799#define PR_BYTES_PER_WORD_LOG2 3
800#define PR_BYTES_PER_DWORD_LOG2 3
801
802#elif defined(__s390__)
803
804#define IS_BIG_ENDIAN 1
805#undef IS_LITTLE_ENDIAN
806
807#define PR_BYTES_PER_BYTE 1
808#define PR_BYTES_PER_SHORT 2
809#define PR_BYTES_PER_INT 4
810#define PR_BYTES_PER_INT64 8
811#define PR_BYTES_PER_LONG 4
812#define PR_BYTES_PER_FLOAT 4
813#define PR_BYTES_PER_DOUBLE 8
814#define PR_BYTES_PER_WORD 4
815#define PR_BYTES_PER_DWORD 8
816
817#define PR_BITS_PER_BYTE 8
818#define PR_BITS_PER_SHORT 16
819#define PR_BITS_PER_INT 32
820#define PR_BITS_PER_INT64 64
821#define PR_BITS_PER_LONG 32
822#define PR_BITS_PER_FLOAT 32
823#define PR_BITS_PER_DOUBLE 64
824#define PR_BITS_PER_WORD 32
825
826#define PR_BITS_PER_BYTE_LOG2 3
827#define PR_BITS_PER_SHORT_LOG2 4
828#define PR_BITS_PER_INT_LOG2 5
829#define PR_BITS_PER_INT64_LOG2 6
830#define PR_BITS_PER_LONG_LOG2 5
831#define PR_BITS_PER_FLOAT_LOG2 5
832#define PR_BITS_PER_DOUBLE_LOG2 6
833#define PR_BITS_PER_WORD_LOG2 5
834
835#define PR_ALIGN_OF_SHORT 2
836#define PR_ALIGN_OF_INT 4
837#define PR_ALIGN_OF_LONG 4
838#define PR_ALIGN_OF_INT64 4
839#define PR_ALIGN_OF_FLOAT 4
840#define PR_ALIGN_OF_DOUBLE 4
841#define PR_ALIGN_OF_POINTER 4
842#define PR_ALIGN_OF_WORD 4
843
844#define PR_BYTES_PER_WORD_LOG2 2
845#define PR_BYTES_PER_DWORD_LOG2 3
846
847#elif defined(__sh__)
848
849#define IS_LITTLE_ENDIAN 1
850#undef IS_BIG_ENDIAN
851
852#define PR_BYTES_PER_BYTE 1
853#define PR_BYTES_PER_SHORT 2
854#define PR_BYTES_PER_INT 4
855#define PR_BYTES_PER_INT64 8
856#define PR_BYTES_PER_LONG 4
857#define PR_BYTES_PER_FLOAT 4
858#define PR_BYTES_PER_DOUBLE 8
859#define PR_BYTES_PER_WORD 4
860#define PR_BYTES_PER_DWORD 8
861
862#define PR_BITS_PER_BYTE 8
863#define PR_BITS_PER_SHORT 16
864#define PR_BITS_PER_INT 32
865#define PR_BITS_PER_INT64 64
866#define PR_BITS_PER_LONG 32
867#define PR_BITS_PER_FLOAT 32
868#define PR_BITS_PER_DOUBLE 64
869#define PR_BITS_PER_WORD 32
870
871#define PR_BITS_PER_BYTE_LOG2 3
872#define PR_BITS_PER_SHORT_LOG2 4
873#define PR_BITS_PER_INT_LOG2 5
874#define PR_BITS_PER_INT64_LOG2 6
875#define PR_BITS_PER_LONG_LOG2 5
876#define PR_BITS_PER_FLOAT_LOG2 5
877#define PR_BITS_PER_DOUBLE_LOG2 6
878#define PR_BITS_PER_WORD_LOG2 5
879
880#define PR_ALIGN_OF_SHORT 2
881#define PR_ALIGN_OF_INT 4
882#define PR_ALIGN_OF_LONG 4
883#define PR_ALIGN_OF_INT64 4
884#define PR_ALIGN_OF_FLOAT 4
885#define PR_ALIGN_OF_DOUBLE 4
886#define PR_ALIGN_OF_POINTER 4
887#define PR_ALIGN_OF_WORD 4
888
889#define PR_BYTES_PER_WORD_LOG2 2
890#define PR_BYTES_PER_DWORD_LOG2 3
891
892#elif defined(__avr32__)
893
894#undef IS_LITTLE_ENDIAN
895#define IS_BIG_ENDIAN 1
896
897#define PR_BYTES_PER_BYTE 1
898#define PR_BYTES_PER_SHORT 2
899#define PR_BYTES_PER_INT 4
900#define PR_BYTES_PER_INT64 8
901#define PR_BYTES_PER_LONG 4
902#define PR_BYTES_PER_FLOAT 4
903#define PR_BYTES_PER_DOUBLE 8
904#define PR_BYTES_PER_WORD 4
905#define PR_BYTES_PER_DWORD 8
906
907#define PR_BITS_PER_BYTE 8
908#define PR_BITS_PER_SHORT 16
909#define PR_BITS_PER_INT 32
910#define PR_BITS_PER_INT64 64
911#define PR_BITS_PER_LONG 32
912#define PR_BITS_PER_FLOAT 32
913#define PR_BITS_PER_DOUBLE 64
914#define PR_BITS_PER_WORD 32
915
916#define PR_BITS_PER_BYTE_LOG2 3
917#define PR_BITS_PER_SHORT_LOG2 4
918#define PR_BITS_PER_INT_LOG2 5
919#define PR_BITS_PER_INT64_LOG2 6
920#define PR_BITS_PER_LONG_LOG2 5
921#define PR_BITS_PER_FLOAT_LOG2 5
922#define PR_BITS_PER_DOUBLE_LOG2 6
923#define PR_BITS_PER_WORD_LOG2 5
924
925#define PR_ALIGN_OF_SHORT 2
926#define PR_ALIGN_OF_INT 4
927#define PR_ALIGN_OF_LONG 4
928#define PR_ALIGN_OF_INT64 4
929#define PR_ALIGN_OF_FLOAT 4
930#define PR_ALIGN_OF_DOUBLE 4
931#define PR_ALIGN_OF_POINTER 4
932#define PR_ALIGN_OF_WORD 4
933
934#define PR_BYTES_PER_WORD_LOG2 2
935#define PR_BYTES_PER_DWORD_LOG2 3
936
937#elif defined(__m32r__)
938
939#undef IS_LITTLE_ENDIAN
940#define IS_BIG_ENDIAN 1
941
942#define PR_BYTES_PER_BYTE 1
943#define PR_BYTES_PER_SHORT 2
944#define PR_BYTES_PER_INT 4
945#define PR_BYTES_PER_INT64 8
946#define PR_BYTES_PER_LONG 4
947#define PR_BYTES_PER_FLOAT 4
948#define PR_BYTES_PER_DOUBLE 8
949#define PR_BYTES_PER_WORD 4
950#define PR_BYTES_PER_DWORD 8
951
952#define PR_BITS_PER_BYTE 8
953#define PR_BITS_PER_SHORT 16
954#define PR_BITS_PER_INT 32
955#define PR_BITS_PER_INT64 64
956#define PR_BITS_PER_LONG 32
957#define PR_BITS_PER_FLOAT 32
958#define PR_BITS_PER_DOUBLE 64
959#define PR_BITS_PER_WORD 32
960
961#define PR_BITS_PER_BYTE_LOG2 3
962#define PR_BITS_PER_SHORT_LOG2 4
963#define PR_BITS_PER_INT_LOG2 5
964#define PR_BITS_PER_INT64_LOG2 6
965#define PR_BITS_PER_LONG_LOG2 5
966#define PR_BITS_PER_FLOAT_LOG2 5
967#define PR_BITS_PER_DOUBLE_LOG2 6
968#define PR_BITS_PER_WORD_LOG2 5
969
970#define PR_ALIGN_OF_SHORT 2
971#define PR_ALIGN_OF_INT 4
972#define PR_ALIGN_OF_LONG 4
973#define PR_ALIGN_OF_INT64 4
974#define PR_ALIGN_OF_FLOAT 4
975#define PR_ALIGN_OF_DOUBLE 4
976#define PR_ALIGN_OF_POINTER 4
977#define PR_ALIGN_OF_WORD 4
978
979#define PR_BYTES_PER_WORD_LOG2 2
980#define PR_BYTES_PER_DWORD_LOG2 3
981
982#elif defined(__or1k__)
983
984#undef IS_LITTLE_ENDIAN
985#define IS_BIG_ENDIAN 1
986
987#define PR_BYTES_PER_BYTE 1
988#define PR_BYTES_PER_SHORT 2
989#define PR_BYTES_PER_INT 4
990#define PR_BYTES_PER_INT64 8
991#define PR_BYTES_PER_LONG 4
992#define PR_BYTES_PER_FLOAT 4
993#define PR_BYTES_PER_DOUBLE 8
994#define PR_BYTES_PER_WORD 4
995#define PR_BYTES_PER_DWORD 8
996
997#define PR_BITS_PER_BYTE 8
998#define PR_BITS_PER_SHORT 16
999#define PR_BITS_PER_INT 32
1000#define PR_BITS_PER_INT64 64
1001#define PR_BITS_PER_LONG 32
1002#define PR_BITS_PER_FLOAT 32
1003#define PR_BITS_PER_DOUBLE 64
1004#define PR_BITS_PER_WORD 32
1005
1006#define PR_BITS_PER_BYTE_LOG2 3
1007#define PR_BITS_PER_SHORT_LOG2 4
1008#define PR_BITS_PER_INT_LOG2 5
1009#define PR_BITS_PER_INT64_LOG2 6
1010#define PR_BITS_PER_LONG_LOG2 5
1011#define PR_BITS_PER_FLOAT_LOG2 5
1012#define PR_BITS_PER_DOUBLE_LOG2 6
1013#define PR_BITS_PER_WORD_LOG2 5
1014
1015#define PR_ALIGN_OF_SHORT 2
1016#define PR_ALIGN_OF_INT 4
1017#define PR_ALIGN_OF_LONG 4
1018#define PR_ALIGN_OF_INT64 4
1019#define PR_ALIGN_OF_FLOAT 4
1020#define PR_ALIGN_OF_DOUBLE 4
1021#define PR_ALIGN_OF_POINTER 4
1022#define PR_ALIGN_OF_WORD 4
1023
1024#define PR_BYTES_PER_WORD_LOG2 2
1025#define PR_BYTES_PER_DWORD_LOG2 3
1026
1027#elif defined(__riscv) && (__riscv_xlen == 32)
1028
1029#undef IS_BIG_ENDIAN
1030#define IS_LITTLE_ENDIAN 1
1031#undef IS_64
1032
1033#define PR_BYTES_PER_BYTE 1
1034#define PR_BYTES_PER_SHORT 2
1035#define PR_BYTES_PER_INT 4
1036#define PR_BYTES_PER_INT64 8
1037#define PR_BYTES_PER_LONG 4
1038#define PR_BYTES_PER_FLOAT 4
1039#define PR_BYTES_PER_DOUBLE 8
1040#define PR_BYTES_PER_WORD 4
1041#define PR_BYTES_PER_DWORD 8
1042
1043#define PR_BITS_PER_BYTE 8
1044#define PR_BITS_PER_SHORT 16
1045#define PR_BITS_PER_INT 32
1046#define PR_BITS_PER_INT64 64
1047#define PR_BITS_PER_LONG 32
1048#define PR_BITS_PER_FLOAT 32
1049#define PR_BITS_PER_DOUBLE 64
1050#define PR_BITS_PER_WORD 32
1051
1052#define PR_BITS_PER_BYTE_LOG2 3
1053#define PR_BITS_PER_SHORT_LOG2 4
1054#define PR_BITS_PER_INT_LOG2 5
1055#define PR_BITS_PER_INT64_LOG2 6
1056#define PR_BITS_PER_LONG_LOG2 5
1057#define PR_BITS_PER_FLOAT_LOG2 5
1058#define PR_BITS_PER_DOUBLE_LOG2 6
1059#define PR_BITS_PER_WORD_LOG2 5
1060
1061#define PR_ALIGN_OF_SHORT 2
1062#define PR_ALIGN_OF_INT 4
1063#define PR_ALIGN_OF_LONG 4
1064#define PR_ALIGN_OF_INT64 8
1065#define PR_ALIGN_OF_FLOAT 4
1066#define PR_ALIGN_OF_DOUBLE 8
1067#define PR_ALIGN_OF_POINTER 4
1068#define PR_ALIGN_OF_WORD 4
1069
1070#define PR_BYTES_PER_WORD_LOG2 2
1071#define PR_BYTES_PER_DWORD_LOG2 3
1072
1073#elif defined(__riscv) && (__riscv_xlen == 64)
1074
1075#undef IS_BIG_ENDIAN
1076#define IS_LITTLE_ENDIAN 1
1077#define IS_64
1078
1079#define PR_BYTES_PER_BYTE 1
1080#define PR_BYTES_PER_SHORT 2
1081#define PR_BYTES_PER_INT 4
1082#define PR_BYTES_PER_INT64 8
1083#define PR_BYTES_PER_LONG 8
1084#define PR_BYTES_PER_FLOAT 4
1085#define PR_BYTES_PER_DOUBLE 8
1086#define PR_BYTES_PER_WORD 8
1087#define PR_BYTES_PER_DWORD 8
1088
1089#define PR_BITS_PER_BYTE 8
1090#define PR_BITS_PER_SHORT 16
1091#define PR_BITS_PER_INT 32
1092#define PR_BITS_PER_INT64 64
1093#define PR_BITS_PER_LONG 64
1094#define PR_BITS_PER_FLOAT 32
1095#define PR_BITS_PER_DOUBLE 64
1096#define PR_BITS_PER_WORD 64
1097
1098#define PR_BITS_PER_BYTE_LOG2 3
1099#define PR_BITS_PER_SHORT_LOG2 4
1100#define PR_BITS_PER_INT_LOG2 5
1101#define PR_BITS_PER_INT64_LOG2 6
1102#define PR_BITS_PER_LONG_LOG2 6
1103#define PR_BITS_PER_FLOAT_LOG2 5
1104#define PR_BITS_PER_DOUBLE_LOG2 6
1105#define PR_BITS_PER_WORD_LOG2 6
1106
1107#define PR_ALIGN_OF_SHORT 2
1108#define PR_ALIGN_OF_INT 4
1109#define PR_ALIGN_OF_LONG 8
1110#define PR_ALIGN_OF_INT64 8
1111#define PR_ALIGN_OF_FLOAT 4
1112#define PR_ALIGN_OF_DOUBLE 8
1113#define PR_ALIGN_OF_POINTER 8
1114#define PR_ALIGN_OF_WORD 8
1115
1116#define PR_BYTES_PER_WORD_LOG2 3
1117#define PR_BYTES_PER_DWORD_LOG2 3
1118
1119#elif defined(__arc__)
1120
1121#define IS_LITTLE_ENDIAN 1
1122#undef IS_BIG_ENDIAN
1123
1124#define PR_BYTES_PER_BYTE 1
1125#define PR_BYTES_PER_SHORT 2
1126#define PR_BYTES_PER_INT 4
1127#define PR_BYTES_PER_INT64 8
1128#define PR_BYTES_PER_LONG 4
1129#define PR_BYTES_PER_FLOAT 4
1130#define PR_BYTES_PER_DOUBLE 8
1131#define PR_BYTES_PER_WORD 4
1132#define PR_BYTES_PER_DWORD 8
1133
1134#define PR_BITS_PER_BYTE 8
1135#define PR_BITS_PER_SHORT 16
1136#define PR_BITS_PER_INT 32
1137#define PR_BITS_PER_INT64 64
1138#define PR_BITS_PER_LONG 32
1139#define PR_BITS_PER_FLOAT 32
1140#define PR_BITS_PER_DOUBLE 64
1141#define PR_BITS_PER_WORD 32
1142
1143#define PR_BITS_PER_BYTE_LOG2 3
1144#define PR_BITS_PER_SHORT_LOG2 4
1145#define PR_BITS_PER_INT_LOG2 5
1146#define PR_BITS_PER_INT64_LOG2 6
1147#define PR_BITS_PER_LONG_LOG2 5
1148#define PR_BITS_PER_FLOAT_LOG2 5
1149#define PR_BITS_PER_DOUBLE_LOG2 6
1150#define PR_BITS_PER_WORD_LOG2 5
1151
1152#define PR_ALIGN_OF_SHORT 2
1153#define PR_ALIGN_OF_INT 4
1154#define PR_ALIGN_OF_LONG 4
1155#define PR_ALIGN_OF_INT64 4
1156#define PR_ALIGN_OF_FLOAT 4
1157#define PR_ALIGN_OF_DOUBLE 4
1158#define PR_ALIGN_OF_POINTER 4
1159#define PR_ALIGN_OF_WORD 4
1160
1161#define PR_BYTES_PER_WORD_LOG2 2
1162#define PR_BYTES_PER_DWORD_LOG2 3
1163
1164#elif defined(__nios2__) || defined(__microblaze__) || defined(__nds32__) || \
1165 defined(__xtensa__)
1166
1167#if defined(__microblaze__) && defined(__BIG_ENDIAN__)
1168#define IS_BIG_ENDIAN 1
1169#undef IS_LITTLE_ENDIAN
1170#else
1171#define IS_LITTLE_ENDIAN 1
1172#undef IS_BIG_ENDIAN
1173#endif
1174
1175#define PR_BYTES_PER_BYTE 1
1176#define PR_BYTES_PER_SHORT 2
1177#define PR_BYTES_PER_INT 4
1178#define PR_BYTES_PER_INT64 8
1179#define PR_BYTES_PER_LONG 4
1180#define PR_BYTES_PER_FLOAT 4
1181#define PR_BYTES_PER_DOUBLE 8
1182#define PR_BYTES_PER_WORD 4
1183#define PR_BYTES_PER_DWORD 8
1184
1185#define PR_BITS_PER_BYTE 8
1186#define PR_BITS_PER_SHORT 16
1187#define PR_BITS_PER_INT 32
1188#define PR_BITS_PER_INT64 64
1189#define PR_BITS_PER_LONG 32
1190#define PR_BITS_PER_FLOAT 32
1191#define PR_BITS_PER_DOUBLE 64
1192#define PR_BITS_PER_WORD 32
1193
1194#define PR_BITS_PER_BYTE_LOG2 3
1195#define PR_BITS_PER_SHORT_LOG2 4
1196#define PR_BITS_PER_INT_LOG2 5
1197#define PR_BITS_PER_INT64_LOG2 6
1198#define PR_BITS_PER_LONG_LOG2 5
1199#define PR_BITS_PER_FLOAT_LOG2 5
1200#define PR_BITS_PER_DOUBLE_LOG2 6
1201#define PR_BITS_PER_WORD_LOG2 5
1202
1203#define PR_ALIGN_OF_SHORT 2
1204#define PR_ALIGN_OF_INT 4
1205#define PR_ALIGN_OF_LONG 4
1206#define PR_ALIGN_OF_INT64 4
1207#define PR_ALIGN_OF_FLOAT 4
1208#define PR_ALIGN_OF_DOUBLE 4
1209#define PR_ALIGN_OF_POINTER 4
1210#define PR_ALIGN_OF_WORD 4
1211
1212#define PR_BYTES_PER_WORD_LOG2 2
1213#define PR_BYTES_PER_DWORD_LOG2 3
1214
1215#elif defined(__e2k__)
1216
1217#define IS_LITTLE_ENDIAN 1
1218#undef IS_BIG_ENDIAN
1219
1220#define IS_64
1221
1222#define PR_BYTES_PER_BYTE 1
1223#define PR_BYTES_PER_SHORT 2
1224#define PR_BYTES_PER_INT 4
1225#define PR_BYTES_PER_INT64 4
1226#define PR_BYTES_PER_LONG 8
1227#define PR_BYTES_PER_FLOAT 4
1228#define PR_BYTES_PER_DOUBLE 8
1229#define PR_BYTES_PER_WORD 8
1230#define PR_BYTES_PER_DWORD 8
1231
1232#define PR_BITS_PER_BYTE 8
1233#define PR_BITS_PER_SHORT 16
1234#define PR_BITS_PER_INT 32
1235#define PR_BITS_PER_INT64 32
1236#define PR_BITS_PER_LONG 64
1237#define PR_BITS_PER_FLOAT 32
1238#define PR_BITS_PER_DOUBLE 64
1239#define PR_BITS_PER_WORD 64
1240
1241#define PR_BITS_PER_BYTE_LOG2 3
1242#define PR_BITS_PER_SHORT_LOG2 4
1243#define PR_BITS_PER_INT_LOG2 5
1244#define PR_BITS_PER_INT64_LOG2 5
1245#define PR_BITS_PER_LONG_LOG2 6
1246#define PR_BITS_PER_FLOAT_LOG2 5
1247#define PR_BITS_PER_DOUBLE_LOG2 6
1248#define PR_BITS_PER_WORD_LOG2 6
1249
1250#define PR_ALIGN_OF_SHORT 2
1251#define PR_ALIGN_OF_INT 4
1252#define PR_ALIGN_OF_LONG 8
1253#define PR_ALIGN_OF_INT64 4
1254#define PR_ALIGN_OF_FLOAT 4
1255#define PR_ALIGN_OF_DOUBLE 8
1256#define PR_ALIGN_OF_POINTER 8
1257#define PR_ALIGN_OF_WORD 8
1258
1259#define PR_BYTES_PER_WORD_LOG2 3
1260#define PR_BYTES_PER_DWORD_LOG2 3
1261
1262#elif defined(__loongarch64)
1263
1264#undef IS_BIG_ENDIAN
1265#define IS_LITTLE_ENDIAN 1
1266#define IS_64
1267
1268#define PR_BYTES_PER_BYTE 1
1269#define PR_BYTES_PER_SHORT 2
1270#define PR_BYTES_PER_INT 4
1271#define PR_BYTES_PER_INT64 8
1272#define PR_BYTES_PER_LONG 8
1273#define PR_BYTES_PER_FLOAT 4
1274#define PR_BYTES_PER_DOUBLE 8
1275#define PR_BYTES_PER_WORD 8
1276#define PR_BYTES_PER_DWORD 8
1277
1278#define PR_BITS_PER_BYTE 8
1279#define PR_BITS_PER_SHORT 16
1280#define PR_BITS_PER_INT 32
1281#define PR_BITS_PER_INT64 64
1282#define PR_BITS_PER_LONG 64
1283#define PR_BITS_PER_FLOAT 32
1284#define PR_BITS_PER_DOUBLE 64
1285#define PR_BITS_PER_WORD 64
1286
1287#define PR_BITS_PER_BYTE_LOG2 3
1288#define PR_BITS_PER_SHORT_LOG2 4
1289#define PR_BITS_PER_INT_LOG2 5
1290#define PR_BITS_PER_INT64_LOG2 6
1291#define PR_BITS_PER_LONG_LOG2 6
1292#define PR_BITS_PER_FLOAT_LOG2 5
1293#define PR_BITS_PER_DOUBLE_LOG2 6
1294#define PR_BITS_PER_WORD_LOG2 6
1295
1296#define PR_ALIGN_OF_SHORT 2
1297#define PR_ALIGN_OF_INT 4
1298#define PR_ALIGN_OF_LONG 8
1299#define PR_ALIGN_OF_INT64 8
1300#define PR_ALIGN_OF_FLOAT 4
1301#define PR_ALIGN_OF_DOUBLE 8
1302#define PR_ALIGN_OF_POINTER 8
1303#define PR_ALIGN_OF_WORD 8
1304
1305#define PR_BYTES_PER_WORD_LOG2 3
1306#define PR_BYTES_PER_DWORD_LOG2 3
1307
1308#else
1309
1310#error "Unknown CPU architecture"
1311
1312#endif
1313
1314#ifndef HAVE_LONG_LONG
1315#define HAVE_LONG_LONG
1316#endif
1317#if PR_ALIGN_OF_DOUBLE == 8
1318#define HAVE_ALIGNED_DOUBLES
1319#endif
1320#if PR_ALIGN_OF_INT64 == 8
1321#define HAVE_ALIGNED_LONGLONGS
1322#endif
1323
1324#ifndef NO_NSPR_10_SUPPORT
1325
1326#define BYTES_PER_BYTE PR_BYTES_PER_BYTE
1327#define BYTES_PER_SHORT PR_BYTES_PER_SHORT
1328#define BYTES_PER_INT PR_BYTES_PER_INT
1329#define BYTES_PER_INT64 PR_BYTES_PER_INT64
1330#define BYTES_PER_LONG PR_BYTES_PER_LONG
1331#define BYTES_PER_FLOAT PR_BYTES_PER_FLOAT
1332#define BYTES_PER_DOUBLE PR_BYTES_PER_DOUBLE
1333#define BYTES_PER_WORD PR_BYTES_PER_WORD
1334#define BYTES_PER_DWORD PR_BYTES_PER_DWORD
1335
1336#define BITS_PER_BYTE PR_BITS_PER_BYTE
1337#define BITS_PER_SHORT PR_BITS_PER_SHORT
1338#define BITS_PER_INT PR_BITS_PER_INT
1339#define BITS_PER_INT64 PR_BITS_PER_INT64
1340#define BITS_PER_LONG PR_BITS_PER_LONG
1341#define BITS_PER_FLOAT PR_BITS_PER_FLOAT
1342#define BITS_PER_DOUBLE PR_BITS_PER_DOUBLE
1343#define BITS_PER_WORD PR_BITS_PER_WORD
1344
1345#define BITS_PER_BYTE_LOG2 PR_BITS_PER_BYTE_LOG2
1346#define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2
1347#define BITS_PER_INT_LOG2 PR_BITS_PER_INT_LOG2
1348#define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2
1349#define BITS_PER_LONG_LOG2 PR_BITS_PER_LONG_LOG2
1350#define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2
1351#define BITS_PER_DOUBLE_LOG2 PR_BITS_PER_DOUBLE_LOG2
1352#define BITS_PER_WORD_LOG2 PR_BITS_PER_WORD_LOG2
1353
1354#define ALIGN_OF_SHORT PR_ALIGN_OF_SHORT
1355#define ALIGN_OF_INT PR_ALIGN_OF_INT
1356#define ALIGN_OF_LONG PR_ALIGN_OF_LONG
1357#define ALIGN_OF_INT64 PR_ALIGN_OF_INT64
1358#define ALIGN_OF_FLOAT PR_ALIGN_OF_FLOAT
1359#define ALIGN_OF_DOUBLE PR_ALIGN_OF_DOUBLE
1360#define ALIGN_OF_POINTER PR_ALIGN_OF_POINTER
1361#define ALIGN_OF_WORD PR_ALIGN_OF_WORD
1362
1363#define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2
1364#define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
1365#define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
1366
1367#endif /* NO_NSPR_10_SUPPORT */
1368
1369#endif /* nspr_cpucfg___ */
1370

source code of include/nspr/prcpucfg.h