1 diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c
2 --- gcc/config/avr/avr-devices.c 2011-06-24 10:37:25.000000000 +0530
3 +++ gcc/config/avr/avr-devices.c 2011-06-24 10:36:43.000000000 +0530
4 @@ -55,7 +55,7 @@ const struct base_arch_s avr_arch_types[
7 const struct mcu_type_s avr_mcu_types[] = {
8 - /* Classic, <= 8K. */
9 + /* Classic, <= 8K, 2-byte PC. */
10 { "avr2", ARCH_AVR2, NULL, 0, 0x0060, "s8515" },
11 { "at90s2313", ARCH_AVR2, "__AVR_AT90S2313__", 1, 0x0060, "s2313" },
12 { "at90s2323", ARCH_AVR2, "__AVR_AT90S2323__", 1, 0x0060, "s2323" },
13 @@ -69,7 +69,7 @@ const struct mcu_type_s avr_mcu_types[]
14 { "at90s8515", ARCH_AVR2, "__AVR_AT90S8515__", 0, 0x0060, "s8515" },
15 { "at90c8534", ARCH_AVR2, "__AVR_AT90C8534__", 0, 0x0060, "c8534" },
16 { "at90s8535", ARCH_AVR2, "__AVR_AT90S8535__", 0, 0x0060, "s8535" },
17 - /* Classic + MOVW, <= 8K. */
18 + /* Classic, <= 8K + 2-byte PC + { MOVW/LPMX }. */
19 { "avr25", ARCH_AVR25, NULL, 0, 0x0060, "tn85" },
20 { "ata6289", ARCH_AVR25, "__AVR_ATA6289__", 0, 0x0100, "a6289" },
21 { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0x0060, "tn13" },
22 @@ -97,15 +97,15 @@ const struct mcu_type_s avr_mcu_types[]
23 { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" },
24 { "attiny88", ARCH_AVR25, "__AVR_ATtiny88__", 0, 0x0100, "tn88" },
25 { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 1, 0x0060, "86401" },
26 - /* Classic, > 8K, <= 64K. */
27 + /* Classic, > 8K, <= 64K +2-byte PC + { JMP/CALL }. */
28 { "avr3", ARCH_AVR3, NULL, 0, 0x0060, "43355" },
29 { "at43usb355", ARCH_AVR3, "__AVR_AT43USB355__", 0, 0x0060, "43355" },
30 { "at76c711", ARCH_AVR3, "__AVR_AT76C711__", 0, 0x0060, "76711" },
31 - /* Classic, == 128K. */
32 + /* Classic, == 128K + 2-byte PC + { JMP/CALL, ELPM }. */
33 { "avr31", ARCH_AVR31, NULL, 0, 0x0060, "m103" },
34 { "atmega103", ARCH_AVR31, "__AVR_ATmega103__", 0, 0x0060, "m103" },
35 { "at43usb320", ARCH_AVR31, "__AVR_AT43USB320__", 0, 0x0060, "43320" },
36 - /* Classic + MOVW + JMP/CALL. */
37 + /* Classic, >=16K, <=64K + 2-byte PC + { MOVW/LPMX + JMP/CALL }. */
38 { "avr35", ARCH_AVR35, NULL, 0, 0x0100, "usb162" },
39 { "at90usb82", ARCH_AVR35, "__AVR_AT90USB82__", 0, 0x0100, "usb82" },
40 { "at90usb162", ARCH_AVR35, "__AVR_AT90USB162__", 0, 0x0100, "usb162" },
41 @@ -114,7 +114,7 @@ const struct mcu_type_s avr_mcu_types[]
42 { "atmega32u2", ARCH_AVR35, "__AVR_ATmega32U2__", 0, 0x0100, "m32u2" },
43 { "attiny167", ARCH_AVR35, "__AVR_ATtiny167__", 0, 0x0100, "tn167" },
44 { "attiny1634", ARCH_AVR35, "__AVR_ATtiny1634__", 0, 0x0100, "tn1634" },
45 - /* Enhanced, <= 8K. */
46 + /* Enhanced, <= 8K + 2-byte PC + { MOVW/LPMX, MUL }. */
47 { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" },
48 { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" },
49 { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" },
50 @@ -134,7 +134,8 @@ const struct mcu_type_s avr_mcu_types[]
51 { "at90pwm3", ARCH_AVR4, "__AVR_AT90PWM3__", 0, 0x0100, "90pwm3" },
52 { "at90pwm3b", ARCH_AVR4, "__AVR_AT90PWM3B__", 0, 0x0100, "90pwm3b" },
53 { "at90pwm81", ARCH_AVR4, "__AVR_AT90PWM81__", 0, 0x0100, "90pwm81" },
54 - /* Enhanced, > 8K, <= 64K. */
55 + /* Enhanced, > 8K, <= 64K + 2-byte PC +
56 + { MOVW/LPMX, JMP/CALL, MUL }. */
57 { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" },
58 { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" },
60 @@ -229,7 +230,8 @@ const struct mcu_type_s avr_mcu_types[]
61 { "at90usb647", ARCH_AVR5, "__AVR_AT90USB647__", 0, 0x0100, "usb647" },
62 { "at94k", ARCH_AVR5, "__AVR_AT94K__", 0, 0x0060, "at94k" },
63 { "m3000", ARCH_AVR5, "__AVR_M3000__", 0, 0x1000, "m3000" },
64 - /* Enhanced, == 128K. */
65 + /* Enhanced, == 128K + 2-byte PC +
66 + { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */
67 { "avr51", ARCH_AVR51, NULL, 0, 0x0100, "m128" },
68 { "atmega128", ARCH_AVR51, "__AVR_ATmega128__", 0, 0x0100, "m128" },
69 { "atmega1280", ARCH_AVR51, "__AVR_ATmega1280__", 0, 0x0200, "m1280" },
70 @@ -239,7 +241,8 @@ const struct mcu_type_s avr_mcu_types[]
71 { "at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0x0100, "can128" },
72 { "at90usb1286", ARCH_AVR51, "__AVR_AT90USB1286__", 0, 0x0100, "usb1286" },
73 { "at90usb1287", ARCH_AVR51, "__AVR_AT90USB1287__", 0, 0x0100, "usb1286" },
75 +/* Enhanced, ==256K + 3-Byte PC +
76 + { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */
77 { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" },
78 { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" },
79 { "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" },
80 @@ -248,8 +251,10 @@ const struct mcu_type_s avr_mcu_types[]
81 /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */
82 { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" },
83 { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" },
84 + { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" },
85 { "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" },
86 { "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" },
87 + { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" },
88 { "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" },
89 { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" },
90 /* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */
91 @@ -273,7 +278,7 @@ const struct mcu_type_s avr_mcu_types[]
92 { "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" },
93 { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" },
94 { "atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0x2000, "x256d3" },
95 - /* Xmega, > 128K, <= 256K FLASH, > 64K RAM. */
96 + /* Xmega, >= 128K, <= 256K FLASH, > 64K RAM. */
97 { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" },
98 { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" },
99 { "atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0x2000, "x128a1u" },
100 diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr
101 --- gcc/config/avr/t-avr 2011-06-24 10:37:25.000000000 +0530
102 +++ gcc/config/avr/t-avr 2011-06-24 10:36:43.000000000 +0530
103 @@ -265,9 +265,11 @@ MULTILIB_MATCHES = \
104 mmcu?avr6=mmcu?atmega2560 \
105 mmcu?avr6=mmcu?atmega2561 \
106 mmcu?avrxmega2=mmcu?atxmega16a4 \
107 + mmcu?avrxmega2=mmcu?atxmega16a4u \
108 mmcu?avrxmega2=mmcu?atxmega16d4 \
109 mmcu?avrxmega2=mmcu?atxmega32d4 \
110 mmcu?avrxmega2=mmcu?atxmega32a4 \
111 + mmcu?avrxmega2=mmcu?atxmega32a4u \
112 mmcu?avrxmega2=mmcu?atxmega32x1 \
113 mmcu?avrxmega4=mmcu?atxmega64a3 \
114 mmcu?avrxmega4=mmcu?atxmega64d3 \