Initial support for ATmega328P (Arduino Duemilanove).
[bertos.git] / bertos / cpu / detect.h
index 3b9ac1cf90bf3ae7032a6a242ac0ab0a6248f6fd..c6de054b189732fcbec2a8d0507232dffde62bf1 100644 (file)
@@ -51,6 +51,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 +59,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(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
 
+       #elif defined (CPU_ARM_LM3S)
+               #if CPU_ARM_LM3S1968 + 0 != 1
+                       #error Luminary ARM CPU configuration error
+               #endif
+               #define CPU_ARM_AT91        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
        #endif
 
 
 
        /* ARM Families */
        #define CPU_ARM_AT91            0
+       #define CPU_ARM_LM3S            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
 #endif
 
 #if (defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)) \
        #define CPU_AVR                 1
        #define CPU_ID                  avr
 
+       #if defined(__AVR_ATmega32__)
+               #define CPU_AVR_ATMEGA32    1
+       #else
+               #define CPU_AVR_ATMEGA32    0
+       #endif
+
        #if defined(__AVR_ATmega64__)
                #define CPU_AVR_ATMEGA64    1
        #else
                #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
                #define CPU_AVR_ATMEGA1281  0
        #endif
 
-       #if CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
-         + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
+       #if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
+         + 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
        #define CPU_AVR_ATMEGA128       0