aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2007-04-16 17:50:26 +0000
committerAnatoly Sokolov <aesok@post.ru>2007-04-16 17:50:26 +0000
commitd132401e8eeae036c6faca4a53d241afcbee9bfa (patch)
tree4c56eb353f44e52ed39e29526d1a1d307b5dac21
parenta83da35cf8b0129e245457939b455f05adde8f3e (diff)
* config/avr/avr.c (avr_arch_types): Rearranging array.
(enum avr_arch): Add. (avr_mcu_types): Use avr_arch enumeration constants instead of numbers. * config/avr/avr.h (LINK_SPEC): Simplify. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@123882 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/avr/avr.c202
-rw-r--r--gcc/config/avr/avr.h12
3 files changed, 119 insertions, 103 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9a7c3cc85ef..f94cf97baaf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2007-04-16 Anatoly Sokolov <aesok@post.ru>
+
+ * config/avr/avr.c (avr_arch_types): Rearranging array.
+ (enum avr_arch): Add.
+ (avr_mcu_types): Use avr_arch enumeration constants instead of
+ numbers.
+ * config/avr/avr.h (LINK_SPEC): Simplify.
+
2007-04-16 Kazu Hirata <kazu@codesourcery.com>
* config/m68k/m68k.c (m68k_libcall_value,
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index bafaa5d4bab..3980ca98d47 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -141,10 +141,24 @@ static const struct base_arch_s avr_arch_types[] = {
{ 1, 0, 0, 0, NULL }, /* unknown device specified */
{ 1, 0, 0, 0, "__AVR_ARCH__=1" },
{ 0, 0, 0, 0, "__AVR_ARCH__=2" },
+ { 0, 0, 0, 1, "__AVR_ARCH__=25"},
{ 0, 0, 1, 0, "__AVR_ARCH__=3" },
{ 0, 1, 0, 1, "__AVR_ARCH__=4" },
- { 0, 1, 1, 1, "__AVR_ARCH__=5" },
- { 0, 0, 0, 1, "__AVR_ARCH__=25"}
+ { 0, 1, 1, 1, "__AVR_ARCH__=5" }
+};
+
+/* These names are used as the index into the avr_arch_types[] table
+ above. */
+
+enum avr_arch
+{
+ ARCH_UNKNOWN,
+ ARCH_AVR1,
+ ARCH_AVR2,
+ ARCH_AVR25,
+ ARCH_AVR3,
+ ARCH_AVR4,
+ ARCH_AVR5
};
struct mcu_type_s {
@@ -164,103 +178,103 @@ struct mcu_type_s {
static const struct mcu_type_s avr_mcu_types[] = {
/* Classic, <= 8K. */
- { "avr2", 2, NULL },
- { "at90s2313", 2, "__AVR_AT90S2313__" },
- { "at90s2323", 2, "__AVR_AT90S2323__" },
- { "at90s2333", 2, "__AVR_AT90S2333__" },
- { "at90s2343", 2, "__AVR_AT90S2343__" },
- { "attiny22", 2, "__AVR_ATtiny22__" },
- { "attiny26", 2, "__AVR_ATtiny26__" },
- { "at90s4414", 2, "__AVR_AT90S4414__" },
- { "at90s4433", 2, "__AVR_AT90S4433__" },
- { "at90s4434", 2, "__AVR_AT90S4434__" },
- { "at90s8515", 2, "__AVR_AT90S8515__" },
- { "at90c8534", 2, "__AVR_AT90C8534__" },
- { "at90s8535", 2, "__AVR_AT90S8535__" },
+ { "avr2", ARCH_AVR2, NULL },
+ { "at90s2313", ARCH_AVR2, "__AVR_AT90S2313__" },
+ { "at90s2323", ARCH_AVR2, "__AVR_AT90S2323__" },
+ { "at90s2333", ARCH_AVR2, "__AVR_AT90S2333__" },
+ { "at90s2343", ARCH_AVR2, "__AVR_AT90S2343__" },
+ { "attiny22", ARCH_AVR2, "__AVR_ATtiny22__" },
+ { "attiny26", ARCH_AVR2, "__AVR_ATtiny26__" },
+ { "at90s4414", ARCH_AVR2, "__AVR_AT90S4414__" },
+ { "at90s4433", ARCH_AVR2, "__AVR_AT90S4433__" },
+ { "at90s4434", ARCH_AVR2, "__AVR_AT90S4434__" },
+ { "at90s8515", ARCH_AVR2, "__AVR_AT90S8515__" },
+ { "at90c8534", ARCH_AVR2, "__AVR_AT90C8534__" },
+ { "at90s8535", ARCH_AVR2, "__AVR_AT90S8535__" },
/* Classic + MOVW, <= 8K. */
- { "avr25", 6, NULL },
- { "attiny13", 6, "__AVR_ATtiny13__" },
- { "attiny2313", 6, "__AVR_ATtiny2313__" },
- { "attiny24", 6, "__AVR_ATtiny24__" },
- { "attiny44", 6, "__AVR_ATtiny44__" },
- { "attiny84", 6, "__AVR_ATtiny84__" },
- { "attiny25", 6, "__AVR_ATtiny25__" },
- { "attiny45", 6, "__AVR_ATtiny45__" },
- { "attiny85", 6, "__AVR_ATtiny85__" },
- { "attiny261", 6, "__AVR_ATtiny261__" },
- { "attiny461", 6, "__AVR_ATtiny461__" },
- { "attiny861", 6, "__AVR_ATtiny861__" },
- { "at86rf401", 6, "__AVR_AT86RF401__" },
+ { "avr25", ARCH_AVR25, NULL },
+ { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__" },
+ { "attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__" },
+ { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__" },
+ { "attiny44", ARCH_AVR25, "__AVR_ATtiny44__" },
+ { "attiny84", ARCH_AVR25, "__AVR_ATtiny84__" },
+ { "attiny25", ARCH_AVR25, "__AVR_ATtiny25__" },
+ { "attiny45", ARCH_AVR25, "__AVR_ATtiny45__" },
+ { "attiny85", ARCH_AVR25, "__AVR_ATtiny85__" },
+ { "attiny261", ARCH_AVR25, "__AVR_ATtiny261__" },
+ { "attiny461", ARCH_AVR25, "__AVR_ATtiny461__" },
+ { "attiny861", ARCH_AVR25, "__AVR_ATtiny861__" },
+ { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__" },
/* Classic, > 8K. */
- { "avr3", 3, NULL },
- { "atmega103", 3, "__AVR_ATmega103__" },
- { "atmega603", 3, "__AVR_ATmega603__" },
- { "at43usb320", 3, "__AVR_AT43USB320__" },
- { "at43usb355", 3, "__AVR_AT43USB355__" },
- { "at76c711", 3, "__AVR_AT76C711__" },
+ { "avr3", ARCH_AVR3, NULL },
+ { "atmega103", ARCH_AVR3, "__AVR_ATmega103__" },
+ { "atmega603", ARCH_AVR3, "__AVR_ATmega603__" },
+ { "at43usb320", ARCH_AVR3, "__AVR_AT43USB320__" },
+ { "at43usb355", ARCH_AVR3, "__AVR_AT43USB355__" },
+ { "at76c711", ARCH_AVR3, "__AVR_AT76C711__" },
/* Enhanced, <= 8K. */
- { "avr4", 4, NULL },
- { "atmega8", 4, "__AVR_ATmega8__" },
- { "atmega48", 4, "__AVR_ATmega48__" },
- { "atmega88", 4, "__AVR_ATmega88__" },
- { "atmega8515", 4, "__AVR_ATmega8515__" },
- { "atmega8535", 4, "__AVR_ATmega8535__" },
- { "at90pwm1", 4, "__AVR_AT90PWM1__" },
- { "at90pwm2", 4, "__AVR_AT90PWM2__" },
- { "at90pwm3", 4, "__AVR_AT90PWM3__" },
- { "at90usb82", 4, "__AVR_AT90USB82__" },
+ { "avr4", ARCH_AVR4, NULL },
+ { "atmega8", ARCH_AVR4, "__AVR_ATmega8__" },
+ { "atmega48", ARCH_AVR4, "__AVR_ATmega48__" },
+ { "atmega88", ARCH_AVR4, "__AVR_ATmega88__" },
+ { "atmega8515", ARCH_AVR4, "__AVR_ATmega8515__" },
+ { "atmega8535", ARCH_AVR4, "__AVR_ATmega8535__" },
+ { "at90pwm1", ARCH_AVR4, "__AVR_AT90PWM1__" },
+ { "at90pwm2", ARCH_AVR4, "__AVR_AT90PWM2__" },
+ { "at90pwm3", ARCH_AVR4, "__AVR_AT90PWM3__" },
+ { "at90usb82", ARCH_AVR4, "__AVR_AT90USB82__" },
/* Enhanced, > 8K. */
- { "avr5", 5, NULL },
- { "atmega16", 5, "__AVR_ATmega16__" },
- { "atmega161", 5, "__AVR_ATmega161__" },
- { "atmega162", 5, "__AVR_ATmega162__" },
- { "atmega163", 5, "__AVR_ATmega163__" },
- { "atmega164p",5, "__AVR_ATmega164P__" },
- { "atmega165", 5, "__AVR_ATmega165__" },
- { "atmega165p",5, "__AVR_ATmega165P__" },
- { "atmega168", 5, "__AVR_ATmega168__" },
- { "atmega169", 5, "__AVR_ATmega169__" },
- { "atmega169p",5, "__AVR_ATmega169P__" },
- { "atmega32", 5, "__AVR_ATmega32__" },
- { "atmega323", 5, "__AVR_ATmega323__" },
- { "atmega324p",5, "__AVR_ATmega324P__" },
- { "atmega325", 5, "__AVR_ATmega325__" },
- { "atmega325p", 5, "__AVR_ATmega325P__" },
- { "atmega3250", 5, "__AVR_ATmega3250__" },
- { "atmega3250p", 5, "__AVR_ATmega3250P__" },
- { "atmega329", 5, "__AVR_ATmega329__" },
- { "atmega329p", 5, "__AVR_ATmega329P__" },
- { "atmega3290", 5, "__AVR_ATmega3290__" },
- { "atmega3290p", 5, "__AVR_ATmega3290P__" },
- { "atmega406", 5, "__AVR_ATmega406__" },
- { "atmega64", 5, "__AVR_ATmega64__" },
- { "atmega640", 5, "__AVR_ATmega640__" },
- { "atmega644", 5, "__AVR_ATmega644__" },
- { "atmega644p",5, "__AVR_ATmega644P__" },
- { "atmega645", 5, "__AVR_ATmega645__" },
- { "atmega6450", 5, "__AVR_ATmega6450__" },
- { "atmega649", 5, "__AVR_ATmega649__" },
- { "atmega6490", 5, "__AVR_ATmega6490__" },
- { "atmega128", 5, "__AVR_ATmega128__" },
- { "atmega1280",5, "__AVR_ATmega1280__" },
- { "atmega1281",5, "__AVR_ATmega1281__" },
- { "at90can32", 5, "__AVR_AT90CAN32__" },
- { "at90can64", 5, "__AVR_AT90CAN64__" },
- { "at90can128", 5, "__AVR_AT90CAN128__" },
- { "at90usb162", 5, "__AVR_AT90USB162__" },
- { "at90usb646", 5, "__AVR_AT90USB646__" },
- { "at90usb647", 5, "__AVR_AT90USB647__" },
- { "at90usb1286", 5, "__AVR_AT90USB1286__" },
- { "at90usb1287", 5, "__AVR_AT90USB1287__" },
- { "at94k", 5, "__AVR_AT94K__" },
+ { "avr5", ARCH_AVR5, NULL },
+ { "atmega16", ARCH_AVR5, "__AVR_ATmega16__" },
+ { "atmega161", ARCH_AVR5, "__AVR_ATmega161__" },
+ { "atmega162", ARCH_AVR5, "__AVR_ATmega162__" },
+ { "atmega163", ARCH_AVR5, "__AVR_ATmega163__" },
+ { "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__" },
+ { "atmega165", ARCH_AVR5, "__AVR_ATmega165__" },
+ { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__" },
+ { "atmega168", ARCH_AVR5, "__AVR_ATmega168__" },
+ { "atmega169", ARCH_AVR5, "__AVR_ATmega169__" },
+ { "atmega169p", ARCH_AVR5, "__AVR_ATmega169P__" },
+ { "atmega32", ARCH_AVR5, "__AVR_ATmega32__" },
+ { "atmega323", ARCH_AVR5, "__AVR_ATmega323__" },
+ { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__" },
+ { "atmega325", ARCH_AVR5, "__AVR_ATmega325__" },
+ { "atmega325p", ARCH_AVR5, "__AVR_ATmega325P__" },
+ { "atmega3250", ARCH_AVR5, "__AVR_ATmega3250__" },
+ { "atmega3250p", ARCH_AVR5, "__AVR_ATmega3250P__" },
+ { "atmega329", ARCH_AVR5, "__AVR_ATmega329__" },
+ { "atmega329p", ARCH_AVR5, "__AVR_ATmega329P__" },
+ { "atmega3290", ARCH_AVR5, "__AVR_ATmega3290__" },
+ { "atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__" },
+ { "atmega406", ARCH_AVR5, "__AVR_ATmega406__" },
+ { "atmega64", ARCH_AVR5, "__AVR_ATmega64__" },
+ { "atmega640", ARCH_AVR5, "__AVR_ATmega640__" },
+ { "atmega644", ARCH_AVR5, "__AVR_ATmega644__" },
+ { "atmega644p", ARCH_AVR5, "__AVR_ATmega644P__" },
+ { "atmega645", ARCH_AVR5, "__AVR_ATmega645__" },
+ { "atmega6450", ARCH_AVR5, "__AVR_ATmega6450__" },
+ { "atmega649", ARCH_AVR5, "__AVR_ATmega649__" },
+ { "atmega6490", ARCH_AVR5, "__AVR_ATmega6490__" },
+ { "atmega128", ARCH_AVR5, "__AVR_ATmega128__" },
+ { "atmega1280", ARCH_AVR5, "__AVR_ATmega1280__" },
+ { "atmega1281", ARCH_AVR5, "__AVR_ATmega1281__" },
+ { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__" },
+ { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__" },
+ { "at90can128", ARCH_AVR5, "__AVR_AT90CAN128__" },
+ { "at90usb162", ARCH_AVR5, "__AVR_AT90USB162__" },
+ { "at90usb646", ARCH_AVR5, "__AVR_AT90USB646__" },
+ { "at90usb647", ARCH_AVR5, "__AVR_AT90USB647__" },
+ { "at90usb1286", ARCH_AVR5, "__AVR_AT90USB1286__" },
+ { "at90usb1287", ARCH_AVR5, "__AVR_AT90USB1287__" },
+ { "at94k", ARCH_AVR5, "__AVR_AT94K__" },
/* Assembler only. */
- { "avr1", 1, NULL },
- { "at90s1200", 1, "__AVR_AT90S1200__" },
- { "attiny11", 1, "__AVR_ATtiny11__" },
- { "attiny12", 1, "__AVR_ATtiny12__" },
- { "attiny15", 1, "__AVR_ATtiny15__" },
- { "attiny28", 1, "__AVR_ATtiny28__" },
- { NULL, 0, NULL }
+ { "avr1", ARCH_AVR1, NULL },
+ { "at90s1200", ARCH_AVR1, "__AVR_AT90S1200__" },
+ { "attiny11", ARCH_AVR1, "__AVR_ATtiny11__" },
+ { "attiny12", ARCH_AVR1, "__AVR_ATtiny12__" },
+ { "attiny15", ARCH_AVR1, "__AVR_ATtiny15__" },
+ { "attiny28", ARCH_AVR1, "__AVR_ATtiny28__" },
+ { NULL, ARCH_UNKNOWN, NULL }
};
int avr_case_values_threshold = 30000;
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 1dba48dfe8e..640adadac46 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -757,9 +757,7 @@ mmcu=*:-mmcu=%*}"
mmcu=at76*:-m avr3}\
%{mmcu=atmega8*|\
mmcu=atmega48|\
- mmcu=at90pwm1|\
- mmcu=at90pwm2|\
- mmcu=at90pwm3:-m avr4}\
+ mmcu=at90pwm*:-m avr4}\
%{mmcu=atmega16*|\
mmcu=atmega32*|\
mmcu=atmega406|\
@@ -770,18 +768,14 @@ mmcu=*:-mmcu=%*}"
mmcu=at94k:-m avr5}\
%{mmcu=atmega324*|\
mmcu=atmega325*|\
- mmcu=atmega3250*|\
mmcu=atmega329*|\
- mmcu=atmega3290*|\
mmcu=atmega406|\
mmcu=atmega48|\
mmcu=atmega88|\
mmcu=atmega64|\
mmcu=atmega644*|\
- mmcu=atmega645|\
- mmcu=atmega6450|\
- mmcu=atmega649|\
- mmcu=atmega6490|\
+ mmcu=atmega645*|\
+ mmcu=atmega649*|\
mmcu=atmega128|\
mmcu=atmega162|\
mmcu=atmega164*|\