ARM: add LM3S Cortex-M3 core family detection.
[bertos.git] / bertos / cpu / detect.h
index f37d952574038199116e9de25d6051051e1a0367..3c4712d25f1fd72f8fbcfcd7657f75274a05d0b3 100644 (file)
 #if defined(__arm__) /* GCC */ \
        || defined(__ARM4TM__) /* IAR: defined for all cores >= 4tm */
        #define CPU_ARM                 1
-       #define CPU_ID                  arm
+
+       // Cortex-M3 core family
+       #if defined(__ARM_LM3S1968__)
+               #define CPU_ID                  lm3s
+       #else
+               #define CPU_ID                  arm
+       #endif
 
        // AT91SAM7S core family
        #if defined(__ARM_AT91SAM7S32__)
@@ -51,6 +57,7 @@
 
        #if defined(__ARM_AT91SAM7S64__)
                #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7S_LARGE  1
                #define CPU_ARM_AT91SAM7S64  1
        #else
                #define CPU_ARM_AT91SAM7S64  0
@@ -58,6 +65,7 @@
 
        #if defined(__ARM_AT91SAM7S128__)
                #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7S_LARGE  1
                #define CPU_ARM_AT91SAM7S128 1
        #else
                #define CPU_ARM_AT91SAM7S128 0
 
        #if defined(__ARM_AT91SAM7S256__)
                #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7S_LARGE  1
                #define CPU_ARM_AT91SAM7S256 1
        #else
                #define CPU_ARM_AT91SAM7S256 0
        #endif
 
+       #if defined(__ARM_AT91SAM7S512__)
+               #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7S_LARGE  1
+               #define CPU_ARM_AT91SAM7S512 1
+       #else
+               #define CPU_ARM_AT91SAM7S512 0
+       #endif
+
        // AT91SAM7X core family
        #if defined(__ARM_AT91SAM7X128__)
                #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7X        1
                #define CPU_ARM_AT91SAM7X128 1
        #else
                #define CPU_ARM_AT91SAM7X128 0
 
        #if defined(__ARM_AT91SAM7X256__)
                #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7X        1
                #define CPU_ARM_AT91SAM7X256 1
        #else
                #define CPU_ARM_AT91SAM7X256 0
        #endif
 
 
+       #if defined(__ARM_AT91SAM7X512__)
+               #define CPU_ARM_AT91         1
+               #define CPU_ARM_SAM7X        1
+               #define CPU_ARM_AT91SAM7X512 1
+       #else
+               #define CPU_ARM_AT91SAM7X512 0
+       #endif
+
+       #if defined (__ARM_LM3S1968__)
+               #define CPU_ARM_LM3S        1
+               #define CPU_ARM_LM3S1968    1
+       #else
+               #define CPU_ARM_LM3S1968    0
+       #endif
+
+       #if defined(__ARM_LPC2378__)
+               #define CPU_ARM_LPC2        1
+               #define CPU_ARM_LPC2378     1
+       #else
+               #define CPU_ARM_LPC2378     0
+       #endif  
+
+       #if !defined(CPU_ARM_SAM7S_LARGE)
+               #define CPU_ARM_SAM7S_LARGE 0
+       #endif
+
+       #if !defined(CPU_ARM_SAM7X)
+               #define CPU_ARM_SAM7X 0
+       #endif
+
+
        #if defined(CPU_ARM_AT91)
                #if CPU_ARM_AT91SAM7S32 + CPU_ARM_AT91SAM7S64 \
                + CPU_ARM_AT91SAM7S128 + CPU_ARM_AT91SAM7S256 \
-               + CPU_ARM_AT91SAM7X128 + CPU_ARM_AT91SAM7X256 != 1
+               + CPU_ARM_AT91SAM7S512 \
+               + CPU_ARM_AT91SAM7X128 + CPU_ARM_AT91SAM7X256 \
+               + CPU_ARM_AT91SAM7X512 != 1
                        #error ARM CPU configuration error
                #endif
+               #define CPU_ARM_LM3S        0
+               #define CPU_ARM_LPC2        0
 
+       #elif defined (CPU_ARM_LM3S)
+               #if CPU_ARM_LM3S1968 + 0 != 1
+                       #error Luminary ARM CPU configuration error
+               #endif
+               #define CPU_ARM_AT91        0
+               #define CPU_ARM_LPC2        0
+       #elif defined (CPU_ARM_LPC2)
+               
+               #if CPU_ARM_LPC2378 + 0 != 1
+                       #error NXP LPC2xxx ARM CPU configuration error
+               #endif
+               #define CPU_ARM_AT91        0
+               #define CPU_ARM_LM3S        0
        /* #elif Add other ARM families here */
-       #elif defined (__ARM_LM3S1968__)
-               #define CPU_ARM_LM3S            1
-               #define CPU_ARM_LM3S1968        1
-
-
        #else
-               #define CPU_ARM_AT91         0
+               #define CPU_ARM_AT91        0
+               #define CPU_ARM_LM3S        0
+               #define CPU_ARM_LPC2        0
        #endif
 
 
-       #if CPU_ARM_AT91 + CPU_ARM_LM3S + 0 /* Add other ARM families here */ != 1
+       #if CPU_ARM_AT91 + CPU_ARM_LM3S \
+               + CPU_ARM_LPC2 + 0 /* Add other ARM families here */ != 1
                #error ARM CPU configuration error
        #endif
 #else
 
        /* ARM Families */
        #define CPU_ARM_AT91            0
+       #define CPU_ARM_LM3S            0
+       #define CPU_ARM_LPC2            0
+
+       /* SAM7 sub-families */
+       #define CPU_ARM_SAM7S_LARGE     0
+       #define CPU_ARM_SAM7X           0
 
        /* ARM CPUs */
        #define CPU_ARM_AT91SAM7S32     0
        #define CPU_ARM_AT91SAM7S64     0
        #define CPU_ARM_AT91SAM7S128    0
        #define CPU_ARM_AT91SAM7S256    0
+       #define CPU_ARM_AT91SAM7S512    0
        #define CPU_ARM_AT91SAM7X128    0
        #define CPU_ARM_AT91SAM7X256    0
+       #define CPU_ARM_AT91SAM7X512    0
+
+       #define CPU_ARM_LM3S1968        0
+
+       #define CPU_ARM_LPC2378         0
 #endif
 
 #if (defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)) \
                #define CPU_AVR_ATMEGA168   0
        #endif
 
+       #if defined(__AVR_ATmega328P__)
+               #define CPU_AVR_ATMEGA328P   1
+       #else
+               #define CPU_AVR_ATMEGA328P   0
+       #endif
+
        #if defined(__AVR_ATmega1281__)
                #define CPU_AVR_ATMEGA1281  1
        #else
        #endif
 
        #if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
-         + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
+         + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA328P + CPU_AVR_ATMEGA1281 != 1
                #error AVR CPU configuration error
        #endif
 #else
        #define CPU_AVR                 0
        #define CPU_AVR_ATMEGA8         0
        #define CPU_AVR_ATMEGA168       0
+       #define CPU_AVR_ATMEGA328P      0
        #define CPU_AVR_ATMEGA32        0
        #define CPU_AVR_ATMEGA64        0
        #define CPU_AVR_ATMEGA103       0