• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is the Netscape Portable Runtime (NSPR).
16  *
17  * The Initial Developer of the Original Code is
18  * Netscape Communications Corporation.
19  * Portions created by the Initial Developer are Copyright (C) 1998-2000
20  * the Initial Developer. All Rights Reserved.
21  *
22  * Contributor(s):
23  *
24  * Alternatively, the contents of this file may be used under the terms of
25  * either the GNU General Public License Version 2 or later (the "GPL"), or
26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27  * in which case the provisions of the GPL or the LGPL are applicable instead
28  * of those above. If you wish to allow use of your version of this file only
29  * under the terms of either the GPL or the LGPL, and not to allow others to
30  * use your version of this file under the terms of the MPL, indicate your
31  * decision by deleting the provisions above and replace them with the notice
32  * and other provisions required by the GPL or the LGPL. If you do not delete
33  * the provisions above, a recipient may use your version of this file under
34  * the terms of any one of the MPL, the GPL or the LGPL.
35  *
36  * ***** END LICENSE BLOCK ***** */
37 
38 #ifndef nspr_cpucfg___
39 #define nspr_cpucfg___
40 
41 #ifndef XP_PC
42 #define XP_PC
43 #endif
44 
45 #ifndef WIN32
46 #define WIN32
47 #endif
48 
49 #ifndef WIN95
50 #define WIN95
51 #endif
52 
53 #define PR_AF_INET6 23  /* same as AF_INET6 */
54 
55 #if defined(_M_IX86) || defined(_X86_)
56 
57 #define IS_LITTLE_ENDIAN 1
58 #undef  IS_BIG_ENDIAN
59 
60 #define PR_BYTES_PER_BYTE   1
61 #define PR_BYTES_PER_SHORT  2
62 #define PR_BYTES_PER_INT    4
63 #define PR_BYTES_PER_INT64  8
64 #define PR_BYTES_PER_LONG   4
65 #define PR_BYTES_PER_FLOAT  4
66 #define PR_BYTES_PER_WORD	4
67 #define PR_BYTES_PER_DWORD	8
68 #define PR_BYTES_PER_DOUBLE 8
69 
70 #define PR_BITS_PER_BYTE    8
71 #define PR_BITS_PER_SHORT   16
72 #define PR_BITS_PER_INT     32
73 #define PR_BITS_PER_INT64   64
74 #define PR_BITS_PER_LONG    32
75 #define PR_BITS_PER_FLOAT   32
76 #define PR_BITS_PER_WORD	32
77 #define PR_BITS_PER_DWORD	64
78 #define PR_BITS_PER_DOUBLE  64
79 
80 #define PR_BITS_PER_BYTE_LOG2   3
81 #define PR_BITS_PER_SHORT_LOG2  4
82 #define PR_BITS_PER_INT_LOG2    5
83 #define PR_BITS_PER_INT64_LOG2  6
84 #define PR_BITS_PER_LONG_LOG2   5
85 #define PR_BITS_PER_FLOAT_LOG2  5
86 #define PR_BITS_PER_WORD_LOG2	5
87 #define PR_BITS_PER_DWORD_LOG2	6
88 #define PR_BITS_PER_DOUBLE_LOG2 6
89 
90 #define PR_ALIGN_OF_SHORT   2
91 #define PR_ALIGN_OF_INT     4
92 #define PR_ALIGN_OF_LONG    4
93 #define PR_ALIGN_OF_INT64   8
94 #define PR_ALIGN_OF_FLOAT   4
95 #define PR_ALIGN_OF_WORD	4
96 #define PR_ALIGN_OF_DWORD	8
97 #define PR_ALIGN_OF_DOUBLE  4
98 #define PR_ALIGN_OF_POINTER 4
99 
100 #define PR_BYTES_PER_WORD_LOG2	2
101 #define PR_BYTES_PER_DWORD_LOG2	2
102 
103 #elif defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)
104 
105 #define IS_LITTLE_ENDIAN 1
106 #undef  IS_BIG_ENDIAN
107 #define IS_64
108 
109 #define PR_BYTES_PER_BYTE   1
110 #define PR_BYTES_PER_SHORT  2
111 #define PR_BYTES_PER_INT    4
112 #define PR_BYTES_PER_INT64  8
113 #define PR_BYTES_PER_LONG   4
114 #define PR_BYTES_PER_FLOAT  4
115 #define PR_BYTES_PER_WORD	8
116 #define PR_BYTES_PER_DWORD	8
117 #define PR_BYTES_PER_DOUBLE 8
118 
119 #define PR_BITS_PER_BYTE    8
120 #define PR_BITS_PER_SHORT   16
121 #define PR_BITS_PER_INT     32
122 #define PR_BITS_PER_INT64   64
123 #define PR_BITS_PER_LONG    32
124 #define PR_BITS_PER_FLOAT   32
125 #define PR_BITS_PER_WORD	64
126 #define PR_BITS_PER_DWORD	64
127 #define PR_BITS_PER_DOUBLE  64
128 
129 #define PR_BITS_PER_BYTE_LOG2   3
130 #define PR_BITS_PER_SHORT_LOG2  4
131 #define PR_BITS_PER_INT_LOG2    5
132 #define PR_BITS_PER_INT64_LOG2  6
133 #define PR_BITS_PER_LONG_LOG2   5
134 #define PR_BITS_PER_FLOAT_LOG2  5
135 #define PR_BITS_PER_WORD_LOG2	6
136 #define PR_BITS_PER_DWORD_LOG2	6
137 #define PR_BITS_PER_DOUBLE_LOG2 6
138 
139 #define PR_ALIGN_OF_SHORT   2
140 #define PR_ALIGN_OF_INT     4
141 #define PR_ALIGN_OF_LONG    4
142 #define PR_ALIGN_OF_INT64   8
143 #define PR_ALIGN_OF_FLOAT   4
144 #define PR_ALIGN_OF_WORD	8
145 #define PR_ALIGN_OF_DWORD	8
146 #define PR_ALIGN_OF_DOUBLE  8
147 #define PR_ALIGN_OF_POINTER 8
148 
149 #define PR_BYTES_PER_WORD_LOG2	3
150 #define PR_BYTES_PER_DWORD_LOG2	3
151 
152 #elif defined(_M_IA64) || defined(_IA64_)
153 
154 #define IS_LITTLE_ENDIAN 1
155 #undef  IS_BIG_ENDIAN
156 #define IS_64
157 
158 #define PR_BYTES_PER_BYTE   1
159 #define PR_BYTES_PER_SHORT  2
160 #define PR_BYTES_PER_INT    4
161 #define PR_BYTES_PER_INT64  8
162 #define PR_BYTES_PER_LONG   4
163 #define PR_BYTES_PER_FLOAT  4
164 #define PR_BYTES_PER_WORD	8
165 #define PR_BYTES_PER_DWORD	8
166 #define PR_BYTES_PER_DOUBLE 8
167 
168 #define PR_BITS_PER_BYTE    8
169 #define PR_BITS_PER_SHORT   16
170 #define PR_BITS_PER_INT     32
171 #define PR_BITS_PER_INT64   64
172 #define PR_BITS_PER_LONG    32
173 #define PR_BITS_PER_FLOAT   32
174 #define PR_BITS_PER_WORD	64
175 #define PR_BITS_PER_DWORD	64
176 #define PR_BITS_PER_DOUBLE  64
177 
178 #define PR_BITS_PER_BYTE_LOG2   3
179 #define PR_BITS_PER_SHORT_LOG2  4
180 #define PR_BITS_PER_INT_LOG2    5
181 #define PR_BITS_PER_INT64_LOG2  6
182 #define PR_BITS_PER_LONG_LOG2   5
183 #define PR_BITS_PER_FLOAT_LOG2  5
184 #define PR_BITS_PER_WORD_LOG2	6
185 #define PR_BITS_PER_DWORD_LOG2	6
186 #define PR_BITS_PER_DOUBLE_LOG2 6
187 
188 #define PR_ALIGN_OF_SHORT   2
189 #define PR_ALIGN_OF_INT     4
190 #define PR_ALIGN_OF_LONG    4
191 #define PR_ALIGN_OF_INT64   8
192 #define PR_ALIGN_OF_FLOAT   4
193 #define PR_ALIGN_OF_WORD	8
194 #define PR_ALIGN_OF_DWORD	8
195 #define PR_ALIGN_OF_DOUBLE  8
196 #define PR_ALIGN_OF_POINTER 8
197 
198 #define PR_BYTES_PER_WORD_LOG2	3
199 #define PR_BYTES_PER_DWORD_LOG2	3
200 
201 #else /* defined(_M_IX86) || defined(_X86_) */
202 
203 #error unknown processor architecture
204 
205 #endif /* defined(_M_IX86) || defined(_X86_) */
206 
207 #ifndef HAVE_LONG_LONG
208 #define HAVE_LONG_LONG
209 #endif
210 
211 #ifndef NO_NSPR_10_SUPPORT
212 
213 #define BYTES_PER_BYTE      PR_BYTES_PER_BYTE
214 #define BYTES_PER_SHORT     PR_BYTES_PER_SHORT
215 #define BYTES_PER_INT       PR_BYTES_PER_INT
216 #define BYTES_PER_INT64     PR_BYTES_PER_INT64
217 #define BYTES_PER_LONG      PR_BYTES_PER_LONG
218 #define BYTES_PER_FLOAT     PR_BYTES_PER_FLOAT
219 #define BYTES_PER_DOUBLE    PR_BYTES_PER_DOUBLE
220 #define BYTES_PER_WORD      PR_BYTES_PER_WORD
221 #define BYTES_PER_DWORD     PR_BYTES_PER_DWORD
222 
223 #define BITS_PER_BYTE       PR_BITS_PER_BYTE
224 #define BITS_PER_SHORT      PR_BITS_PER_SHORT
225 #define BITS_PER_INT        PR_BITS_PER_INT
226 #define BITS_PER_INT64      PR_BITS_PER_INT64
227 #define BITS_PER_LONG       PR_BITS_PER_LONG
228 #define BITS_PER_FLOAT      PR_BITS_PER_FLOAT
229 #define BITS_PER_DOUBLE     PR_BITS_PER_DOUBLE
230 #define BITS_PER_WORD       PR_BITS_PER_WORD
231 
232 #define BITS_PER_BYTE_LOG2  PR_BITS_PER_BYTE_LOG2
233 #define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2
234 #define BITS_PER_INT_LOG2   PR_BITS_PER_INT_LOG2
235 #define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2
236 #define BITS_PER_LONG_LOG2  PR_BITS_PER_LONG_LOG2
237 #define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2
238 #define BITS_PER_DOUBLE_LOG2    PR_BITS_PER_DOUBLE_LOG2
239 #define BITS_PER_WORD_LOG2  PR_BITS_PER_WORD_LOG2
240 
241 #define ALIGN_OF_SHORT      PR_ALIGN_OF_SHORT
242 #define ALIGN_OF_INT        PR_ALIGN_OF_INT
243 #define ALIGN_OF_LONG       PR_ALIGN_OF_LONG
244 #define ALIGN_OF_INT64      PR_ALIGN_OF_INT64
245 #define ALIGN_OF_FLOAT      PR_ALIGN_OF_FLOAT
246 #define ALIGN_OF_DOUBLE     PR_ALIGN_OF_DOUBLE
247 #define ALIGN_OF_POINTER    PR_ALIGN_OF_POINTER
248 #define ALIGN_OF_WORD       PR_ALIGN_OF_WORD
249 
250 #define BYTES_PER_WORD_LOG2		PR_BYTES_PER_WORD_LOG2
251 #define BYTES_PER_DWORD_LOG2    PR_BYTES_PER_DWORD_LOG2
252 #define WORDS_PER_DWORD_LOG2    PR_WORDS_PER_DWORD_LOG2
253 
254 #endif /* NO_NSPR_10_SUPPORT */
255 
256 #endif /* nspr_cpucfg___ */
257