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
00089 #if defined(CPU_ARM_AT91)
00090 #if CPU_ARM_AT91SAM7S32 + CPU_ARM_AT91SAM7S64 \
00091 + CPU_ARM_AT91SAM7S128 + CPU_ARM_AT91SAM7S256 \
00092 + CPU_ARM_AT91SAM7X128 + CPU_ARM_AT91SAM7X256 != 1
00093 #error ARM CPU configuration error
00094 #endif
00095
00096
00097 #else
00098 #define CPU_ARM_AT91 0
00099 #endif
00100
00101
00102 #if CPU_ARM_AT91 + 0 != 1
00103 #error ARM CPU configuration error
00104 #endif
00105 #else
00106 #define CPU_ARM 0
00107
00108
00109 #define CPU_ARM_AT91 0
00110
00111
00112 #define CPU_ARM_AT91SAM7S32 0
00113 #define CPU_ARM_AT91SAM7S64 0
00114 #define CPU_ARM_AT91SAM7S128 0
00115 #define CPU_ARM_AT91SAM7S256 0
00116 #define CPU_ARM_AT91SAM7X128 0
00117 #define CPU_ARM_AT91SAM7X256 0
00118 #endif
00119
00120 #if (defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)) \
00121 && !defined(__ARM4TM__)
00122 #warning Assuming CPU is I196
00123 #define CPU_I196 1
00124 #define CPU_ID i196
00125 #else
00126 #define CPU_I196 0
00127 #endif
00128
00129 #if defined(__i386__) \
00130 || (defined(_M_IX86) && !defined(_WIN64))
00131 #define CPU_X86 1
00132 #define CPU_X86_32 1
00133 #define CPU_X86_64 0
00134 #define CPU_ID x86
00135 #elif defined(__x86_64__) \
00136 || (defined(_M_IX86) && defined(_WIN64))
00137 #define CPU_X86 1
00138 #define CPU_X86_32 0
00139 #define CPU_X86_64 1
00140 #define CPU_ID x86
00141 #else
00142 #define CPU_X86 0
00143 #define CPU_I386 0
00144 #define CPU_X86_64 0
00145 #endif
00146
00147 #if defined (_ARCH_PPC) || defined(_ARCH_PPC64)
00148 #define CPU_PPC 1
00149 #define CPU_ID ppc
00150 #if defined(_ARCH_PPC)
00151 #define CPU_PPC32 1
00152 #else
00153 #define CPU_PPC32 0
00154 #endif
00155 #if defined(_ARCH_PPC64)
00156 #define CPU_PPC64 1
00157 #else
00158 #define CPU_PPC64 0
00159 #endif
00160 #else
00161 #define CPU_PPC 0
00162 #define CPU_PPC32 0
00163 #define CPU_PPC64 0
00164 #endif
00165
00166 #if defined(__m56800E__) || defined(__m56800__)
00167 #define CPU_DSP56K 1
00168 #define CPU_ID dsp56k
00169 #else
00170 #define CPU_DSP56K 0
00171 #endif
00172
00173 #if defined (__AVR__)
00174 #define CPU_AVR 1
00175 #define CPU_ID avr
00176
00177 #if defined(__AVR_ATmega64__)
00178 #define CPU_AVR_ATMEGA64 1
00179 #else
00180 #define CPU_AVR_ATMEGA64 0
00181 #endif
00182
00183 #if defined(__AVR_ATmega103__)
00184 #define CPU_AVR_ATMEGA103 1
00185 #else
00186 #define CPU_AVR_ATMEGA103 0
00187 #endif
00188
00189 #if defined(__AVR_ATmega128__)
00190 #define CPU_AVR_ATMEGA128 1
00191 #else
00192 #define CPU_AVR_ATMEGA128 0
00193 #endif
00194
00195 #if defined(__AVR_ATmega8__)
00196 #define CPU_AVR_ATMEGA8 1
00197 #else
00198 #define CPU_AVR_ATMEGA8 0
00199 #endif
00200
00201 #if defined(__AVR_ATmega168__)
00202 #define CPU_AVR_ATMEGA168 1
00203 #else
00204 #define CPU_AVR_ATMEGA168 0
00205 #endif
00206
00207 #if defined(__AVR_ATmega1281__)
00208 #define CPU_AVR_ATMEGA1281 1
00209 #else
00210 #define CPU_AVR_ATMEGA1281 0
00211 #endif
00212
00213 #if CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
00214 + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
00215 #error AVR CPU configuration error
00216 #endif
00217 #else
00218 #define CPU_AVR 0
00219 #define CPU_AVR_ATMEGA8 0
00220 #define CPU_AVR_ATMEGA168 0
00221 #define CPU_AVR_ATMEGA64 0
00222 #define CPU_AVR_ATMEGA103 0
00223 #define CPU_AVR_ATMEGA128 0
00224 #define CPU_AVR_ATMEGA1281 0
00225 #endif
00226
00227
00228
00229 #if CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR == 0
00230 #error Unknown CPU
00231 #elif !defined(CPU_ID)
00232 #error CPU_ID not defined
00233 #elif CPU_ARM + CPU_I196 + CPU_X86 + CPU_PPC + CPU_DSP56K + CPU_AVR != 1
00234 #error Internal CPU configuration error
00235 #endif
00236
00237
00238 #endif