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_AT91SAM7S64 1
00055 #else
00056 #define CPU_ARM_AT91SAM7S64 0
00057 #endif
00058
00059 #if defined(__ARM_AT91SAM7S128__)
00060 #define CPU_ARM_AT91 1
00061 #define CPU_ARM_AT91SAM7S128 1
00062 #else
00063 #define CPU_ARM_AT91SAM7S128 0
00064 #endif
00065
00066 #if defined(__ARM_AT91SAM7S256__)
00067 #define CPU_ARM_AT91 1
00068 #define CPU_ARM_AT91SAM7S256 1
00069 #else
00070 #define CPU_ARM_AT91SAM7S256 0
00071 #endif
00072
00073
00074 #if defined(__ARM_AT91SAM7X128__)
00075 #define CPU_ARM_AT91 1
00076 #define CPU_ARM_AT91SAM7X128 1
00077 #else
00078 #define CPU_ARM_AT91SAM7X128 0
00079 #endif
00080
00081 #if defined(__ARM_AT91SAM7X256__)
00082 #define CPU_ARM_AT91 1
00083 #define CPU_ARM_AT91SAM7X256 1
00084 #else
00085 #define CPU_ARM_AT91SAM7X256 0
00086 #endif
00087
00088 #if defined (__ARM_LM3S1968__)
00089 #define CPU_ARM_LM3S 1
00090 #define CPU_ARM_LM3S1968 1
00091 #else
00092 #define CPU_ARM_LM3S1968 0
00093 #endif
00094
00095
00096
00097 #if defined(CPU_ARM_AT91)
00098 #if CPU_ARM_AT91SAM7S32 + CPU_ARM_AT91SAM7S64 \
00099 + CPU_ARM_AT91SAM7S128 + CPU_ARM_AT91SAM7S256 \
00100 + CPU_ARM_AT91SAM7X128 + CPU_ARM_AT91SAM7X256 != 1
00101 #error ARM CPU configuration error
00102 #endif
00103 #define CPU_ARM_LM3S 0
00104
00105 #elif defined (CPU_ARM_LM3S)
00106 #if CPU_ARM_LM3S1968 + 0 != 1
00107 #error Luminary ARM CPU configuration error
00108 #endif
00109 #define CPU_ARM_AT91 0
00110
00111 #else
00112 #define CPU_ARM_AT91 0
00113 #define CPU_ARM_LM3S 0
00114 #endif
00115
00116
00117 #if CPU_ARM_AT91 + CPU_ARM_LM3S + 0 != 1
00118 #error ARM CPU configuration error
00119 #endif
00120 #else
00121 #define CPU_ARM 0
00122
00123
00124 #define CPU_ARM_AT91 0
00125 #define CPU_ARM_LM3S 0
00126
00127
00128 #define CPU_ARM_AT91SAM7S32 0
00129 #define CPU_ARM_AT91SAM7S64 0
00130 #define CPU_ARM_AT91SAM7S128 0
00131 #define CPU_ARM_AT91SAM7S256 0
00132 #define CPU_ARM_AT91SAM7X128 0
00133 #define CPU_ARM_AT91SAM7X256 0
00134
00135 #define CPU_ARM_LM3S1968 0
00136 #endif
00137
00138 #if (defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)) \
00139 && !defined(__ARM4TM__)
00140 #warning Assuming CPU is I196
00141 #define CPU_I196 1
00142 #define CPU_ID i196
00143 #else
00144 #define CPU_I196 0
00145 #endif
00146
00147 #if defined(__i386__) \
00148 || (defined(_M_IX86) && !defined(_WIN64))
00149 #define CPU_X86 1
00150 #define CPU_X86_32 1
00151 #define CPU_X86_64 0
00152 #define CPU_ID x86
00153 #elif defined(__x86_64__) \
00154 || (defined(_M_IX86) && defined(_WIN64))
00155 #define CPU_X86 1
00156 #define CPU_X86_32 0
00157 #define CPU_X86_64 1
00158 #define CPU_ID x86
00159 #else
00160 #define CPU_X86 0
00161 #define CPU_I386 0
00162 #define CPU_X86_64 0
00163 #endif
00164
00165 #if defined (_ARCH_PPC) || defined(_ARCH_PPC64)
00166 #define CPU_PPC 1
00167 #define CPU_ID ppc
00168 #if defined(_ARCH_PPC)
00169 #define CPU_PPC32 1
00170 #else
00171 #define CPU_PPC32 0
00172 #endif
00173 #if defined(_ARCH_PPC64)
00174 #define CPU_PPC64 1
00175 #else
00176 #define CPU_PPC64 0
00177 #endif
00178 #else
00179 #define CPU_PPC 0
00180 #define CPU_PPC32 0
00181 #define CPU_PPC64 0
00182 #endif
00183
00184 #if defined(__m56800E__) || defined(__m56800__)
00185 #define CPU_DSP56K 1
00186 #define CPU_ID dsp56k
00187 #else
00188 #define CPU_DSP56K 0
00189 #endif
00190
00191 #if defined (__AVR__)
00192 #define CPU_AVR 1
00193 #define CPU_ID avr
00194
00195 #if defined(__AVR_ATmega32__)
00196 #define CPU_AVR_ATMEGA32 1
00197 #else
00198 #define CPU_AVR_ATMEGA32 0
00199 #endif
00200
00201 #if defined(__AVR_ATmega64__)
00202 #define CPU_AVR_ATMEGA64 1
00203 #else
00204 #define CPU_AVR_ATMEGA64 0
00205 #endif
00206
00207 #if defined(__AVR_ATmega103__)
00208 #define CPU_AVR_ATMEGA103 1
00209 #else
00210 #define CPU_AVR_ATMEGA103 0
00211 #endif
00212
00213 #if defined(__AVR_ATmega128__)
00214 #define CPU_AVR_ATMEGA128 1
00215 #else
00216 #define CPU_AVR_ATMEGA128 0
00217 #endif
00218
00219 #if defined(__AVR_ATmega8__)
00220 #define CPU_AVR_ATMEGA8 1
00221 #else
00222 #define CPU_AVR_ATMEGA8 0
00223 #endif
00224
00225 #if defined(__AVR_ATmega168__)
00226 #define CPU_AVR_ATMEGA168 1
00227 #else
00228 #define CPU_AVR_ATMEGA168 0
00229 #endif
00230
00231 #if defined(__AVR_ATmega1281__)
00232 #define CPU_AVR_ATMEGA1281 1
00233 #else
00234 #define CPU_AVR_ATMEGA1281 0
00235 #endif
00236
00237 #if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
00238 + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
00239 #error AVR CPU configuration error
00240 #endif
00241 #else
00242 #define CPU_AVR 0
00243 #define CPU_AVR_ATMEGA8 0
00244 #define CPU_AVR_ATMEGA168 0
00245 #define CPU_AVR_ATMEGA32 0
00246 #define CPU_AVR_ATMEGA64 0
00247 #define CPU_AVR_ATMEGA103 0
00248 #define CPU_AVR_ATMEGA128 0
00249 #define CPU_AVR_ATMEGA1281 0
00250 #endif
00251
00252
00253
00254 #if CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR == 0
00255 #error Unknown CPU
00256 #elif !defined(CPU_ID)
00257 #error CPU_ID not defined
00258 #elif CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR != 1
00259 #error Internal CPU configuration error
00260 #endif
00261
00262
00263 #endif