--- gcc/config/avr/avr.c.orig	2009-02-19 17:43:02.382993800 -0700
+++ gcc/config/avr/avr.c	2009-02-21 11:02:06.212741400 -0700
@@ -215,6 +215,7 @@ static const struct mcu_type_s avr_mcu_t
   { "attiny461",    ARCH_AVR25, "__AVR_ATtiny461__" },
   { "attiny861",    ARCH_AVR25, "__AVR_ATtiny861__" },
   { "attiny43u",    ARCH_AVR25, "__AVR_ATtiny43U__" },
+  { "attiny87",     ARCH_AVR25, "__AVR_ATtiny87__" },
   { "attiny48",     ARCH_AVR25, "__AVR_ATtiny48__" },
   { "attiny88",     ARCH_AVR25, "__AVR_ATtiny88__" },
   { "at86rf401",    ARCH_AVR25, "__AVR_AT86RF401__" },
@@ -231,6 +232,7 @@ static const struct mcu_type_s avr_mcu_t
   { "at90usb82",    ARCH_AVR35, "__AVR_AT90USB82__" },
   { "at90usb162",   ARCH_AVR35, "__AVR_AT90USB162__" },
   { "attiny167",    ARCH_AVR35, "__AVR_ATtiny167__" },
+  { "attiny327",    ARCH_AVR35, "__AVR_ATtiny327__" },
     /* Enhanced, <= 8K.  */
   { "avr4",         ARCH_AVR4, NULL },
   { "atmega8",      ARCH_AVR4, "__AVR_ATmega8__" },
@@ -246,6 +248,7 @@ static const struct mcu_type_s avr_mcu_t
   { "at90pwm2b",    ARCH_AVR4, "__AVR_AT90PWM2B__" },
   { "at90pwm3",     ARCH_AVR4, "__AVR_AT90PWM3__" },
   { "at90pwm3b",    ARCH_AVR4, "__AVR_AT90PWM3B__" },
+  { "at90pwm81",    ARCH_AVR4, "__AVR_AT90PWM81__" },
     /* Enhanced, > 8K, <= 64K.  */
   { "avr5",         ARCH_AVR5, NULL },
   { "atmega16",     ARCH_AVR5, "__AVR_ATmega16__" },
@@ -285,9 +288,11 @@ static const struct mcu_type_s avr_mcu_t
   { "at90can64",    ARCH_AVR5, "__AVR_AT90CAN64__" },
   { "at90pwm216",   ARCH_AVR5, "__AVR_AT90PWM216__" },
   { "at90pwm316",   ARCH_AVR5, "__AVR_AT90PWM316__" },
+  { "atmega16m1",   ARCH_AVR5, "__AVR_ATmega16M1__" },
   { "atmega32m1",   ARCH_AVR5, "__AVR_ATmega32M1__" },
   { "atmega32c1",   ARCH_AVR5, "__AVR_ATmega32C1__" },
   { "atmega32u4",   ARCH_AVR5, "__AVR_ATmega32U4__" },
+  { "at90scr100",   ARCH_AVR5, "__AVR_AT90SCR100__" },
   { "at90usb646",   ARCH_AVR5, "__AVR_AT90USB646__" },
   { "at90usb647",   ARCH_AVR5, "__AVR_AT90USB647__" },
   { "at94k",        ARCH_AVR5, "__AVR_AT94K__" },
@@ -297,9 +302,13 @@ static const struct mcu_type_s avr_mcu_t
   { "atmega1280",   ARCH_AVR51, "__AVR_ATmega1280__" },
   { "atmega1281",   ARCH_AVR51, "__AVR_ATmega1281__" },
   { "atmega1284p",  ARCH_AVR51, "__AVR_ATmega1284P__" },
+  { "atmega128rfa1",  ARCH_AVR51, "__AVR_ATmega128RFA1__" },
   { "at90can128",   ARCH_AVR51, "__AVR_AT90CAN128__" },
   { "at90usb1286",  ARCH_AVR51, "__AVR_AT90USB1286__" },
   { "at90usb1287",  ARCH_AVR51, "__AVR_AT90USB1287__" },
+  { "m3000f",       ARCH_AVR51, "__AVR_M3000F__" },
+  { "m3000s",       ARCH_AVR51, "__AVR_M3000S__" },
+  { "m3001b",       ARCH_AVR51, "__AVR_M3001B__" },
     /* 3-Byte PC.  */
   { "avr6",         ARCH_AVR6, NULL },
   { "atmega2560",   ARCH_AVR6, "__AVR_ATmega2560__" },
--- gcc/config/avr/avr.h.orig	2009-02-19 17:43:02.382993800 -0700
+++ gcc/config/avr/avr.h	2009-02-21 11:01:15.968302700 -0700
@@ -845,14 +845,16 @@ mmcu=*:-mmcu=%*}"
   mmcu=at76*|\
   mmcu=at90usb82|\
   mmcu=at90usb162|\
-  mmcu=attiny167: -m avr3}\
+  mmcu=attiny16*|\
+  mmcu=attiny32*: -m avr3}\
 %{mmcu=atmega8*|\
   mmcu=atmega48*|\
   mmcu=at90pwm1|\
   mmcu=at90pwm2|\
   mmcu=at90pwm2b|\
   mmcu=at90pwm3|\
-  mmcu=at90pwm3b: -m avr4}\
+  mmcu=at90pwm3b|\
+  mmcu=at90pwm81: -m avr4}\
 %{mmcu=atmega16*|\
   mmcu=atmega32*|\
   mmcu=atmega406|\
@@ -864,9 +866,12 @@ mmcu=*:-mmcu=%*}"
   mmcu=atmega32c1|\
   mmcu=atmega32m1|\
   mmcu=atmega32u4|\
+  mmcu=at90scr100|\
   mmcu=at90usb64*|\
   mmcu=at90usb128*|\
-  mmcu=at94k: -m avr5}\
+  mmcu=at94k|\
+  mmcu=m3000*|\
+  mmcu=m3001*: -m avr5}\
 %{mmcu=atmega256*:-m avr6}\
 %{mmcu=atxmega32a4:-m avrxmega3} \
 %{mmcu=atxmega64a3:-m avrxmega4} \
@@ -887,6 +892,7 @@ mmcu=*:-mmcu=%*}"
   mmcu=atmega649*|\
   mmcu=atmega128|\
   mmcu=atmega1284p|\
+  mmcu=atmega128rfa1|\
   mmcu=atmega162|\
   mmcu=atmega164*|\
   mmcu=atmega165*|\
@@ -896,17 +902,23 @@ mmcu=*:-mmcu=%*}"
   mmcu=atmega16hva|\
   mmcu=attiny48|\
   mmcu=attiny88|\
+  mmcu=attiny87|\
   mmcu=attiny167|\
+  mmcu=attiny327|\
   mmcu=at90can*|\
   mmcu=at90pwm*|\
+  mmcu=atmega16m1|\
   mmcu=atmega32c1|\
   mmcu=atmega32m1|\
   mmcu=atmega32u4|\
+  mmcu=at90scr100|\
   mmcu=at90usb*: -Tdata 0x800100}\
 %{mmcu=atmega640|\
   mmcu=atmega1280|\
   mmcu=atmega1281|\
-  mmcu=atmega256*: -Tdata 0x800200} "
+  mmcu=atmega256*: -Tdata 0x800200}\
+%{mmcu=m3000*|\
+  mmcu=m3001*: -Tdata 0x801000}"
 
 #define LIB_SPEC \
   "%{!mmcu=at90s1*:%{!mmcu=attiny11:%{!mmcu=attiny12:%{!mmcu=attiny15:%{!mmcu=attiny28: -lc }}}}}"
@@ -955,7 +967,9 @@ mmcu=*:-mmcu=%*}"
 %{mmcu=attiny43u:crttn43u.o%s} \
 %{mmcu=attiny48:crttn48.o%s} \
 %{mmcu=attiny88:crttn88.o%s} \
+%{mmcu=attiny87:crttn87.o%s} \
 %{mmcu=attiny167:crttn167.o%s} \
+%{mmcu=attiny327:crttn327.o%s} \
 %{mmcu=at43usb320|mmcu=avr3:crt43320.o%s} \
 %{mmcu=at43usb355:crt43355.o%s} \
 %{mmcu=at76c711:crt76711.o%s} \
@@ -974,6 +988,7 @@ mmcu=*:-mmcu=%*}"
 %{mmcu=at90pwm2b:crt90pwm2b.o%s} \
 %{mmcu=at90pwm3:crt90pwm3.o%s} \
 %{mmcu=at90pwm3b:crt90pwm3b.o%s} \
+%{mmcu=at90pwm81:crt90pwm81.o%s} \
 %{mmcu=atmega16:crtm16.o%s} \
 %{mmcu=atmega161|mmcu=avr5:crtm161.o%s} \
 %{mmcu=atmega162:crtm162.o%s} \
@@ -1012,9 +1027,11 @@ mmcu=*:-mmcu=%*}"
 %{mmcu=at90can64:crtcan64.o%s} \
 %{mmcu=at90pwm216:crt90pwm216.o%s} \
 %{mmcu=at90pwm316:crt90pwm316.o%s} \
+%{mmcu=atmega16m1:crtm16m1.o%s} \
 %{mmcu=atmega32c1:crtm32c1.o%s} \
 %{mmcu=atmega32m1:crtm32m1.o%s} \
 %{mmcu=atmega32u4:crtm32u4.o%s} \
+%{mmcu=at90scr100:crt90scr100.o%s} \
 %{mmcu=at90usb646:crtusb646.o%s} \
 %{mmcu=at90usb647:crtusb647.o%s} \
 %{mmcu=at94k:crtat94k.o%s} \
@@ -1022,11 +1039,15 @@ mmcu=*:-mmcu=%*}"
 %{mmcu=atmega1280:crtm1280.o%s} \
 %{mmcu=atmega1281:crtm1281.o%s} \
 %{mmcu=atmega1284p:crtm1284p.o%s} \
-%{mmcu=atmega2560:crtm2560.o%s} \
-%{mmcu=atmega2561:crtm2561.o%s} \
+%{mmcu=atmega128rfa1:crtm128rfa1.o%s} \
 %{mmcu=at90can128:crtcan128.o%s} \
 %{mmcu=at90usb1286:crtusb1286.o%s} \
 %{mmcu=at90usb1287:crtusb1287.o%s} \
+%{mmcu=m3000f:crtm3000f.o%s} \
+%{mmcu=m3000s:crtm3000s.o%s} \
+%{mmcu=m3001b:crtm3001b.o%s} \
+%{mmcu=atmega2560|mmcu=avr6:crtm2560.o%s} \
+%{mmcu=atmega2561:crtm2561.o%s} \
 %{mmcu=atxmega3|mmcu=atxmega32a4:crtx32a4.o%s} \
 %{mmcu=atxmega4|mmcu=atxmega64a3:crtx64a3.o%s} \
 %{mmcu=atxmega5|mmcu=atxmega64a1:crtx64a1.o%s} \
--- gcc/config/avr/t-avr.orig	2009-02-19 17:43:02.382993800 -0700
+++ gcc/config/avr/t-avr	2009-02-21 10:47:26.471879200 -0700
@@ -55,6 +55,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr25=mmcu?attiny461 \
 	mmcu?avr25=mmcu?attiny861 \
 	mmcu?avr25=mmcu?attiny43u \
+	mmcu?avr25=mmcu?attiny87 \
 	mmcu?avr25=mmcu?attiny48 \
 	mmcu?avr25=mmcu?attiny88 \
 	mmcu?avr25=mmcu?at86rf401 \
@@ -65,6 +66,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr35=mmcu?at90usb82 \
 	mmcu?avr35=mmcu?at90usb162 \
 	mmcu?avr35=mmcu?attiny167 \
+	mmcu?avr35=mmcu?attiny327 \
 	mmcu?avr4=mmcu?atmega48 \
 	mmcu?avr4=mmcu?atmega48p \
 	mmcu?avr4=mmcu?atmega8 \
@@ -78,6 +80,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr4=mmcu?at90pwm2b \
 	mmcu?avr4=mmcu?at90pwm3 \
 	mmcu?avr4=mmcu?at90pwm3b \
+	mmcu?avr4=mmcu?at90pwm81 \
 	mmcu?avr5=mmcu?atmega16 \
 	mmcu?avr5=mmcu?atmega161 \
 	mmcu?avr5=mmcu?atmega162 \
@@ -115,9 +118,11 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?at90can64 \
 	mmcu?avr5=mmcu?at90pwm216 \
 	mmcu?avr5=mmcu?at90pwm316 \
+	mmcu?avr5=mmcu?atmega16m1 \
 	mmcu?avr5=mmcu?atmega32c1 \
 	mmcu?avr5=mmcu?atmega32m1 \
 	mmcu?avr5=mmcu?atmega32u4 \
+	mmcu?avr5=mmcu?at90scr100 \
 	mmcu?avr5=mmcu?at90usb646 \
 	mmcu?avr5=mmcu?at90usb647 \
 	mmcu?avr5=mmcu?at94k \
@@ -125,9 +130,13 @@ MULTILIB_MATCHES = \
 	mmcu?avr51=mmcu?atmega1280 \
 	mmcu?avr51=mmcu?atmega1281 \
 	mmcu?avr51=mmcu?atmega1284p \
+	mmcu?avr51=mmcu?atmega128rfa1 \
 	mmcu?avr51=mmcu?at90can128 \
 	mmcu?avr51=mmcu?at90usb1286 \
 	mmcu?avr51=mmcu?at90usb1287 \
+	mmcu?avr51=mmcu?m3000f \
+	mmcu?avr51=mmcu?m3000s \
+	mmcu?avr51=mmcu?m3001b \
 	mmcu?avr6=mmcu?atmega2560 \
 	mmcu?avr6=mmcu?atmega2561 \
 	mmcu?avrxmega3=mmcu?atxmega32a4 \
