00001 #ifndef KARCH_ARCH_H
arch.h
00002
#define KARCH_ARCH_H 00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
#define
KARCH_ARCH_80286 200 00043
#define KARCH_ARCH_I386 300
00044
#define KARCH_ARCH_I486 400 00045
#define
KARCH_ARCH_PENTIUM 500 00046
#define
KARCH_ARCH_PENTIUMPRO 600 00047
#define
KARCH_ARCH_PENTIUMII 630 00048
#define
KARCH_ARCH_PENTIUMIII 670 00049
#define
KARCH_ARCH_PENTIUMIV 700 00050
00051
00052
00053
00054
#define
KARCH_ARCH_AMD64 800 00055
00056
00057
00058
00059
#define KARCH_ARCH_ITANIUM 1000 00060
00061
00062
#if defined(linux) ||
defined(__CYGWIN32__) 00063
#define KARCH_DEV_GNUC __GNUC__
00064
#define KARCH_ENV_UNIX 1 00065
#define
KARCH_ENV_POSIX 1 00066
00067
#if defined(linux) 00068
#define
KARCH_ENV_LINUX 1 00069
#endif 00070
00071
#if defined(__GNUC__) 00072
#ifndef
_GNU_SOURCE 00073
#define _GNU_SOURCE 00074
#endif 00075
#define KARCH_DEV_GNUC __GNUC__
00076
00077
00078
#if defined(__ia64__) &&
!defined(KARCH_CPU_IA64) 00079
#define
KARCH_CPU_IA64 KARCH_ARCH_ITANIUM 00080
#elif
!defined(KARCH_CPU_IA32) 00081
#if
defined(__pentiumiii__) 00082
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII 00083
#elif
defined(__pentiumii__) 00084
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII 00085
#elif
defined(__i686__) || defined(__pentiumpro__) 00086
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO 00087
#elif
defined(__i586__) || defined(__pentium__) || defined(__k6__)
00088
#define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00089
#elif defined(__i486__) 00090
#define
KARCH_CPU_IA32 KARCH_ARCH_I486 00091
#elif
defined(__i386__) 00092
#define KARCH_CPU_IA32
KARCH_ARCH_I386 00093
#else 00094
#define
KARCH_CPU_IA32 KARCH_ARCH_I286 00095
#endif
00096
#endif 00097
00098
00099
#if defined(KARCH_CPU_IA64)
00100
#define KARCH_ARCH_IA64 KARCH_CPU_IA64
00101
#define KARCH_ARCH_NATIVE64 1 00102
#elif
defined(KARCH_CPU_IA32) 00103
#define
KARCH_ARCH_IA32 KARCH_CPU_IA32 00104
00105
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMII) 00106
#define KARCH_CPU_IA32_MMX
00107
#endif 00108
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMIII) 00109
#define
KARCH_CPU_IA32_SIMD 00110
#endif 00111
#endif
00112
#else 00113
#error "Compiler not supported"
00114
#endif 00115
#elif defined(_XBOX) 00116
#define
KARCH_ENV_WIN 1 00117
#define KARCH_ENV_WIN32 _WIN32
00118
#define KARCH_ENV_XBOX _XBOX 00119
#define
KARCH_DEV_MSC _MSC_VER 00120
#define
KARCH_ARCH_IA32 _M_IX86 00121
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00122
00123
00124
00125
#elif defined(_WIN32)
|| defined(_WIN64) 00126
#define KARCH_ENV_WIN 1 00127
#define
KARCH_ENV_WIN32 _WIN32 00128
#if
defined(_WINNT) 00129
#define KARCH_ENV_WINNT _WINNT
00130
#endif 00131
#define _WIN32_WINNT 0x0501 // for
SetThreadIdealProcessor,TryEnterCriticalSection that does not work
on windows 95/98 00132
#define WINVER 0x0501 00133
00134
#ifndef
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 00135
#define
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 00136
#endif
00137
#ifndef _CRT_NONSTDC_NO_WARNINGS 00138
#define
_CRT_NONSTDC_NO_WARNINGS 1 00139
#endif
00140
#ifndef _CRT_SECURE_NO_WARNINGS 00141
#define
_CRT_SECURE_NO_WARNINGS 1 00142
#endif
00143
#ifndef _CRT_SECURE_NO_DEPRECATE 00144
#define
_CRT_SECURE_NO_DEPRECATE 1 00145
#endif
00146
00147
00148
#if defined
_M_IX86 00149
#pragma
comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='x86' publicKeyToken='6595b64144ccf1df'
language='*'\"") 00150
#elif defined _M_IA64 00151
#pragma
comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df'
language='*'\"") 00152
#elif defined _M_X64 00153
#pragma
comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df'
language='*'\"") 00154
#else 00155
#pragma
comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='*' publicKeyToken='6595b64144ccf1df'
language='*'\"") 00156
#endif 00157
00158
#if defined(__MINGW32__) 00159
#define
KARCH_ENV_MING32 __MINGW32__ 00160
#endif
00161
#if defined(__ICL) 00162
#define
KARCH_DEV_INTEL __ICL 00163
#endif 00164
#if
defined(_MSC_VER) 00165
#define KARCH_DEV_MSC _MSC_VER
00166
#if (_MSC_VER >= 1400) // The Visual C++ 2005
compiler version is 1400 00167
#ifndef
_CRT_SECURE_NO_WARNINGS 00168
#define
_CRT_SECURE_NO_WARNINGS 1 // Disable security deprecation warning
(which isn't real deprecation) 00169
#endif
00170
#ifndef _CRT_SECURE_NO_DEPRECATE 00171
#define
_CRT_SECURE_NO_DEPRECATE 1 00172
#endif
00173
#endif 00174
#elif defined(__GNUC__) 00175
#define
KARCH_DEV_GNUC __GNUC__ 00176
#if
!defined(KARCH_CPU_IA32) 00177
#if
defined(__pentiumiii__) 00178
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII 00179
#elif
defined(__pentiumii__) 00180
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII 00181
#elif
defined(__i686__) || defined(__pentiumpro__) 00182
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO 00183
#elif
defined(__i586__) || defined(__pentium__) || defined(__k6__)
00184
#define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00185
#elif defined(__i486__) 00186
#define
KARCH_CPU_IA32 KARCH_ARCH_I486 00187
#elif
defined(__i386__) 00188
#define KARCH_CPU_IA32
KARCH_ARCH_I386 00189
#else 00190
#define
KARCH_CPU_IA32 KARCH_ARCH_I286 00191
#endif
00192
#endif 00193
#if !defined(KARCH_ARCH_IA32)
00194
#define KARCH_ARCH_IA32 KARCH_CPU_IA32
00195
#elif (KARCH_ARCH_IA32 < KARCH_CPU_IA32)
00196
#error "Selected architecture doesn't support
selected instruction set" 00197
#endif
00198
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMII) 00199
#define KARCH_CPU_IA32_MMX
00200
#endif 00201
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMIII) 00202
#define
KARCH_CPU_IA32_SIMD 00203
#endif 00204
#else 00205
#error
"Compiler not supported" 00206
#endif
00207
#if defined(_M_IX86) 00208
#define
KARCH_ARCH_IA32 _M_IX86 00209
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII // to force a minimum of
PENTIUM II 00210
#if !defined(KARCH_CPU_IA32)
00211
#if (KARCH_ARCH_IA32 >=
KARCH_ARCH_PENTIUM) 00212
#define KARCH_CPU_IA32
KARCH_ARCH_PENTIUM 00213
#else 00214
#define
KARCH_CPU_IA32 KARCH_ARCH_IA32 00215
#endif
00216
#endif 00217
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMII) 00218
#define KARCH_CPU_IA32_MMX
00219
#endif 00220
#if (KARCH_CPU_IA32 >=
KARCH_ARCH_PENTIUMIII) 00221
#define
KARCH_CPU_IA32_SIMD 00222
#endif 00223
#elif
defined(_M_X64) 00224
#define KARCH_ARCH_X64 _M_X64
00225
#define KARCH_CPU_X64 KARCH_ARCH_AMD64
00226
#define KARCH_ENV_WIN64 _WIN64 00227
#define
KARCH_ARCH_NATIVE64 1 00228
#elif defined(_M_IA64) 00229
#define
KARCH_ARCH_IA64 _M_IA64 00230
#define
KARCH_CPU_IA64 KARCH_ARCH_ITANIUM 00231
#define
KARCH_ENV_WIN64 _WIN64 00232
#define
KARCH_ARCH_NATIVE64 1 00233
#else 00234
#error "Architecture
not supported" 00235
#endif 00236
#elif
defined(__MACH__) 00237
00238
#if defined(__i386__) 00239
#define
KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00240
#define
KARCH_ARCH_IA32 KARCH_CPU_IA32 00241
#elif
defined(__x86_64__) 00242
#define KARCH_ARCH_X64 _M_X64
00243
#define KARCH_ARCH_NATIVE64 1 00244
#else 00245
#define KARCH_ARCH_POWERPC
00246
#define KARCH_CPU_POWERPC 00247
#endif
00248
00249
#define
KARCH_DEV_MACOSX 00250
#define KARCH_DEV_GNUC_MACOSX
00251
#define KARCH_ENV_MACOSX 00252
#define
KARCH_DEV_GNUC __GNUC__ 00253
#define
KARCH_ENV_UNIX 1 00254
#define KARCH_ENV_POSIX 1
00255
00256
#else 00257
#error
"Environment not supported" 00258
#endif
00259
00260
#endif
Please send
us your comments about this page.