ReactOS 0.4.15-dev-7127-g2dd0c6c
archdefs.h
Go to the documentation of this file.
1/* @(#)archdefs.h 1.14 13/07/23 Copyright 2006-2013 J. Schilling */
2/*
3 * Processor, instruction set and OS architecture specific defines.
4 * The information is fetched from compiler predefinitions only.
5 *
6 * Copyright (c) 2006-2013 J. Schilling
7 */
8/*
9 * The contents of this file are subject to the terms of the
10 * Common Development and Distribution License, Version 1.0 only
11 * (the "License"). You may not use this file except in compliance
12 * with the License.
13 *
14 * See the file CDDL.Schily.txt in this distribution for details.
15 * A copy of the CDDL is also available via the Internet at
16 * http://www.opensource.org/licenses/cddl1.txt
17 *
18 * When distributing Covered Code, include this CDDL HEADER in each
19 * file and include the License file CDDL.Schily.txt from this distribution.
20 */
21
22#ifndef _SCHILY_ARCHDEFS_H
23#define _SCHILY_ARCHDEFS_H
24
25/*
26 * The code in this file only depends on compiler predefined macros.
27 * For this reason, it does not need to include schily/mconfig.h
28 */
29
30#if defined(sun) || defined(__sun) || defined(__sun__)
31#ifndef __sun
32#define __sun
33#endif
34#endif
35
36#if defined(sun2)
37#ifndef __mc68010
38#define __mc68010
39#endif
40#endif
41
42#if defined(mc68020) || defined(__mc68020) || defined(sun3)
43#ifndef __mc68020
44#define __mc68020
45#endif
46#endif
47
48#if defined(__mc68010) || defined(__mc68020)
49#ifndef __mc68000
50#define __mc68000
51#endif
52#endif
53
54#if defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86)
55#ifndef __i386
56#define __i386
57#endif
58#endif
59
60#if defined(__amd64) || defined(__amd64__) || \
61 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64)
62#ifndef __amd64
63#define __amd64
64#endif
65#endif
66
67#if defined(__i386) || defined(__amd64)
68#ifndef __x86
69#define __x86
70#endif
71#endif
72
73#if defined(sparc) || defined(__sparc) || defined(__sparc__)
74#ifndef __sparc
75#define __sparc
76#endif
77#endif
78
79#if defined(__sparcv9) || defined(__sparcv9__)
80#ifndef __sparc
81#define __sparc
82#endif
83#ifndef __sparcv9
84#define __sparcv9
85#endif
86#endif
87
88#if defined(__sparc) && defined(__arch64__)
89#ifndef __sparcv9
90#define __sparcv9
91#endif
92#endif
93
94#if defined(SOL2) || defined(SOL2) || \
95 defined(S5R4) || defined(__S5R4) || defined(SVR4)
96# ifndef __SVR4
97# define __SVR4
98# endif
99#endif
100
101#if defined(sun2) || defined(sun3) || defined(__sun)
102#ifndef __sun
103#define __sun
104#endif
105#ifndef __GNUC__
106#ifndef __SUNPRO_C
107#ifdef __SVR4
108#define __SUNPRO_C
109#else
110#define __SUN_C
111#endif /* __SVR4 */
112#endif /* !__SUNPRO_C */
113#endif /* !__GNUC__ */
114#endif /* __sun */
115
116
117/*
118 * SunOS 4 specific defines
119 */
120#if defined(__sun) && !defined(__SVR4)
121
122#define __SUNOS4
123
124#if defined(__mc68000)
125#define __SUNOS4_MC68000
126#ifdef __GNUC__
127#define __SUNOS4_MC68000_GCC32
128#define __JS_ARCH_DEFINED
129#endif
130#ifdef __SUN_C
131#define __SUNOS4_MC68000_CC32
132#define __JS_ARCH_DEFINED
133#endif
134#endif /* __mc68000 */
135
136#if defined(__sparc)
137#define __SUNOS4_SPARC
138#ifdef __GNUC__
139#define __SUNOS4_SPARC_GCC32
140#define __JS_ARCH_DEFINED
141#endif
142#if defined(__SUN_C) || defined(__SUNPRO_C)
143#define __SUNOS4_SPARC_CC32
144#define __JS_ARCH_DEFINED
145#endif
146#endif /* __sparc */
147
148#endif /* SunOS 4 */
149
150
151/*
152 * SunOS 5 specific defines
153 */
154#if defined(__sun) && defined(__SVR4)
155
156#define __SUNOS5
157
158#if defined(__sparc)
159#ifdef __GNUC__
160#ifdef __sparcv9
161#define __SUNOS5_SPARC_GCC64
162#else
163#define __SUNOS5_SPARC_GCC32
164#endif
165#define __JS_ARCH_DEFINED
166#endif
167#if defined(__SUNPRO_C)
168#ifdef __sparcv9
169#define __SUNOS5_SPARC_CC64
170#else
171#define __SUNOS5_SPARC_CC32
172#endif
173#define __JS_ARCH_DEFINED
174#endif
175#endif /* __sparc */
176
177#if defined(__x86)
178#ifdef __GNUC__
179#ifdef __amd64
180#define __SUNOS5_X86_GCC64
181#else
182#define __SUNOS5_X86_GCC32
183#endif
184#define __JS_ARCH_DEFINED
185#endif
186#if defined(__SUNPRO_C)
187#ifdef __amd64
188#define __SUNOS5_X86_CC64
189#else
190#define __SUNOS5_X86_CC32
191#endif
192#define __JS_ARCH_DEFINED
193#endif
194#endif /* __x86 */
195
196#endif /* SunOS 5 */
197
198/*
199 * HP-UX specific defines
200 */
201#if defined(__hpux)
202
203#if defined(__hppa)
204#ifdef __GNUC__
205#ifdef __LP64__ /* This may be wrong! */
206#define __HPUX_HPPA_GCC64
207#else
208#define __HPUX_HPPA_GCC32
209#endif
210#define __JS_ARCH_DEFINED
211#endif
212#if !defined(__GNUC__)
213#ifdef __LP64__
214#define __HPUX_HPPA_CC64
215#else
216#define __HPUX_HPPA_CC32
217#endif
218#define __JS_ARCH_DEFINED
219#endif
220#endif /* __hppa */
221
222#endif /* HP-UX */
223
224/*
225 * Linux specific defines
226 */
227#if defined(__linux)
228
229#if defined(__arm__)
230#ifdef __GNUC__
231#ifdef __ARM_ARCH_5TE__
232#define __LINUX_ARMV5TEJL_GCC32
233#define __JS_ARCH_DEFINED
234#endif
235#ifndef __JS_ARCH_DEFINED
236#ifdef __ARM_ARCH_6__
237#define __LINUX_ARMV6L_GCC32
238#define __JS_ARCH_DEFINED
239#endif
240#endif
241#ifndef __JS_ARCH_DEFINED
242#ifdef __ARM_ARCH_5__
243#define __LINUX_ARMV5L_GCC32
244#define __JS_ARCH_DEFINED
245#endif
246#endif
247#endif /* __GNUC__ */
248#endif /* __arm__ */
249
250#if defined(__i386__) || defined(i386)
251#ifdef __GNUC__
252#define __LINUX_I386_GCC32
253#define __JS_ARCH_DEFINED
254#endif
255#endif /* __i386__ */
256#if defined(__amd64__) || defined(__amd64)
257#ifdef __GNUC__
258#define __LINUX_amd64_GCC64
259#define __JS_ARCH_DEFINED
260#endif
261#endif /* __amd64__ */
262
263#endif /* Linux */
264
265/*
266 * MS-WIN specific defines
267 *
268 * cl defines one of:
269 * _M_ALPHA
270 * _M_IX86
271 * _M_AMD64
272 * _M_M68K
273 * _M_PPC PPC in general
274 * _M_MPPC Power Macintosh
275 * _M_MRX000 Mips
276 * _M_IA64 Itanium
277 */
278#if defined(_MSC_VER) && (defined(_X86_) || defined(_M_IX86))
279#define __MSWIN_X86_CL32
280#define __JS_ARCH_DEFINED
281#endif
282
283#if defined(__CYGWIN32__) || defined(__CYGWIN__)
284#define __CYGWIN_X86_GCC
285#define __JS_ARCH_DEFINED
286#endif
287
288#endif /* _SCHILY_ARCHDEFS_H */