From 14683174753fa37a67840c453ff758da3b873474 Mon Sep 17 00:00:00 2001 From: Anatoly Sokolov Date: Mon, 16 Apr 2007 21:50:26 +0400 Subject: [PATCH] avr.c (avr_arch_types): Rearranging array. * 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. From-SVN: r123882 --- gcc/ChangeLog | 8 ++ gcc/config/avr/avr.c | 202 +++++++++++++++++++++++-------------------- gcc/config/avr/avr.h | 12 +-- 3 files changed, 119 insertions(+), 103 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9a7c3cc85ef8..f94cf97baaf9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2007-04-16 Anatoly Sokolov + + * 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 * config/m68k/m68k.c (m68k_libcall_value, diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index bafaa5d4babe..3980ca98d47a 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 1dba48dfe8e2..640adadac460 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*|\