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 #ifndef nspr_cpucfg___
7 #define nspr_cpucfg___
8 
9 #ifndef XP_UNIX
10 #define XP_UNIX
11 #endif
12 
13 #define PR_AF_INET6 30  /* same as AF_INET6 */
14 
15 #ifdef __LITTLE_ENDIAN__
16 #undef IS_BIG_ENDIAN
17 #define  IS_LITTLE_ENDIAN 1
18 #else
19 #undef IS_LITTLE_ENDIAN
20 #define  IS_BIG_ENDIAN 1
21 #endif
22 
23 #ifdef __x86_64__
24 #define IS_64
25 #endif
26 
27 #ifndef HAVE_LONG_LONG
28 #define	HAVE_LONG_LONG
29 #endif
30 #undef	HAVE_ALIGNED_DOUBLES
31 #define	HAVE_ALIGNED_LONGLONGS 1
32 
33 #ifdef IS_64
34 
35 #define PR_BYTES_PER_BYTE   1
36 #define PR_BYTES_PER_SHORT  2
37 #define PR_BYTES_PER_INT    4
38 #define PR_BYTES_PER_INT64  8
39 #define PR_BYTES_PER_LONG   8
40 #define PR_BYTES_PER_FLOAT  4
41 #define PR_BYTES_PER_DOUBLE 8
42 #define PR_BYTES_PER_WORD   8
43 #define PR_BYTES_PER_DWORD  8
44 
45 #define PR_BITS_PER_BYTE    8
46 #define PR_BITS_PER_SHORT   16
47 #define PR_BITS_PER_INT     32
48 #define PR_BITS_PER_INT64   64
49 #define PR_BITS_PER_LONG    64
50 #define PR_BITS_PER_FLOAT   32
51 #define PR_BITS_PER_DOUBLE  64
52 #define PR_BITS_PER_WORD    64
53 #define PR_BITS_PER_DWORD   64
54 
55 #define PR_BITS_PER_BYTE_LOG2   3
56 #define PR_BITS_PER_SHORT_LOG2  4
57 #define PR_BITS_PER_INT_LOG2    5
58 #define PR_BITS_PER_INT64_LOG2  6
59 #define PR_BITS_PER_LONG_LOG2   6
60 #define PR_BITS_PER_FLOAT_LOG2  5
61 #define PR_BITS_PER_DOUBLE_LOG2 6
62 #define PR_BITS_PER_WORD_LOG2   6
63 #define PR_BITS_PER_DWORD_LOG2  6
64 
65 #define PR_ALIGN_OF_SHORT   2
66 #define PR_ALIGN_OF_INT     4
67 #define PR_ALIGN_OF_LONG    8
68 #define PR_ALIGN_OF_INT64   8
69 #define PR_ALIGN_OF_FLOAT   4
70 #define PR_ALIGN_OF_DOUBLE  8
71 #define PR_ALIGN_OF_POINTER 8
72 #define PR_ALIGN_OF_WORD    8
73 #define PR_ALIGN_OF_DWORD   8
74 
75 #else /* IS_64 */
76 
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   4
82 #define PR_BYTES_PER_FLOAT  4
83 #define PR_BYTES_PER_DOUBLE 8
84 #define PR_BYTES_PER_WORD   4
85 #define PR_BYTES_PER_DWORD  8
86 #define PR_BYTES_PER_WORD_LOG2   2
87 #define PR_BYTES_PER_DWORD_LOG2  3
88 
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    32
94 #define PR_BITS_PER_FLOAT   32
95 #define PR_BITS_PER_DOUBLE  64
96 #define PR_BITS_PER_WORD    32
97 #define PR_BITS_PER_DWORD   64
98 
99 #define PR_BITS_PER_BYTE_LOG2   3
100 #define PR_BITS_PER_SHORT_LOG2  4
101 #define PR_BITS_PER_INT_LOG2    5
102 #define PR_BITS_PER_INT64_LOG2  6
103 #define PR_BITS_PER_LONG_LOG2   5
104 #define PR_BITS_PER_FLOAT_LOG2  5
105 #define PR_BITS_PER_DOUBLE_LOG2 6
106 #define PR_BITS_PER_WORD_LOG2   5
107 
108 #define PR_ALIGN_OF_SHORT   2
109 #define PR_ALIGN_OF_INT     4
110 #define PR_ALIGN_OF_LONG    4
111 #define PR_ALIGN_OF_INT64   4
112 #define PR_ALIGN_OF_FLOAT   4
113 #define PR_ALIGN_OF_DOUBLE  4
114 #define PR_ALIGN_OF_POINTER 4
115 #define PR_ALIGN_OF_WORD    4
116 
117 #endif /* IS_64 */
118 
119 #ifndef NO_NSPR_10_SUPPORT
120 
121 #define BYTES_PER_BYTE		PR_BYTES_PER_BYTE
122 #define BYTES_PER_SHORT 	PR_BYTES_PER_SHORT
123 #define BYTES_PER_INT 		PR_BYTES_PER_INT
124 #define BYTES_PER_INT64		PR_BYTES_PER_INT64
125 #define BYTES_PER_LONG		PR_BYTES_PER_LONG
126 #define BYTES_PER_FLOAT		PR_BYTES_PER_FLOAT
127 #define BYTES_PER_DOUBLE	PR_BYTES_PER_DOUBLE
128 #define BYTES_PER_WORD		PR_BYTES_PER_WORD
129 #define BYTES_PER_DWORD		PR_BYTES_PER_DWORD
130 
131 #define BITS_PER_BYTE		PR_BITS_PER_BYTE
132 #define BITS_PER_SHORT		PR_BITS_PER_SHORT
133 #define BITS_PER_INT		PR_BITS_PER_INT
134 #define BITS_PER_INT64		PR_BITS_PER_INT64
135 #define BITS_PER_LONG		PR_BITS_PER_LONG
136 #define BITS_PER_FLOAT		PR_BITS_PER_FLOAT
137 #define BITS_PER_DOUBLE		PR_BITS_PER_DOUBLE
138 #define BITS_PER_WORD		PR_BITS_PER_WORD
139 
140 #define BITS_PER_BYTE_LOG2	PR_BITS_PER_BYTE_LOG2
141 #define BITS_PER_SHORT_LOG2	PR_BITS_PER_SHORT_LOG2
142 #define BITS_PER_INT_LOG2	PR_BITS_PER_INT_LOG2
143 #define BITS_PER_INT64_LOG2	PR_BITS_PER_INT64_LOG2
144 #define BITS_PER_LONG_LOG2	PR_BITS_PER_LONG_LOG2
145 #define BITS_PER_FLOAT_LOG2	PR_BITS_PER_FLOAT_LOG2
146 #define BITS_PER_DOUBLE_LOG2 	PR_BITS_PER_DOUBLE_LOG2
147 #define BITS_PER_WORD_LOG2	PR_BITS_PER_WORD_LOG2
148 
149 #define ALIGN_OF_SHORT		PR_ALIGN_OF_SHORT
150 #define ALIGN_OF_INT		PR_ALIGN_OF_INT
151 #define ALIGN_OF_LONG		PR_ALIGN_OF_LONG
152 #define ALIGN_OF_INT64		PR_ALIGN_OF_INT64
153 #define ALIGN_OF_FLOAT		PR_ALIGN_OF_FLOAT
154 #define ALIGN_OF_DOUBLE		PR_ALIGN_OF_DOUBLE
155 #define ALIGN_OF_POINTER	PR_ALIGN_OF_POINTER
156 #define ALIGN_OF_WORD		PR_ALIGN_OF_WORD
157 
158 #define BYTES_PER_WORD_LOG2	PR_BYTES_PER_WORD_LOG2
159 #define BYTES_PER_DWORD_LOG2	PR_BYTES_PER_DWORD_LOG2
160 #define WORDS_PER_DWORD_LOG2	PR_WORDS_PER_DWORD_LOG2
161 
162 #endif /* NO_NSPR_10_SUPPORT */
163 
164 #endif /* nspr_cpucfg___ */
165 
166