diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c
---- gcc/config/avr/avr-devices.c 2011-09-02 12:01:05.000000000 +0300
-+++ gcc/config/avr/avr-devices.c 2011-09-02 12:10:44.000000000 +0300
+--- gcc/config/avr/avr-devices.c 2011-06-24 10:37:25.000000000 +0530
++++ gcc/config/avr/avr-devices.c 2011-06-24 10:36:43.000000000 +0530
@@ -55,7 +55,7 @@ const struct base_arch_s avr_arch_types[
- avr-libc. */
+ /* Enhanced, > 8K, <= 64K + 2-byte PC +
+ { MOVW/LPMX, JMP/CALL, MUL }. */
{ "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" },
- { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" },
- { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" },
+ { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" },
+
@@ -229,7 +230,8 @@ const struct mcu_type_s avr_mcu_types[]
{ "at90usb647", ARCH_AVR5, "__AVR_AT90USB647__", 0, 0x0100, "usb647" },
{ "at94k", ARCH_AVR5, "__AVR_AT94K__", 0, 0x0060, "at94k" },
{ "avr51", ARCH_AVR51, NULL, 0, 0x0100, "m128" },
{ "atmega128", ARCH_AVR51, "__AVR_ATmega128__", 0, 0x0100, "m128" },
{ "atmega1280", ARCH_AVR51, "__AVR_ATmega1280__", 0, 0x0200, "m1280" },
-@@ -239,30 +241,33 @@ const struct mcu_type_s avr_mcu_types[]
+@@ -239,7 +241,8 @@ const struct mcu_type_s avr_mcu_types[]
{ "at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0x0100, "can128" },
{ "at90usb1286", ARCH_AVR51, "__AVR_AT90USB1286__", 0, 0x0100, "usb1286" },
{ "at90usb1287", ARCH_AVR51, "__AVR_AT90USB1287__", 0, 0x0100, "usb1286" },
- /* 3-Byte PC. */
-+ /* Enhanced, ==256K + 3-Byte PC +
-+ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */
++/* Enhanced, ==256K + 3-Byte PC +
++ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */
{ "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" },
- { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" },
+ { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" },
{ "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" },
- /* Enhanced, == 256K. */
- /* Xmega, <= 8K FLASH. */
-- /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */
-+ /* Xmega, > 8K, < 64K FLASH, <= 64K RAM. */
+@@ -248,8 +251,10 @@ const struct mcu_type_s avr_mcu_types[]
+ /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */
{ "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" },
{ "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" },
+ { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" },
{ "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" },
- { "atxmega16x1", ARCH_AVRXMEGA2, "__AVR_ATxmega16X1__", 0, 0x2000, "x16x1" },
{ "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" },
-+ { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" },
++ { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" },
{ "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" },
+ { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" },
/* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */
- /* { "avrxmega3", ARCH_AVRXMEGA3, NULL }, */
-- /* Xmega, > 64K, <= 128K FLASH, <= 64K RAM. */
-+ /* Xmega, >= 64K, < 128K FLASH, <= 64K RAM. */
- { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" },
- { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" },
- { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" },
-- /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */
-+ /* Xmega, >= 64K, < 128K FLASH, > 64K RAM. */
- { "avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0x2000, "x64a1" },
- { "atxmega64a1", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__", 0, 0x2000, "x64a1" },
- { "atxmega64a1u", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__", 0, 0x2000, "x64a1u" },
-- /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */
-+ /* Xmega, >= 128K, <= 256K FLASH, <= 64K RAM. */
- { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" },
- { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" },
- { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" },
@@ -273,7 +278,7 @@ const struct mcu_type_s avr_mcu_types[]
{ "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" },
{ "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" },
{ "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" },
{ "atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0x2000, "x128a1u" },
diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr
---- gcc/config/avr/t-avr 2011-09-02 12:01:05.000000000 +0300
-+++ gcc/config/avr/t-avr 2011-09-02 12:12:37.000000000 +0300
-@@ -266,10 +266,12 @@ MULTILIB_MATCHES = \
+--- gcc/config/avr/t-avr 2011-06-24 10:37:25.000000000 +0530
++++ gcc/config/avr/t-avr 2011-06-24 10:36:43.000000000 +0530
+@@ -265,9 +265,11 @@ MULTILIB_MATCHES = \
mmcu?avr6=mmcu?atmega2560 \
mmcu?avr6=mmcu?atmega2561 \
mmcu?avrxmega2=mmcu?atxmega16a4 \
+ mmcu?avrxmega2=mmcu?atxmega16a4u \
mmcu?avrxmega2=mmcu?atxmega16d4 \
- mmcu?avrxmega2=mmcu?atxmega16x1 \
mmcu?avrxmega2=mmcu?atxmega32d4 \
mmcu?avrxmega2=mmcu?atxmega32a4 \
+ mmcu?avrxmega2=mmcu?atxmega32a4u \
+ mmcu?avrxmega2=mmcu?atxmega32x1 \
mmcu?avrxmega4=mmcu?atxmega64a3 \
mmcu?avrxmega4=mmcu?atxmega64d3 \
- mmcu?avrxmega5=mmcu?atxmega64a1 \