detect.h
Go to the documentation of this file.00001
00036 #ifndef CPU_DETECT_H
00037 #define CPU_DETECT_H
00038
00039 #if defined(__arm__) \
00040 || defined(__ARM4TM__)
00041 #define CPU_ARM 1
00042 #define CPU_ID arm
00043
00044
00045 #if defined(__ARM_AT91SAM7S32__)
00046 #define CPU_ARM_AT91 1
00047 #define CPU_ARM_AT91SAM7S32 1
00048 #else
00049 #define CPU_ARM_AT91SAM7S32 0
00050 #endif
00051
00052 #if defined(__ARM_AT91SAM7S64__)
00053 #define CPU_ARM_AT91 1
00054 #define CPU_ARM_SAM7S_LARGE 1
00055 #define CPU_ARM_AT91SAM7S64 1
00056 #else
00057 #define CPU_ARM_AT91SAM7S64 0
00058 #endif
00059
00060 #if defined(__ARM_AT91SAM7S128__)
00061 #define CPU_ARM_AT91 1
00062 #define CPU_ARM_SAM7S_LARGE 1
00063 #define CPU_ARM_AT91SAM7S128 1
00064 #else
00065 #define CPU_ARM_AT91SAM7S128 0
00066 #endif
00067
00068 #if defined(__ARM_AT91SAM7S256__)
00069 #define CPU_ARM_AT91 1
00070 #define CPU_ARM_SAM7S_LARGE 1
00071 #define CPU_ARM_AT91SAM7S256 1
00072 #else
00073 #define CPU_ARM_AT91SAM7S256 0
00074 #endif
00075
00076 #if defined(__ARM_AT91SAM7S512__)
00077 #define CPU_ARM_AT91 1
00078 #define CPU_ARM_SAM7S_LARGE 1
00079 #define CPU_ARM_AT91SAM7S512 1
00080 #else
00081 #define CPU_ARM_AT91SAM7S512 0
00082 #endif
00083
00084
00085 #if defined(__ARM_AT91SAM7X128__)
00086 #define CPU_ARM_AT91 1
00087 #define CPU_ARM_SAM7X 1
00088 #define CPU_ARM_AT91SAM7X128 1
00089 #else
00090 #define CPU_ARM_AT91SAM7X128 0
00091 #endif
00092
00093 #if defined(__ARM_AT91SAM7X256__)
00094 #define CPU_ARM_AT91 1
00095 #define CPU_ARM_SAM7X 1
00096 #define CPU_ARM_AT91SAM7X256 1
00097 #else
00098 #define CPU_ARM_AT91SAM7X256 0
00099 #endif
00100
00101
00102 #if defined(__ARM_AT91SAM7X512__)
00103 #define CPU_ARM_AT91 1
00104 #define CPU_ARM_SAM7X 1
00105 #define CPU_ARM_AT91SAM7X512 1
00106 #else
00107 #define CPU_ARM_AT91SAM7X512 0
00108 #endif
00109
00110 #if defined (__ARM_LM3S1968__)
00111 #define CPU_ARM_LM3S 1
00112 #define CPU_ARM_LM3S1968 1
00113 #else
00114 #define CPU_ARM_LM3S1968 0
00115 #endif
00116
00117 #if !defined(CPU_ARM_SAM7S_LARGE)
00118 #define CPU_ARM_SAM7S_LARGE 0
00119 #endif
00120
00121 #if !defined(CPU_ARM_SAM7X)
00122 #define CPU_ARM_SAM7X 0
00123 #endif
00124
00125
00126 #if defined(CPU_ARM_AT91)
00127 #if CPU_ARM_AT91SAM7S32 + CPU_ARM_AT91SAM7S64 \
00128 + CPU_ARM_AT91SAM7S128 + CPU_ARM_AT91SAM7S256 \
00129 + CPU_ARM_AT91SAM7S512 \
00130 + CPU_ARM_AT91SAM7X128 + CPU_ARM_AT91SAM7X256 \
00131 + CPU_ARM_AT91SAM7X512 != 1
00132 #error ARM CPU configuration error
00133 #endif
00134 #define CPU_ARM_LM3S 0
00135
00136 #elif defined (CPU_ARM_LM3S)
00137 #if CPU_ARM_LM3S1968 + 0 != 1
00138 #error Luminary ARM CPU configuration error
00139 #endif
00140 #define CPU_ARM_AT91 0
00141
00142 #else
00143 #define CPU_ARM_AT91 0
00144 #define CPU_ARM_LM3S 0
00145 #endif
00146
00147
00148 #if CPU_ARM_AT91 + CPU_ARM_LM3S + 0 != 1
00149 #error ARM CPU configuration error
00150 #endif
00151 #else
00152 #define CPU_ARM 0
00153
00154
00155 #define CPU_ARM_AT91 0
00156 #define CPU_ARM_LM3S 0
00157
00158
00159 #define CPU_ARM_SAM7S_LARGE 0
00160 #define CPU_ARM_SAM7X 0
00161
00162
00163 #define CPU_ARM_AT91SAM7S32 0
00164 #define CPU_ARM_AT91SAM7S64 0
00165 #define CPU_ARM_AT91SAM7S128 0
00166 #define CPU_ARM_AT91SAM7S256 0
00167 #define CPU_ARM_AT91SAM7S512 0
00168 #define CPU_ARM_AT91SAM7X128 0
00169 #define CPU_ARM_AT91SAM7X256 0
00170 #define CPU_ARM_AT91SAM7X512 0
00171
00172 #define CPU_ARM_LM3S1968 0
00173 #endif
00174
00175 #if (defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)) \
00176 && !defined(__ARM4TM__)
00177 #warning Assuming CPU is I196
00178 #define CPU_I196 1
00179 #define CPU_ID i196
00180 #else
00181 #define CPU_I196 0
00182 #endif
00183
00184 #if defined(__i386__) \
00185 || (defined(_M_IX86) && !defined(_WIN64))
00186 #define CPU_X86 1
00187 #define CPU_X86_32 1
00188 #define CPU_X86_64 0
00189 #define CPU_ID x86
00190 #elif defined(__x86_64__) \
00191 || (defined(_M_IX86) && defined(_WIN64))
00192 #define CPU_X86 1
00193 #define CPU_X86_32 0
00194 #define CPU_X86_64 1
00195 #define CPU_ID x86
00196 #else
00197 #define CPU_X86 0
00198 #define CPU_I386 0
00199 #define CPU_X86_64 0
00200 #endif
00201
00202 #if defined (_ARCH_PPC) || defined(_ARCH_PPC64)
00203 #define CPU_PPC 1
00204 #define CPU_ID ppc
00205 #if defined(_ARCH_PPC)
00206 #define CPU_PPC32 1
00207 #else
00208 #define CPU_PPC32 0
00209 #endif
00210 #if defined(_ARCH_PPC64)
00211 #define CPU_PPC64 1
00212 #else
00213 #define CPU_PPC64 0
00214 #endif
00215 #else
00216 #define CPU_PPC 0
00217 #define CPU_PPC32 0
00218 #define CPU_PPC64 0
00219 #endif
00220
00221 #if defined(__m56800E__) || defined(__m56800__)
00222 #define CPU_DSP56K 1
00223 #define CPU_ID dsp56k
00224 #else
00225 #define CPU_DSP56K 0
00226 #endif
00227
00228 #if defined (__AVR__)
00229 #define CPU_AVR 1
00230 #define CPU_ID avr
00231
00232 #if defined(__AVR_ATmega32__)
00233 #define CPU_AVR_ATMEGA32 1
00234 #else
00235 #define CPU_AVR_ATMEGA32 0
00236 #endif
00237
00238 #if defined(__AVR_ATmega64__)
00239 #define CPU_AVR_ATMEGA64 1
00240 #else
00241 #define CPU_AVR_ATMEGA64 0
00242 #endif
00243
00244 #if defined(__AVR_ATmega103__)
00245 #define CPU_AVR_ATMEGA103 1
00246 #else
00247 #define CPU_AVR_ATMEGA103 0
00248 #endif
00249
00250 #if defined(__AVR_ATmega128__)
00251 #define CPU_AVR_ATMEGA128 1
00252 #else
00253 #define CPU_AVR_ATMEGA128 0
00254 #endif
00255
00256 #if defined(__AVR_ATmega8__)
00257 #define CPU_AVR_ATMEGA8 1
00258 #else
00259 #define CPU_AVR_ATMEGA8 0
00260 #endif
00261
00262 #if defined(__AVR_ATmega168__)
00263 #define CPU_AVR_ATMEGA168 1
00264 #else
00265 #define CPU_AVR_ATMEGA168 0
00266 #endif
00267
00268 #if defined(__AVR_ATmega1281__)
00269 #define CPU_AVR_ATMEGA1281 1
00270 #else
00271 #define CPU_AVR_ATMEGA1281 0
00272 #endif
00273
00274 #if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
00275 + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
00276 #error AVR CPU configuration error
00277 #endif
00278 #else
00279 #define CPU_AVR 0
00280 #define CPU_AVR_ATMEGA8 0
00281 #define CPU_AVR_ATMEGA168 0
00282 #define CPU_AVR_ATMEGA32 0
00283 #define CPU_AVR_ATMEGA64 0
00284 #define CPU_AVR_ATMEGA103 0
00285 #define CPU_AVR_ATMEGA128 0
00286 #define CPU_AVR_ATMEGA1281 0
00287 #endif
00288
00289
00290
00291 #if CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR == 0
00292 #error Unknown CPU
00293 #elif !defined(CPU_ID)
00294 #error CPU_ID not defined
00295 #elif CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR != 1
00296 #error Internal CPU configuration error
00297 #endif
00298
00299
00300 #endif