public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [Patch,avr]: Add more devices
@ 2013-02-12 15:33 Georg-Johann Lay
  2013-02-13 10:05 ` [Patch,avr]: Add more devices take #2: 1/2 Georg-Johann Lay
  2013-02-13 10:17 ` [Patch,avr]: Add more devices take #2: 2/2 Georg-Johann Lay
  0 siblings, 2 replies; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-12 15:33 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington

[-- Attachment #1: Type: text/plain, Size: 2971 bytes --]

This patch adds more devices to avr-mcus.def and regenerates depending files.

There is a new spec function that is the worker for ASM_SPEC and that
transforms -mmcu=device to -mmcu=arch for avr-as.

This transformation was already performed for avr25, avr31, avr35 and avr51 and
is now performed for all devices so that avr-as only need to support -mmcu=arch.

Rationale is to reduce tool dependencies:  as need not to know what device it
compiles for, the core is enough.  The only cases where the core arch is no
enough is

- Tell whether the device suffers from skip silicon bug
- Tell whether the device supporte DES, XCH, LAS, LAC, LAT instruction.

The first case is handled by device_to_as that issues -mno-skip-bug as needed.

The second case is not handled.  Binutils is agnostic w.r.t. availability of
these instructions if the exact device is supplied.  If binutils will wver be
extended to know about these instructions, the preferred way is as described in

http://sourceware.org/PR15043

i.e. add new ISA options to binutils.  That way, tools dependencies can be
disentangled and binutils need not to be changed for every new device.

Ok for trunk?

Even though this is new feature, I'd propose to backport the additions to
avr-mcus.def to 4.7.  The changes to avr-mcus.def are obvious enough, IMO.

Okay to backport avr-mcus.def and docs part to 4.7 then?

Johann

	* config/avr/avr-arch.h (avr_arch_t) <arch_for_as>: New component.
	* config/avr/avr-devices.c: Initialize it.
	* config/avr/avr.h (device_to_arch): Rename to device_to_ld.
	(avr_device_to_arch): Rename to avr_device_to_ld.
	(avr_device_to_as): New prototype.
	(EXTRA_SPEC_FUNCTIONS): Add device_to_as.
	(ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
	* config/avr/driver-avr.c (avr_device_to_as): New.
	(avr_device_to_arch): Rename to avr_device_to_ld.
	* avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
	(ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
	(atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
	(atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
	(atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
	(atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
	(atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
	(atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
	(atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
	(atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
	(atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
	(atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
	(atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
	(atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
	(atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
	(avrxmega6): Increase max flash segments from 5 to 6.
	* config/avr/t-multilib: Regenerate.
	* config/avr/avr-tables.opt: Regenerate.
	* doc/avr-mmcu.texi: Regenerate.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: more-devices.diff --]
[-- Type: text/x-patch; name="more-devices.diff", Size: 63181 bytes --]

Index: config/avr/t-multilib
===================================================================
--- config/avr/t-multilib	(revision 195877)
+++ config/avr/t-multilib	(working copy)
@@ -53,6 +53,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr2=mmcu?at90c8534 \
 	mmcu?avr2=mmcu?at90s8535 \
 	mmcu?avr25=mmcu?ata6289 \
+	mmcu?avr25=mmcu?ata5272 \
 	mmcu?avr25=mmcu?attiny13 \
 	mmcu?avr25=mmcu?attiny13a \
 	mmcu?avr25=mmcu?attiny2313 \
@@ -82,16 +83,22 @@ MULTILIB_MATCHES = \
 	mmcu?avr3=mmcu?at76c711 \
 	mmcu?avr31=mmcu?atmega103 \
 	mmcu?avr31=mmcu?at43usb320 \
+	mmcu?avr35=mmcu?ata5505 \
 	mmcu?avr35=mmcu?at90usb82 \
 	mmcu?avr35=mmcu?at90usb162 \
 	mmcu?avr35=mmcu?atmega8u2 \
 	mmcu?avr35=mmcu?atmega16u2 \
 	mmcu?avr35=mmcu?atmega32u2 \
 	mmcu?avr35=mmcu?attiny167 \
+	mmcu?avr35=mmcu?attiny1634 \
+	mmcu?avr4=mmcu?ata6285 \
+	mmcu?avr4=mmcu?ata6286 \
 	mmcu?avr4=mmcu?atmega8 \
+	mmcu?avr4=mmcu?atmega8a \
 	mmcu?avr4=mmcu?atmega48 \
 	mmcu?avr4=mmcu?atmega48a \
 	mmcu?avr4=mmcu?atmega48p \
+	mmcu?avr4=mmcu?atmega48pa \
 	mmcu?avr4=mmcu?atmega88 \
 	mmcu?avr4=mmcu?atmega88a \
 	mmcu?avr4=mmcu?atmega88p \
@@ -105,6 +112,9 @@ MULTILIB_MATCHES = \
 	mmcu?avr4=mmcu?at90pwm3 \
 	mmcu?avr4=mmcu?at90pwm3b \
 	mmcu?avr4=mmcu?at90pwm81 \
+	mmcu?avr5=mmcu?ata5790 \
+	mmcu?avr5=mmcu?ata5790n \
+	mmcu?avr5=mmcu?ata5795 \
 	mmcu?avr5=mmcu?atmega16 \
 	mmcu?avr5=mmcu?atmega16a \
 	mmcu?avr5=mmcu?atmega161 \
@@ -112,17 +122,28 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega163 \
 	mmcu?avr5=mmcu?atmega164a \
 	mmcu?avr5=mmcu?atmega164p \
+	mmcu?avr5=mmcu?atmega164pa \
 	mmcu?avr5=mmcu?atmega165 \
 	mmcu?avr5=mmcu?atmega165a \
 	mmcu?avr5=mmcu?atmega165p \
+	mmcu?avr5=mmcu?atmega165pa \
 	mmcu?avr5=mmcu?atmega168 \
 	mmcu?avr5=mmcu?atmega168a \
 	mmcu?avr5=mmcu?atmega168p \
+	mmcu?avr5=mmcu?atmega168pa \
 	mmcu?avr5=mmcu?atmega169 \
 	mmcu?avr5=mmcu?atmega169a \
 	mmcu?avr5=mmcu?atmega169p \
 	mmcu?avr5=mmcu?atmega169pa \
+	mmcu?avr5=mmcu?atmega16hva \
+	mmcu?avr5=mmcu?atmega16hvb \
+	mmcu?avr5=mmcu?atmega16hvbrevb \
+	mmcu?avr5=mmcu?atmega16m1 \
+	mmcu?avr5=mmcu?atmega16u4 \
+	mmcu?avr5=mmcu?atmega26hvg \
+	mmcu?avr5=mmcu?atmega32a \
 	mmcu?avr5=mmcu?atmega32 \
+	mmcu?avr5=mmcu?atmega32a \
 	mmcu?avr5=mmcu?atmega323 \
 	mmcu?avr5=mmcu?atmega324a \
 	mmcu?avr5=mmcu?atmega324p \
@@ -133,6 +154,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega3250 \
 	mmcu?avr5=mmcu?atmega3250a \
 	mmcu?avr5=mmcu?atmega3250p \
+	mmcu?avr5=mmcu?atmega3250pa \
 	mmcu?avr5=mmcu?atmega328 \
 	mmcu?avr5=mmcu?atmega328p \
 	mmcu?avr5=mmcu?atmega329 \
@@ -142,8 +164,14 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega3290 \
 	mmcu?avr5=mmcu?atmega3290a \
 	mmcu?avr5=mmcu?atmega3290p \
+	mmcu?avr5=mmcu?atmega3290pa \
+	mmcu?avr5=mmcu?atmega32c1 \
+	mmcu?avr5=mmcu?atmega32m1 \
+	mmcu?avr5=mmcu?atmega32u4 \
+	mmcu?avr5=mmcu?atmega32u6 \
 	mmcu?avr5=mmcu?atmega406 \
 	mmcu?avr5=mmcu?atmega64 \
+	mmcu?avr5=mmcu?atmega64a \
 	mmcu?avr5=mmcu?atmega640 \
 	mmcu?avr5=mmcu?atmega644 \
 	mmcu?avr5=mmcu?atmega644a \
@@ -163,9 +191,20 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega16hva2 \
 	mmcu?avr5=mmcu?atmega16hvb \
 	mmcu?avr5=mmcu?atmega32hvb \
+	mmcu?avr5=mmcu?atmega6490a \
+	mmcu?avr5=mmcu?atmega6490p \
+	mmcu?avr5=mmcu?atmega64c1 \
+	mmcu?avr5=mmcu?atmega64m1 \
 	mmcu?avr5=mmcu?atmega64hve \
+	mmcu?avr5=mmcu?atmega64rfa2 \
+	mmcu?avr5=mmcu?atmega64rfr2 \
+	mmcu?avr5=mmcu?atmega32hvb \
+	mmcu?avr5=mmcu?atmega32hvbrevb \
+	mmcu?avr5=mmcu?atmega16hva2 \
+	mmcu?avr5=mmcu?atmega48hvf \
 	mmcu?avr5=mmcu?at90can32 \
 	mmcu?avr5=mmcu?at90can64 \
+	mmcu?avr5=mmcu?at90pwm161 \
 	mmcu?avr5=mmcu?at90pwm216 \
 	mmcu?avr5=mmcu?at90pwm316 \
 	mmcu?avr5=mmcu?atmega32c1 \
@@ -182,8 +221,10 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?at94k \
 	mmcu?avr5=mmcu?m3000 \
 	mmcu?avr51=mmcu?atmega128 \
+	mmcu?avr51=mmcu?atmega128a \
 	mmcu?avr51=mmcu?atmega1280 \
 	mmcu?avr51=mmcu?atmega1281 \
+	mmcu?avr51=mmcu?atmega1284 \
 	mmcu?avr51=mmcu?atmega1284p \
 	mmcu?avr51=mmcu?atmega128rfa1 \
 	mmcu?avr51=mmcu?at90can128 \
@@ -197,8 +238,23 @@ MULTILIB_MATCHES = \
 	mmcu?avrxmega2=mmcu?atxmega32a4 \
 	mmcu?avrxmega2=mmcu?atxmega32d4 \
 	mmcu?avrxmega2=mmcu?atxmega32x1 \
+	mmcu?avrxmega2=mmcu?atmxt112sl \
+	mmcu?avrxmega2=mmcu?atmxt224 \
+	mmcu?avrxmega2=mmcu?atmxt224e \
+	mmcu?avrxmega2=mmcu?atmxt336s \
+	mmcu?avrxmega2=mmcu?atxmega16a4u \
+	mmcu?avrxmega2=mmcu?atxmega16c4 \
+	mmcu?avrxmega2=mmcu?atxmega32a4u \
+	mmcu?avrxmega2=mmcu?atxmega32c4 \
+	mmcu?avrxmega2=mmcu?atxmega32e5 \
 	mmcu?avrxmega4=mmcu?atxmega64a3 \
 	mmcu?avrxmega4=mmcu?atxmega64d3 \
+	mmcu?avrxmega4=mmcu?atxmega64a3u \
+	mmcu?avrxmega4=mmcu?atxmega64a4u \
+	mmcu?avrxmega4=mmcu?atxmega64b1 \
+	mmcu?avrxmega4=mmcu?atxmega64b3 \
+	mmcu?avrxmega4=mmcu?atxmega64c3 \
+	mmcu?avrxmega4=mmcu?atxmega64d4 \
 	mmcu?avrxmega5=mmcu?atxmega64a1 \
 	mmcu?avrxmega5=mmcu?atxmega64a1u \
 	mmcu?avrxmega6=mmcu?atxmega128a3 \
@@ -209,5 +265,19 @@ MULTILIB_MATCHES = \
 	mmcu?avrxmega6=mmcu?atxmega256a3b \
 	mmcu?avrxmega6=mmcu?atxmega256a3bu \
 	mmcu?avrxmega6=mmcu?atxmega256d3 \
+	mmcu?avrxmega6=mmcu?atxmega128a3u \
+	mmcu?avrxmega6=mmcu?atxmega128b1 \
+	mmcu?avrxmega6=mmcu?atxmega128b3 \
+	mmcu?avrxmega6=mmcu?atxmega128c3 \
+	mmcu?avrxmega6=mmcu?atxmega128d4 \
+	mmcu?avrxmega6=mmcu?atmxt540s \
+	mmcu?avrxmega6=mmcu?atmxt540sreva \
+	mmcu?avrxmega6=mmcu?atxmega192a3u \
+	mmcu?avrxmega6=mmcu?atxmega192c3 \
+	mmcu?avrxmega6=mmcu?atxmega256a3u \
+	mmcu?avrxmega6=mmcu?atxmega256c3 \
+	mmcu?avrxmega6=mmcu?atxmega384c3 \
+	mmcu?avrxmega6=mmcu?atxmega384d3 \
 	mmcu?avrxmega7=mmcu?atxmega128a1 \
-	mmcu?avrxmega7=mmcu?atxmega128a1u
+	mmcu?avrxmega7=mmcu?atxmega128a1u \
+	mmcu?avrxmega7=mmcu?atxmega128a4u
Index: config/avr/avr-devices.c
===================================================================
--- config/avr/avr-devices.c	(revision 195877)
+++ config/avr/avr-devices.c	(working copy)
@@ -31,29 +31,29 @@ const avr_arch_t
 avr_arch_types[] =
 {
   /* unknown device specified */
-  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, NULL,              "avr2"  },
+  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, NULL, "avr2",   ARCH_AVR2 },
   /*
-    A  M  J  LM E  E  E  X  R   d S   S O   A
-    S  U  M  PO L  L  I  M  A   a t   F ff  r
+    A  M  J  LM E  E  E  X  R   d S   S O   A    -mmcu=      -mmcu=
+    S  U  M  PO L  L  I  M  A   a t   F ff  r     for gcc     for as
     M  L  P  MV P  P  J  E  M   t a   R s   c
-             XW M  M  M  G  P   a r     e   h
-                   X  P  A  D     t     t   ID   */
-  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, "1",   "avr1"  },
-  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, "2",   "avr2"  },
-  { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0x0060, 32, "25",  "avr25" },
-  { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0x0060, 32, "3",   "avr3"  },
-  { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0x0060, 32, "31",  "avr31" },
-  { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0x0060, 32, "35",  "avr35" },
-  { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0x0060, 32, "4",   "avr4"  },
-  { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0x0060, 32, "5",   "avr5"  },
-  { 0, 1, 1, 1, 1, 1, 0, 0, 0, 0x0060, 32, "51",  "avr51" },
-  { 0, 1, 1, 1, 1, 1, 1, 0, 0, 0x0060, 32, "6",   "avr6"  },
+             XW M  M  M  G  P   a r     e   h    -m
+                   X  P  A  D     t     t   ID    for ld              */
+  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, "1",   "avr1",  ARCH_AVR1 },
+  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, 32, "2",   "avr2",  ARCH_AVR2 },
+  { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0x0060, 32, "25",  "avr25", ARCH_AVR2 },
+  { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0x0060, 32, "3",   "avr3",  ARCH_AVR3 },
+  { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0x0060, 32, "31",  "avr31", ARCH_AVR3 },
+  { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0x0060, 32, "35",  "avr35", ARCH_AVR3 },
+  { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0x0060, 32, "4",   "avr4",  ARCH_AVR4 },
+  { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0x0060, 32, "5",   "avr5",  ARCH_AVR5 },
+  { 0, 1, 1, 1, 1, 1, 0, 0, 0, 0x0060, 32, "51",  "avr51", ARCH_AVR5 },
+  { 0, 1, 1, 1, 1, 1, 1, 0, 0, 0x0060, 32, "6",   "avr6",  ARCH_AVR6 },
 
-  { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0x2000,  0, "102", "avrxmega2" },
-  { 0, 1, 1, 1, 1, 1, 0, 1, 0, 0x2000,  0, "104", "avrxmega4" },
-  { 0, 1, 1, 1, 1, 1, 0, 1, 1, 0x2000,  0, "105", "avrxmega5" },
-  { 0, 1, 1, 1, 1, 1, 1, 1, 0, 0x2000,  0, "106", "avrxmega6" },
-  { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0x2000,  0, "107", "avrxmega7" }
+  { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0x2000, 0, "102", "avrxmega2", ARCH_AVRXMEGA2 },
+  { 0, 1, 1, 1, 1, 1, 0, 1, 0, 0x2000, 0, "104", "avrxmega4", ARCH_AVRXMEGA4 },
+  { 0, 1, 1, 1, 1, 1, 0, 1, 1, 0x2000, 0, "105", "avrxmega5", ARCH_AVRXMEGA5 },
+  { 0, 1, 1, 1, 1, 1, 1, 1, 0, 0x2000, 0, "106", "avrxmega6", ARCH_AVRXMEGA6 },
+  { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0x2000, 0, "107", "avrxmega7", ARCH_AVRXMEGA7 }
 };
 
 const avr_arch_info_t
Index: config/avr/avr-arch.h
===================================================================
--- config/avr/avr-arch.h	(revision 195877)
+++ config/avr/avr-arch.h	(working copy)
@@ -87,6 +87,9 @@ typedef struct
 
   /* Architecture name.  */
   const char *const arch_name;
+
+  /* Index in avr_arch_types[] to get -mmcu for as.  */
+  enum avr_arch arch_for_as;
 } avr_arch_t;
 
 
Index: config/avr/avr-mcus.def
===================================================================
--- config/avr/avr-mcus.def	(revision 195877)
+++ config/avr/avr-mcus.def	(working copy)
@@ -28,11 +28,8 @@
    -  $(srcdir)/doc/avr-mmcu.texi
 
    After that, rebuild everything and check-in the new sources to the repo.
-   The device list below has to be kept in sync with the following places:
+   The device list below has to be kept in sync with AVR-LibC.
 
-   -  here
-   -  gas/config/tc-avr.c
-   -  avr-libc
 
    Before including this file, define a macro:
 
@@ -79,6 +76,7 @@ AVR_MCU ("at90s8535",            ARCH_AV
 /* Classic + MOVW, <= 8K.  */
 AVR_MCU ("avr25",                ARCH_AVR25, NULL,                       0, 0, 0x0060, 1, "tn85")
 AVR_MCU ("ata6289",              ARCH_AVR25, "__AVR_ATA6289__",          0, 0, 0x0100, 1, "a6289")
+AVR_MCU ("ata5272",              ARCH_AVR25, "__AVR_ATA5272__",          0, 0, 0x0100, 1, "a5272")
 AVR_MCU ("attiny13",             ARCH_AVR25, "__AVR_ATtiny13__",         1, 0, 0x0060, 1, "tn13")
 AVR_MCU ("attiny13a",            ARCH_AVR25, "__AVR_ATtiny13A__",        1, 0, 0x0060, 1, "tn13a")
 AVR_MCU ("attiny2313",           ARCH_AVR25, "__AVR_ATtiny2313__",       1, 0, 0x0060, 1, "tn2313")
@@ -114,18 +112,24 @@ AVR_MCU ("atmega103",            ARCH_AV
 AVR_MCU ("at43usb320",           ARCH_AVR31, "__AVR_AT43USB320__",       0, 0, 0x0060, 2, "43320")
 /* Classic + MOVW + JMP/CALL.  */
 AVR_MCU ("avr35",                ARCH_AVR35, NULL,                       0, 0, 0x0100, 1, "usb162")
+AVR_MCU ("ata5505",              ARCH_AVR35, "__AVR_ATA5505__",          0, 0, 0x0100, 1, "a5505")
 AVR_MCU ("at90usb82",            ARCH_AVR35, "__AVR_AT90USB82__",        0, 0, 0x0100, 1, "usb82")
 AVR_MCU ("at90usb162",           ARCH_AVR35, "__AVR_AT90USB162__",       0, 0, 0x0100, 1, "usb162")
 AVR_MCU ("atmega8u2",            ARCH_AVR35, "__AVR_ATmega8U2__",        0, 0, 0x0100, 1, "m8u2")
 AVR_MCU ("atmega16u2",           ARCH_AVR35, "__AVR_ATmega16U2__",       0, 0, 0x0100, 1, "m16u2")
 AVR_MCU ("atmega32u2",           ARCH_AVR35, "__AVR_ATmega32U2__",       0, 0, 0x0100, 1, "m32u2")
 AVR_MCU ("attiny167",            ARCH_AVR35, "__AVR_ATtiny167__",        0, 0, 0x0100, 1, "tn167")
+AVR_MCU ("attiny1634",           ARCH_AVR35, "__AVR_ATtiny1634__",       0, 0, 0x0100, 1, "tn1634")
 /* Enhanced, <= 8K.  */
 AVR_MCU ("avr4",                 ARCH_AVR4, NULL,                        0, 0, 0x0060, 1, "m8")
+AVR_MCU ("ata6285",              ARCH_AVR4, "__AVR_ATA6285__",           0, 0, 0x0100, 1, "a6285")
+AVR_MCU ("ata6286",              ARCH_AVR4, "__AVR_ATA6286__",           0, 0, 0x0100, 1, "a6286")
 AVR_MCU ("atmega8",              ARCH_AVR4, "__AVR_ATmega8__",           0, 0, 0x0060, 1, "m8")
+AVR_MCU ("atmega8a",             ARCH_AVR4, "__AVR_ATmega8A__",          0, 0, 0x0060, 1, "m8a")
 AVR_MCU ("atmega48",             ARCH_AVR4, "__AVR_ATmega48__",          0, 0, 0x0100, 1, "m48")
 AVR_MCU ("atmega48a",            ARCH_AVR4, "__AVR_ATmega48A__",         0, 0, 0x0100, 1, "m48a")
 AVR_MCU ("atmega48p",            ARCH_AVR4, "__AVR_ATmega48P__",         0, 0, 0x0100, 1, "m48p")
+AVR_MCU ("atmega48pa",           ARCH_AVR4, "__AVR_ATmega48PA__",        0, 0, 0x0100, 1, "m48pa")
 AVR_MCU ("atmega88",             ARCH_AVR4, "__AVR_ATmega88__",          0, 0, 0x0100, 1, "m88")
 AVR_MCU ("atmega88a",            ARCH_AVR4, "__AVR_ATmega88A__",         0, 0, 0x0100, 1, "m88a")
 AVR_MCU ("atmega88p",            ARCH_AVR4, "__AVR_ATmega88P__",         0, 0, 0x0100, 1, "m88p")
@@ -141,6 +145,9 @@ AVR_MCU ("at90pwm3b",            ARCH_AV
 AVR_MCU ("at90pwm81",            ARCH_AVR4, "__AVR_AT90PWM81__",         0, 0, 0x0100, 1, "90pwm81")
 /* Enhanced, > 8K, <= 64K.  */
 AVR_MCU ("avr5",                 ARCH_AVR5, NULL,                        0, 0, 0x0060, 1, "m16")
+AVR_MCU ("ata5790",              ARCH_AVR5, "__AVR_ATA5790__",           0, 0, 0x0100, 1, "a5790")
+AVR_MCU ("ata5790n",             ARCH_AVR5, "__AVR_ATA5790N__",          0, 0, 0x0100, 1, "a5790n")
+AVR_MCU ("ata5795",              ARCH_AVR5, "__AVR_ATA5795__",           0, 0, 0x0100, 1, "a5795")
 AVR_MCU ("atmega16",             ARCH_AVR5, "__AVR_ATmega16__",          0, 0, 0x0060, 1, "m16")
 AVR_MCU ("atmega16a",            ARCH_AVR5, "__AVR_ATmega16A__",         0, 0, 0x0060, 1, "m16a")
 AVR_MCU ("atmega161",            ARCH_AVR5, "__AVR_ATmega161__",         0, 0, 0x0060, 1, "m161")
@@ -148,17 +155,28 @@ AVR_MCU ("atmega162",            ARCH_AV
 AVR_MCU ("atmega163",            ARCH_AVR5, "__AVR_ATmega163__",         0, 0, 0x0060, 1, "m163")
 AVR_MCU ("atmega164a",           ARCH_AVR5, "__AVR_ATmega164A__",        0, 0, 0x0100, 1, "m164a")
 AVR_MCU ("atmega164p",           ARCH_AVR5, "__AVR_ATmega164P__",        0, 0, 0x0100, 1, "m164p")
+AVR_MCU ("atmega164pa",          ARCH_AVR5, "__AVR_ATmega164PA__",       0, 0, 0x0100, 1, "m164pa")
 AVR_MCU ("atmega165",            ARCH_AVR5, "__AVR_ATmega165__",         0, 0, 0x0100, 1, "m165")
 AVR_MCU ("atmega165a",           ARCH_AVR5, "__AVR_ATmega165A__",        0, 0, 0x0100, 1, "m165a")
 AVR_MCU ("atmega165p",           ARCH_AVR5, "__AVR_ATmega165P__",        0, 0, 0x0100, 1, "m165p")
+AVR_MCU ("atmega165pa",          ARCH_AVR5, "__AVR_ATmega165PA__",       0, 0, 0x0100, 1, "m165pa")
 AVR_MCU ("atmega168",            ARCH_AVR5, "__AVR_ATmega168__",         0, 0, 0x0100, 1, "m168")
 AVR_MCU ("atmega168a",           ARCH_AVR5, "__AVR_ATmega168A__",        0, 0, 0x0100, 1, "m168a")
 AVR_MCU ("atmega168p",           ARCH_AVR5, "__AVR_ATmega168P__",        0, 0, 0x0100, 1, "m168p")
+AVR_MCU ("atmega168pa",          ARCH_AVR5, "__AVR_ATmega168PA__",       0, 0, 0x0100, 1, "m168pa")
 AVR_MCU ("atmega169",            ARCH_AVR5, "__AVR_ATmega169__",         0, 0, 0x0100, 1, "m169")
 AVR_MCU ("atmega169a",           ARCH_AVR5, "__AVR_ATmega169A__",        0, 0, 0x0100, 1, "m169a")
 AVR_MCU ("atmega169p",           ARCH_AVR5, "__AVR_ATmega169P__",        0, 0, 0x0100, 1, "m169p")
 AVR_MCU ("atmega169pa",          ARCH_AVR5, "__AVR_ATmega169PA__",       0, 0, 0x0100, 1, "m169pa")
+AVR_MCU ("atmega16hva",          ARCH_AVR5, "__AVR_ATmega16HVA__",       0, 0, 0x0100, 1, "m16hva")
+AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
+AVR_MCU ("atmega16hvbrevb",      ARCH_AVR5, "__AVR_ATmega16HVBREVB__",   0, 0, 0x0100, 1, "m16hvbrevb")
+AVR_MCU ("atmega16m1",           ARCH_AVR5, "__AVR_ATmega16M1__",        0, 0, 0x0100, 1, "m16m1")
+AVR_MCU ("atmega16u4",           ARCH_AVR5, "__AVR_ATmega16U4__",        0, 0, 0x0100, 1, "m16u4")
+AVR_MCU ("atmega26hvg",          ARCH_AVR5, "__AVR_ATmega26HVG__",       0, 0, 0x0100, 1, "m26hvg")
+AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
 AVR_MCU ("atmega32",             ARCH_AVR5, "__AVR_ATmega32__",          0, 0, 0x0060, 1, "m32")
+AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
 AVR_MCU ("atmega323",            ARCH_AVR5, "__AVR_ATmega323__",         0, 0, 0x0060, 1, "m323")
 AVR_MCU ("atmega324a",           ARCH_AVR5, "__AVR_ATmega324A__",        0, 0, 0x0100, 1, "m324a")
 AVR_MCU ("atmega324p",           ARCH_AVR5, "__AVR_ATmega324P__",        0, 0, 0x0100, 1, "m324p")
@@ -169,6 +187,7 @@ AVR_MCU ("atmega325p",           ARCH_AV
 AVR_MCU ("atmega3250",           ARCH_AVR5, "__AVR_ATmega3250__",        0, 0, 0x0100, 1, "m3250")
 AVR_MCU ("atmega3250a",          ARCH_AVR5, "__AVR_ATmega3250A__",       0, 0, 0x0100, 1, "m3250a")
 AVR_MCU ("atmega3250p",          ARCH_AVR5, "__AVR_ATmega3250P__",       0, 0, 0x0100, 1, "m3250p")
+AVR_MCU ("atmega3250pa",         ARCH_AVR5, "__AVR_ATmega3250PA__",      0, 0, 0x0100, 1, "m3250pa")
 AVR_MCU ("atmega328",            ARCH_AVR5, "__AVR_ATmega328__",         0, 0, 0x0100, 1, "m328")
 AVR_MCU ("atmega328p",           ARCH_AVR5, "__AVR_ATmega328P__",        0, 0, 0x0100, 1, "m328p")
 AVR_MCU ("atmega329",            ARCH_AVR5, "__AVR_ATmega329__",         0, 0, 0x0100, 1, "m329")
@@ -178,8 +197,14 @@ AVR_MCU ("atmega329pa",          ARCH_AV
 AVR_MCU ("atmega3290",           ARCH_AVR5, "__AVR_ATmega3290__",        0, 0, 0x0100, 1, "m3290")
 AVR_MCU ("atmega3290a",          ARCH_AVR5, "__AVR_ATmega3290A__",       0, 0, 0x0100, 1, "m3290a")
 AVR_MCU ("atmega3290p",          ARCH_AVR5, "__AVR_ATmega3290P__",       0, 0, 0x0100, 1, "m3290p")
+AVR_MCU ("atmega3290pa",         ARCH_AVR5, "__AVR_ATmega3290PA__",      0, 0, 0x0100, 1, "m3290pa")
+AVR_MCU ("atmega32c1",           ARCH_AVR5, "__AVR_ATmega32C1__",        0, 0, 0x0100, 1, "m32c1")
+AVR_MCU ("atmega32m1",           ARCH_AVR5, "__AVR_ATmega32M1__",        0, 0, 0x0100, 1, "m32m1")
+AVR_MCU ("atmega32u4",           ARCH_AVR5, "__AVR_ATmega32U4__",        0, 0, 0x0100, 1, "m32u4")
+AVR_MCU ("atmega32u6",           ARCH_AVR5, "__AVR_ATmega32U6__",        0, 0, 0x0100, 1, "m32u6")
 AVR_MCU ("atmega406",            ARCH_AVR5, "__AVR_ATmega406__",         0, 0, 0x0100, 1, "m406")
 AVR_MCU ("atmega64",             ARCH_AVR5, "__AVR_ATmega64__",          0, 0, 0x0100, 1, "m64")
+AVR_MCU ("atmega64a",            ARCH_AVR5, "__AVR_ATmega64A__",         0, 0, 0x0100, 1, "m64a")
 AVR_MCU ("atmega640",            ARCH_AVR5, "__AVR_ATmega640__",         0, 0, 0x0200, 1, "m640")
 AVR_MCU ("atmega644",            ARCH_AVR5, "__AVR_ATmega644__",         0, 0, 0x0100, 1, "m644")
 AVR_MCU ("atmega644a",           ARCH_AVR5, "__AVR_ATmega644A__",        0, 0, 0x0100, 1, "m644a")
@@ -199,9 +224,20 @@ AVR_MCU ("atmega16hva",          ARCH_AV
 AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
 AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
 AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+AVR_MCU ("atmega6490a",          ARCH_AVR5, "__AVR_ATmega6490A__",       0, 0, 0x0100, 1, "m6490a")
+AVR_MCU ("atmega6490p",          ARCH_AVR5, "__AVR_ATmega6490P__",       0, 0, 0x0100, 1, "m6490p")
+AVR_MCU ("atmega64c1",           ARCH_AVR5, "__AVR_ATmega64C1__",        0, 0, 0x0100, 1, "m64c1")
+AVR_MCU ("atmega64m1",           ARCH_AVR5, "__AVR_ATmega64M1__",        0, 0, 0x0100, 1, "m64m1")
 AVR_MCU ("atmega64hve",          ARCH_AVR5, "__AVR_ATmega64HVE__",       0, 0, 0x0100, 1, "m64hve")
+AVR_MCU ("atmega64rfa2",         ARCH_AVR5, "__AVR_ATmega64RFA2__",      0, 0, 0x0200, 1, "m64rfa2")
+AVR_MCU ("atmega64rfr2",         ARCH_AVR5, "__AVR_ATmega64RFR2__",      0, 0, 0x0200, 1, "m64rfr2")
+AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+AVR_MCU ("atmega32hvbrevb",      ARCH_AVR5, "__AVR_ATmega32HVBREVB__",   0, 0, 0x0100, 1, "m32hvbrevb")
+AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
+AVR_MCU ("atmega48hvf",          ARCH_AVR5, "__AVR_ATmega48HVF__",       0, 0, 0x0100, 1, "m48hvf")
 AVR_MCU ("at90can32",            ARCH_AVR5, "__AVR_AT90CAN32__",         0, 0, 0x0100, 1, "can32")
 AVR_MCU ("at90can64",            ARCH_AVR5, "__AVR_AT90CAN64__",         0, 0, 0x0100, 1, "can64")
+AVR_MCU ("at90pwm161",           ARCH_AVR5, "__AVR_AT90PWM161__",        0, 0, 0x0100, 1, "90pwm161")
 AVR_MCU ("at90pwm216",           ARCH_AVR5, "__AVR_AT90PWM216__",        0, 0, 0x0100, 1, "90pwm216")
 AVR_MCU ("at90pwm316",           ARCH_AVR5, "__AVR_AT90PWM316__",        0, 0, 0x0100, 1, "90pwm316")
 AVR_MCU ("atmega32c1",           ARCH_AVR5, "__AVR_ATmega32C1__",        0, 0, 0x0100, 1, "m32c1")
@@ -220,8 +256,10 @@ AVR_MCU ("m3000",                ARCH_AV
 /* Enhanced, == 128K.  */
 AVR_MCU ("avr51",                ARCH_AVR51, NULL,                       0, 0, 0x0100, 2, "m128")
 AVR_MCU ("atmega128",            ARCH_AVR51, "__AVR_ATmega128__",        0, 0, 0x0100, 2, "m128")
+AVR_MCU ("atmega128a",           ARCH_AVR51, "__AVR_ATmega128A__",       0, 0, 0x0100, 2, "m128a")
 AVR_MCU ("atmega1280",           ARCH_AVR51, "__AVR_ATmega1280__",       0, 0, 0x0200, 2, "m1280")
 AVR_MCU ("atmega1281",           ARCH_AVR51, "__AVR_ATmega1281__",       0, 0, 0x0200, 2, "m1281")
+AVR_MCU ("atmega1284",           ARCH_AVR51, "__AVR_ATmega1284__",       0, 0, 0x0100, 2, "m1284")
 AVR_MCU ("atmega1284p",          ARCH_AVR51, "__AVR_ATmega1284P__",      0, 0, 0x0100, 2, "m1284p")
 AVR_MCU ("atmega128rfa1",        ARCH_AVR51, "__AVR_ATmega128RFA1__",    0, 0, 0x0200, 2, "m128rfa1")
 AVR_MCU ("at90can128",           ARCH_AVR51, "__AVR_AT90CAN128__",       0, 0, 0x0100, 2, "can128")
@@ -239,16 +277,31 @@ AVR_MCU ("atxmega16x1",      ARCH_AVRXME
 AVR_MCU ("atxmega32a4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__",      0, 0, 0x2000, 1, "x32a4")
 AVR_MCU ("atxmega32d4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__",      0, 0, 0x2000, 1, "x32d4")
 AVR_MCU ("atxmega32x1",      ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__",      0, 0, 0x2000, 1, "x32x1")
+AVR_MCU ("atmxt112sl",       ARCH_AVRXMEGA2, "__AVR_ATMXT112SL__",       0, 0, 0x2000, 1, "mxt112sl")
+AVR_MCU ("atmxt224",         ARCH_AVRXMEGA2, "__AVR_ATMXT224__",         0, 0, 0x2000, 1, "mxt224")
+AVR_MCU ("atmxt224e",        ARCH_AVRXMEGA2, "__AVR_ATMXT224E__",        0, 0, 0x2000, 1, "mxt224e")
+AVR_MCU ("atmxt336s",        ARCH_AVRXMEGA2, "__AVR_ATMXT336S__",        0, 0, 0x2000, 1, "mxt336s")
+AVR_MCU ("atxmega16a4u",     ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__",     0, 0, 0x2000, 1, "x16a4u")
+AVR_MCU ("atxmega16c4",      ARCH_AVRXMEGA2, "__AVR_ATxmega16C4__",      0, 0, 0x2000, 1, "x16c4")
+AVR_MCU ("atxmega32a4u",     ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__",     0, 0, 0x2000, 1, "x32a4u")
+AVR_MCU ("atxmega32c4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32C4__",      0, 0, 0x2000, 1, "x32c4")
+AVR_MCU ("atxmega32e5",      ARCH_AVRXMEGA2, "__AVR_ATxmega32E5__",      0, 0, 0x2000, 1, "x32e5")
 /* Xmega, 64K < Flash <= 128K, RAM <= 64K */
 AVR_MCU ("avrxmega4",        ARCH_AVRXMEGA4, NULL,                       0, 0, 0x2000, 2, "x64a4")
 AVR_MCU ("atxmega64a3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__",      0, 0, 0x2000, 2, "x64a3")
 AVR_MCU ("atxmega64d3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__",      0, 0, 0x2000, 2, "x64d3")
+AVR_MCU ("atxmega64a3u",     ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__",     0, 0, 0x2000, 2, "x64a3u")
+AVR_MCU ("atxmega64a4u",     ARCH_AVRXMEGA4, "__AVR_ATxmega64A4U__",     0, 0, 0x2000, 2, "x64a4u")
+AVR_MCU ("atxmega64b1",      ARCH_AVRXMEGA4, "__AVR_ATxmega64B1__",      0, 0, 0x2000, 2, "x64b1")
+AVR_MCU ("atxmega64b3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__",      0, 0, 0x2000, 2, "x64b3")
+AVR_MCU ("atxmega64c3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64C3__",      0, 0, 0x2000, 2, "x64c3")
+AVR_MCU ("atxmega64d4",      ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__",      0, 0, 0x2000, 2, "x64d4")
 /* Xmega, 64K < Flash <= 128K, RAM > 64K */
 AVR_MCU ("avrxmega5",        ARCH_AVRXMEGA5, NULL,                       0, 0, 0x2000, 2, "x64a1")
 AVR_MCU ("atxmega64a1",      ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__",      0, 0, 0x2000, 2, "x64a1")
 AVR_MCU ("atxmega64a1u",     ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__",     0, 0, 0x2000, 2, "x64a1u")
 /* Xmega, 128K < Flash, RAM <= 64K */
-AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, NULL,                       0, 0, 0x2000, 5, "x128a3")
+AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, NULL,                       0, 0, 0x2000, 6, "x128a3")
 AVR_MCU ("atxmega128a3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__",     0, 0, 0x2000, 3, "x128a3")
 AVR_MCU ("atxmega128d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__",     0, 0, 0x2000, 3, "x128d3")
 AVR_MCU ("atxmega192a3",     ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__",     0, 0, 0x2000, 4, "x192a3")
@@ -257,10 +310,24 @@ AVR_MCU ("atxmega256a3",     ARCH_AVRXME
 AVR_MCU ("atxmega256a3b",    ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__",    0, 0, 0x2000, 5, "x256a3b")
 AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__",   0, 0, 0x2000, 5, "x256a3bu")
 AVR_MCU ("atxmega256d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__",     0, 0, 0x2000, 5, "x256d3")
+AVR_MCU ("atxmega128a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__",    0, 0, 0x2000, 3, "x128a3u")
+AVR_MCU ("atxmega128b1",     ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__",     0, 0, 0x2000, 3, "x128b1")
+AVR_MCU ("atxmega128b3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128B3__",     0, 0, 0x2000, 3, "x128b3")
+AVR_MCU ("atxmega128c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128C3__",     0, 0, 0x2000, 3, "x128c3")
+AVR_MCU ("atxmega128d4",     ARCH_AVRXMEGA6, "__AVR_ATxmega128D4__",     0, 0, 0x2000, 3, "x128d4")
+AVR_MCU ("atmxt540s",        ARCH_AVRXMEGA6, "__AVR_ATMXT540S__",        0, 0, 0x2000, 2, "mxt540s")
+AVR_MCU ("atmxt540sreva",    ARCH_AVRXMEGA6, "__AVR_ATMXT540SREVA__",    0, 0, 0x2000, 2, "mxt540sreva")
+AVR_MCU ("atxmega192a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__",    0, 0, 0x2000, 4, "x192a3u")
+AVR_MCU ("atxmega192c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega192C3__",     0, 0, 0x2000, 4, "x192c3")
+AVR_MCU ("atxmega256a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega256A3U__",    0, 0, 0x2000, 5, "x256a3u")
+AVR_MCU ("atxmega256c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega256C3__",     0, 0, 0x2000, 5, "x256c3")
+AVR_MCU ("atxmega384c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega384C3__",     0, 0, 0x2000, 6, "x384c3")
+AVR_MCU ("atxmega384d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega384D3__",     0, 0, 0x2000, 6, "x384d3")
 /* Xmega, 128K < Flash, RAM > 64K RAM.  */
 AVR_MCU ("avrxmega7",        ARCH_AVRXMEGA7, NULL,                       0, 0, 0x2000, 3, "x128a1")
 AVR_MCU ("atxmega128a1",     ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__",     0, 0, 0x2000, 3, "x128a1")
 AVR_MCU ("atxmega128a1u",    ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__",    0, 0, 0x2000, 3, "x128a1u")
+AVR_MCU ("atxmega128a4u",    ARCH_AVRXMEGA7, "__AVR_ATxmega128A4U__",    0, 0, 0x2000, 3, "x128a4u")
 /* Assembler only.  */
 AVR_MCU ("avr1",                 ARCH_AVR1, NULL,                        0, 0, 0x0060, 1, "s1200")
 AVR_MCU ("at90s1200",            ARCH_AVR1, "__AVR_AT90S1200__",         0, 0, 0x0060, 1, "s1200")
Index: config/avr/avr-tables.opt
===================================================================
--- config/avr/avr-tables.opt	(revision 195877)
+++ config/avr/avr-tables.opt	(working copy)
@@ -69,530 +69,740 @@ EnumValue
 Enum(avr_mcu) String(ata6289) Value(14)
 
 EnumValue
-Enum(avr_mcu) String(attiny13) Value(15)
+Enum(avr_mcu) String(ata5272) Value(15)
 
 EnumValue
-Enum(avr_mcu) String(attiny13a) Value(16)
+Enum(avr_mcu) String(attiny13) Value(16)
 
 EnumValue
-Enum(avr_mcu) String(attiny2313) Value(17)
+Enum(avr_mcu) String(attiny13a) Value(17)
 
 EnumValue
-Enum(avr_mcu) String(attiny2313a) Value(18)
+Enum(avr_mcu) String(attiny2313) Value(18)
 
 EnumValue
-Enum(avr_mcu) String(attiny24) Value(19)
+Enum(avr_mcu) String(attiny2313a) Value(19)
 
 EnumValue
-Enum(avr_mcu) String(attiny24a) Value(20)
+Enum(avr_mcu) String(attiny24) Value(20)
 
 EnumValue
-Enum(avr_mcu) String(attiny4313) Value(21)
+Enum(avr_mcu) String(attiny24a) Value(21)
 
 EnumValue
-Enum(avr_mcu) String(attiny44) Value(22)
+Enum(avr_mcu) String(attiny4313) Value(22)
 
 EnumValue
-Enum(avr_mcu) String(attiny44a) Value(23)
+Enum(avr_mcu) String(attiny44) Value(23)
 
 EnumValue
-Enum(avr_mcu) String(attiny84) Value(24)
+Enum(avr_mcu) String(attiny44a) Value(24)
 
 EnumValue
-Enum(avr_mcu) String(attiny84a) Value(25)
+Enum(avr_mcu) String(attiny84) Value(25)
 
 EnumValue
-Enum(avr_mcu) String(attiny25) Value(26)
+Enum(avr_mcu) String(attiny84a) Value(26)
 
 EnumValue
-Enum(avr_mcu) String(attiny45) Value(27)
+Enum(avr_mcu) String(attiny25) Value(27)
 
 EnumValue
-Enum(avr_mcu) String(attiny85) Value(28)
+Enum(avr_mcu) String(attiny45) Value(28)
 
 EnumValue
-Enum(avr_mcu) String(attiny261) Value(29)
+Enum(avr_mcu) String(attiny85) Value(29)
 
 EnumValue
-Enum(avr_mcu) String(attiny261a) Value(30)
+Enum(avr_mcu) String(attiny261) Value(30)
 
 EnumValue
-Enum(avr_mcu) String(attiny461) Value(31)
+Enum(avr_mcu) String(attiny261a) Value(31)
 
 EnumValue
-Enum(avr_mcu) String(attiny461a) Value(32)
+Enum(avr_mcu) String(attiny461) Value(32)
 
 EnumValue
-Enum(avr_mcu) String(attiny861) Value(33)
+Enum(avr_mcu) String(attiny461a) Value(33)
 
 EnumValue
-Enum(avr_mcu) String(attiny861a) Value(34)
+Enum(avr_mcu) String(attiny861) Value(34)
 
 EnumValue
-Enum(avr_mcu) String(attiny43u) Value(35)
+Enum(avr_mcu) String(attiny861a) Value(35)
 
 EnumValue
-Enum(avr_mcu) String(attiny87) Value(36)
+Enum(avr_mcu) String(attiny43u) Value(36)
 
 EnumValue
-Enum(avr_mcu) String(attiny48) Value(37)
+Enum(avr_mcu) String(attiny87) Value(37)
 
 EnumValue
-Enum(avr_mcu) String(attiny88) Value(38)
+Enum(avr_mcu) String(attiny48) Value(38)
 
 EnumValue
-Enum(avr_mcu) String(at86rf401) Value(39)
+Enum(avr_mcu) String(attiny88) Value(39)
 
 EnumValue
-Enum(avr_mcu) String(avr3) Value(40)
+Enum(avr_mcu) String(at86rf401) Value(40)
 
 EnumValue
-Enum(avr_mcu) String(at43usb355) Value(41)
+Enum(avr_mcu) String(avr3) Value(41)
 
 EnumValue
-Enum(avr_mcu) String(at76c711) Value(42)
+Enum(avr_mcu) String(at43usb355) Value(42)
 
 EnumValue
-Enum(avr_mcu) String(avr31) Value(43)
+Enum(avr_mcu) String(at76c711) Value(43)
 
 EnumValue
-Enum(avr_mcu) String(atmega103) Value(44)
+Enum(avr_mcu) String(avr31) Value(44)
 
 EnumValue
-Enum(avr_mcu) String(at43usb320) Value(45)
+Enum(avr_mcu) String(atmega103) Value(45)
 
 EnumValue
-Enum(avr_mcu) String(avr35) Value(46)
+Enum(avr_mcu) String(at43usb320) Value(46)
 
 EnumValue
-Enum(avr_mcu) String(at90usb82) Value(47)
+Enum(avr_mcu) String(avr35) Value(47)
 
 EnumValue
-Enum(avr_mcu) String(at90usb162) Value(48)
+Enum(avr_mcu) String(ata5505) Value(48)
 
 EnumValue
-Enum(avr_mcu) String(atmega8u2) Value(49)
+Enum(avr_mcu) String(at90usb82) Value(49)
 
 EnumValue
-Enum(avr_mcu) String(atmega16u2) Value(50)
+Enum(avr_mcu) String(at90usb162) Value(50)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u2) Value(51)
+Enum(avr_mcu) String(atmega8u2) Value(51)
 
 EnumValue
-Enum(avr_mcu) String(attiny167) Value(52)
+Enum(avr_mcu) String(atmega16u2) Value(52)
 
 EnumValue
-Enum(avr_mcu) String(avr4) Value(53)
+Enum(avr_mcu) String(atmega32u2) Value(53)
 
 EnumValue
-Enum(avr_mcu) String(atmega8) Value(54)
+Enum(avr_mcu) String(attiny167) Value(54)
 
 EnumValue
-Enum(avr_mcu) String(atmega48) Value(55)
+Enum(avr_mcu) String(attiny1634) Value(55)
 
 EnumValue
-Enum(avr_mcu) String(atmega48a) Value(56)
+Enum(avr_mcu) String(avr4) Value(56)
 
 EnumValue
-Enum(avr_mcu) String(atmega48p) Value(57)
+Enum(avr_mcu) String(ata6285) Value(57)
 
 EnumValue
-Enum(avr_mcu) String(atmega88) Value(58)
+Enum(avr_mcu) String(ata6286) Value(58)
 
 EnumValue
-Enum(avr_mcu) String(atmega88a) Value(59)
+Enum(avr_mcu) String(atmega8) Value(59)
 
 EnumValue
-Enum(avr_mcu) String(atmega88p) Value(60)
+Enum(avr_mcu) String(atmega8a) Value(60)
 
 EnumValue
-Enum(avr_mcu) String(atmega88pa) Value(61)
+Enum(avr_mcu) String(atmega48) Value(61)
 
 EnumValue
-Enum(avr_mcu) String(atmega8515) Value(62)
+Enum(avr_mcu) String(atmega48a) Value(62)
 
 EnumValue
-Enum(avr_mcu) String(atmega8535) Value(63)
+Enum(avr_mcu) String(atmega48p) Value(63)
 
 EnumValue
-Enum(avr_mcu) String(atmega8hva) Value(64)
+Enum(avr_mcu) String(atmega48pa) Value(64)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm1) Value(65)
+Enum(avr_mcu) String(atmega88) Value(65)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm2) Value(66)
+Enum(avr_mcu) String(atmega88a) Value(66)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm2b) Value(67)
+Enum(avr_mcu) String(atmega88p) Value(67)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm3) Value(68)
+Enum(avr_mcu) String(atmega88pa) Value(68)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm3b) Value(69)
+Enum(avr_mcu) String(atmega8515) Value(69)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm81) Value(70)
+Enum(avr_mcu) String(atmega8535) Value(70)
 
 EnumValue
-Enum(avr_mcu) String(avr5) Value(71)
+Enum(avr_mcu) String(atmega8hva) Value(71)
 
 EnumValue
-Enum(avr_mcu) String(atmega16) Value(72)
+Enum(avr_mcu) String(at90pwm1) Value(72)
 
 EnumValue
-Enum(avr_mcu) String(atmega16a) Value(73)
+Enum(avr_mcu) String(at90pwm2) Value(73)
 
 EnumValue
-Enum(avr_mcu) String(atmega161) Value(74)
+Enum(avr_mcu) String(at90pwm2b) Value(74)
 
 EnumValue
-Enum(avr_mcu) String(atmega162) Value(75)
+Enum(avr_mcu) String(at90pwm3) Value(75)
 
 EnumValue
-Enum(avr_mcu) String(atmega163) Value(76)
+Enum(avr_mcu) String(at90pwm3b) Value(76)
 
 EnumValue
-Enum(avr_mcu) String(atmega164a) Value(77)
+Enum(avr_mcu) String(at90pwm81) Value(77)
 
 EnumValue
-Enum(avr_mcu) String(atmega164p) Value(78)
+Enum(avr_mcu) String(avr5) Value(78)
 
 EnumValue
-Enum(avr_mcu) String(atmega165) Value(79)
+Enum(avr_mcu) String(ata5790) Value(79)
 
 EnumValue
-Enum(avr_mcu) String(atmega165a) Value(80)
+Enum(avr_mcu) String(ata5790n) Value(80)
 
 EnumValue
-Enum(avr_mcu) String(atmega165p) Value(81)
+Enum(avr_mcu) String(ata5795) Value(81)
 
 EnumValue
-Enum(avr_mcu) String(atmega168) Value(82)
+Enum(avr_mcu) String(atmega16) Value(82)
 
 EnumValue
-Enum(avr_mcu) String(atmega168a) Value(83)
+Enum(avr_mcu) String(atmega16a) Value(83)
 
 EnumValue
-Enum(avr_mcu) String(atmega168p) Value(84)
+Enum(avr_mcu) String(atmega161) Value(84)
 
 EnumValue
-Enum(avr_mcu) String(atmega169) Value(85)
+Enum(avr_mcu) String(atmega162) Value(85)
 
 EnumValue
-Enum(avr_mcu) String(atmega169a) Value(86)
+Enum(avr_mcu) String(atmega163) Value(86)
 
 EnumValue
-Enum(avr_mcu) String(atmega169p) Value(87)
+Enum(avr_mcu) String(atmega164a) Value(87)
 
 EnumValue
-Enum(avr_mcu) String(atmega169pa) Value(88)
+Enum(avr_mcu) String(atmega164p) Value(88)
 
 EnumValue
-Enum(avr_mcu) String(atmega32) Value(89)
+Enum(avr_mcu) String(atmega164pa) Value(89)
 
 EnumValue
-Enum(avr_mcu) String(atmega323) Value(90)
+Enum(avr_mcu) String(atmega165) Value(90)
 
 EnumValue
-Enum(avr_mcu) String(atmega324a) Value(91)
+Enum(avr_mcu) String(atmega165a) Value(91)
 
 EnumValue
-Enum(avr_mcu) String(atmega324p) Value(92)
+Enum(avr_mcu) String(atmega165p) Value(92)
 
 EnumValue
-Enum(avr_mcu) String(atmega324pa) Value(93)
+Enum(avr_mcu) String(atmega165pa) Value(93)
 
 EnumValue
-Enum(avr_mcu) String(atmega325) Value(94)
+Enum(avr_mcu) String(atmega168) Value(94)
 
 EnumValue
-Enum(avr_mcu) String(atmega325a) Value(95)
+Enum(avr_mcu) String(atmega168a) Value(95)
 
 EnumValue
-Enum(avr_mcu) String(atmega325p) Value(96)
+Enum(avr_mcu) String(atmega168p) Value(96)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250) Value(97)
+Enum(avr_mcu) String(atmega168pa) Value(97)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250a) Value(98)
+Enum(avr_mcu) String(atmega169) Value(98)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250p) Value(99)
+Enum(avr_mcu) String(atmega169a) Value(99)
 
 EnumValue
-Enum(avr_mcu) String(atmega328) Value(100)
+Enum(avr_mcu) String(atmega169p) Value(100)
 
 EnumValue
-Enum(avr_mcu) String(atmega328p) Value(101)
+Enum(avr_mcu) String(atmega169pa) Value(101)
 
 EnumValue
-Enum(avr_mcu) String(atmega329) Value(102)
+Enum(avr_mcu) String(atmega16hva) Value(102)
 
 EnumValue
-Enum(avr_mcu) String(atmega329a) Value(103)
+Enum(avr_mcu) String(atmega16hvb) Value(103)
 
 EnumValue
-Enum(avr_mcu) String(atmega329p) Value(104)
+Enum(avr_mcu) String(atmega16hvbrevb) Value(104)
 
 EnumValue
-Enum(avr_mcu) String(atmega329pa) Value(105)
+Enum(avr_mcu) String(atmega16m1) Value(105)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290) Value(106)
+Enum(avr_mcu) String(atmega16u4) Value(106)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290a) Value(107)
+Enum(avr_mcu) String(atmega26hvg) Value(107)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290p) Value(108)
+Enum(avr_mcu) String(atmega32a) Value(108)
 
 EnumValue
-Enum(avr_mcu) String(atmega406) Value(109)
+Enum(avr_mcu) String(atmega32) Value(109)
 
 EnumValue
-Enum(avr_mcu) String(atmega64) Value(110)
+Enum(avr_mcu) String(atmega32a) Value(110)
 
 EnumValue
-Enum(avr_mcu) String(atmega640) Value(111)
+Enum(avr_mcu) String(atmega323) Value(111)
 
 EnumValue
-Enum(avr_mcu) String(atmega644) Value(112)
+Enum(avr_mcu) String(atmega324a) Value(112)
 
 EnumValue
-Enum(avr_mcu) String(atmega644a) Value(113)
+Enum(avr_mcu) String(atmega324p) Value(113)
 
 EnumValue
-Enum(avr_mcu) String(atmega644p) Value(114)
+Enum(avr_mcu) String(atmega324pa) Value(114)
 
 EnumValue
-Enum(avr_mcu) String(atmega644pa) Value(115)
+Enum(avr_mcu) String(atmega325) Value(115)
 
 EnumValue
-Enum(avr_mcu) String(atmega645) Value(116)
+Enum(avr_mcu) String(atmega325a) Value(116)
 
 EnumValue
-Enum(avr_mcu) String(atmega645a) Value(117)
+Enum(avr_mcu) String(atmega325p) Value(117)
 
 EnumValue
-Enum(avr_mcu) String(atmega645p) Value(118)
+Enum(avr_mcu) String(atmega3250) Value(118)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450) Value(119)
+Enum(avr_mcu) String(atmega3250a) Value(119)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450a) Value(120)
+Enum(avr_mcu) String(atmega3250p) Value(120)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450p) Value(121)
+Enum(avr_mcu) String(atmega3250pa) Value(121)
 
 EnumValue
-Enum(avr_mcu) String(atmega649) Value(122)
+Enum(avr_mcu) String(atmega328) Value(122)
 
 EnumValue
-Enum(avr_mcu) String(atmega649a) Value(123)
+Enum(avr_mcu) String(atmega328p) Value(123)
 
 EnumValue
-Enum(avr_mcu) String(atmega649p) Value(124)
+Enum(avr_mcu) String(atmega329) Value(124)
 
 EnumValue
-Enum(avr_mcu) String(atmega6490) Value(125)
+Enum(avr_mcu) String(atmega329a) Value(125)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hva) Value(126)
+Enum(avr_mcu) String(atmega329p) Value(126)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hva2) Value(127)
+Enum(avr_mcu) String(atmega329pa) Value(127)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hvb) Value(128)
+Enum(avr_mcu) String(atmega3290) Value(128)
 
 EnumValue
-Enum(avr_mcu) String(atmega32hvb) Value(129)
+Enum(avr_mcu) String(atmega3290a) Value(129)
 
 EnumValue
-Enum(avr_mcu) String(atmega64hve) Value(130)
+Enum(avr_mcu) String(atmega3290p) Value(130)
 
 EnumValue
-Enum(avr_mcu) String(at90can32) Value(131)
+Enum(avr_mcu) String(atmega3290pa) Value(131)
 
 EnumValue
-Enum(avr_mcu) String(at90can64) Value(132)
+Enum(avr_mcu) String(atmega32c1) Value(132)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm216) Value(133)
+Enum(avr_mcu) String(atmega32m1) Value(133)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm316) Value(134)
+Enum(avr_mcu) String(atmega32u4) Value(134)
 
 EnumValue
-Enum(avr_mcu) String(atmega32c1) Value(135)
+Enum(avr_mcu) String(atmega32u6) Value(135)
 
 EnumValue
-Enum(avr_mcu) String(atmega64c1) Value(136)
+Enum(avr_mcu) String(atmega406) Value(136)
 
 EnumValue
-Enum(avr_mcu) String(atmega16m1) Value(137)
+Enum(avr_mcu) String(atmega64) Value(137)
 
 EnumValue
-Enum(avr_mcu) String(atmega32m1) Value(138)
+Enum(avr_mcu) String(atmega64a) Value(138)
 
 EnumValue
-Enum(avr_mcu) String(atmega64m1) Value(139)
+Enum(avr_mcu) String(atmega640) Value(139)
 
 EnumValue
-Enum(avr_mcu) String(atmega16u4) Value(140)
+Enum(avr_mcu) String(atmega644) Value(140)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u4) Value(141)
+Enum(avr_mcu) String(atmega644a) Value(141)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u6) Value(142)
+Enum(avr_mcu) String(atmega644p) Value(142)
 
 EnumValue
-Enum(avr_mcu) String(at90scr100) Value(143)
+Enum(avr_mcu) String(atmega644pa) Value(143)
 
 EnumValue
-Enum(avr_mcu) String(at90usb646) Value(144)
+Enum(avr_mcu) String(atmega645) Value(144)
 
 EnumValue
-Enum(avr_mcu) String(at90usb647) Value(145)
+Enum(avr_mcu) String(atmega645a) Value(145)
 
 EnumValue
-Enum(avr_mcu) String(at94k) Value(146)
+Enum(avr_mcu) String(atmega645p) Value(146)
 
 EnumValue
-Enum(avr_mcu) String(m3000) Value(147)
+Enum(avr_mcu) String(atmega6450) Value(147)
 
 EnumValue
-Enum(avr_mcu) String(avr51) Value(148)
+Enum(avr_mcu) String(atmega6450a) Value(148)
 
 EnumValue
-Enum(avr_mcu) String(atmega128) Value(149)
+Enum(avr_mcu) String(atmega6450p) Value(149)
 
 EnumValue
-Enum(avr_mcu) String(atmega1280) Value(150)
+Enum(avr_mcu) String(atmega649) Value(150)
 
 EnumValue
-Enum(avr_mcu) String(atmega1281) Value(151)
+Enum(avr_mcu) String(atmega649a) Value(151)
 
 EnumValue
-Enum(avr_mcu) String(atmega1284p) Value(152)
+Enum(avr_mcu) String(atmega649p) Value(152)
 
 EnumValue
-Enum(avr_mcu) String(atmega128rfa1) Value(153)
+Enum(avr_mcu) String(atmega6490) Value(153)
 
 EnumValue
-Enum(avr_mcu) String(at90can128) Value(154)
+Enum(avr_mcu) String(atmega16hva) Value(154)
 
 EnumValue
-Enum(avr_mcu) String(at90usb1286) Value(155)
+Enum(avr_mcu) String(atmega16hva2) Value(155)
 
 EnumValue
-Enum(avr_mcu) String(at90usb1287) Value(156)
+Enum(avr_mcu) String(atmega16hvb) Value(156)
 
 EnumValue
-Enum(avr_mcu) String(avr6) Value(157)
+Enum(avr_mcu) String(atmega32hvb) Value(157)
 
 EnumValue
-Enum(avr_mcu) String(atmega2560) Value(158)
+Enum(avr_mcu) String(atmega6490a) Value(158)
 
 EnumValue
-Enum(avr_mcu) String(atmega2561) Value(159)
+Enum(avr_mcu) String(atmega6490p) Value(159)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega2) Value(160)
+Enum(avr_mcu) String(atmega64c1) Value(160)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16a4) Value(161)
+Enum(avr_mcu) String(atmega64m1) Value(161)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16d4) Value(162)
+Enum(avr_mcu) String(atmega64hve) Value(162)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16x1) Value(163)
+Enum(avr_mcu) String(atmega64rfa2) Value(163)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32a4) Value(164)
+Enum(avr_mcu) String(atmega64rfr2) Value(164)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32d4) Value(165)
+Enum(avr_mcu) String(atmega32hvb) Value(165)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32x1) Value(166)
+Enum(avr_mcu) String(atmega32hvbrevb) Value(166)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega4) Value(167)
+Enum(avr_mcu) String(atmega16hva2) Value(167)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a3) Value(168)
+Enum(avr_mcu) String(atmega48hvf) Value(168)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64d3) Value(169)
+Enum(avr_mcu) String(at90can32) Value(169)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega5) Value(170)
+Enum(avr_mcu) String(at90can64) Value(170)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a1) Value(171)
+Enum(avr_mcu) String(at90pwm161) Value(171)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a1u) Value(172)
+Enum(avr_mcu) String(at90pwm216) Value(172)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega6) Value(173)
+Enum(avr_mcu) String(at90pwm316) Value(173)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a3) Value(174)
+Enum(avr_mcu) String(atmega32c1) Value(174)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128d3) Value(175)
+Enum(avr_mcu) String(atmega64c1) Value(175)
 
 EnumValue
-Enum(avr_mcu) String(atxmega192a3) Value(176)
+Enum(avr_mcu) String(atmega16m1) Value(176)
 
 EnumValue
-Enum(avr_mcu) String(atxmega192d3) Value(177)
+Enum(avr_mcu) String(atmega32m1) Value(177)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3) Value(178)
+Enum(avr_mcu) String(atmega64m1) Value(178)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3b) Value(179)
+Enum(avr_mcu) String(atmega16u4) Value(179)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3bu) Value(180)
+Enum(avr_mcu) String(atmega32u4) Value(180)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256d3) Value(181)
+Enum(avr_mcu) String(atmega32u6) Value(181)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega7) Value(182)
+Enum(avr_mcu) String(at90scr100) Value(182)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a1) Value(183)
+Enum(avr_mcu) String(at90usb646) Value(183)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a1u) Value(184)
+Enum(avr_mcu) String(at90usb647) Value(184)
 
 EnumValue
-Enum(avr_mcu) String(avr1) Value(185)
+Enum(avr_mcu) String(at94k) Value(185)
 
 EnumValue
-Enum(avr_mcu) String(at90s1200) Value(186)
+Enum(avr_mcu) String(m3000) Value(186)
 
 EnumValue
-Enum(avr_mcu) String(attiny11) Value(187)
+Enum(avr_mcu) String(avr51) Value(187)
 
 EnumValue
-Enum(avr_mcu) String(attiny12) Value(188)
+Enum(avr_mcu) String(atmega128) Value(188)
 
 EnumValue
-Enum(avr_mcu) String(attiny15) Value(189)
+Enum(avr_mcu) String(atmega128a) Value(189)
 
 EnumValue
-Enum(avr_mcu) String(attiny28) Value(190)
+Enum(avr_mcu) String(atmega1280) Value(190)
+
+EnumValue
+Enum(avr_mcu) String(atmega1281) Value(191)
+
+EnumValue
+Enum(avr_mcu) String(atmega1284) Value(192)
+
+EnumValue
+Enum(avr_mcu) String(atmega1284p) Value(193)
+
+EnumValue
+Enum(avr_mcu) String(atmega128rfa1) Value(194)
+
+EnumValue
+Enum(avr_mcu) String(at90can128) Value(195)
+
+EnumValue
+Enum(avr_mcu) String(at90usb1286) Value(196)
+
+EnumValue
+Enum(avr_mcu) String(at90usb1287) Value(197)
+
+EnumValue
+Enum(avr_mcu) String(avr6) Value(198)
+
+EnumValue
+Enum(avr_mcu) String(atmega2560) Value(199)
+
+EnumValue
+Enum(avr_mcu) String(atmega2561) Value(200)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega2) Value(201)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16a4) Value(202)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16d4) Value(203)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16x1) Value(204)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32a4) Value(205)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32d4) Value(206)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32x1) Value(207)
+
+EnumValue
+Enum(avr_mcu) String(atmxt112sl) Value(208)
+
+EnumValue
+Enum(avr_mcu) String(atmxt224) Value(209)
+
+EnumValue
+Enum(avr_mcu) String(atmxt224e) Value(210)
+
+EnumValue
+Enum(avr_mcu) String(atmxt336s) Value(211)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16a4u) Value(212)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16c4) Value(213)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32a4u) Value(214)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32c4) Value(215)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32e5) Value(216)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega4) Value(217)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a3) Value(218)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64d3) Value(219)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a3u) Value(220)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a4u) Value(221)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64b1) Value(222)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64b3) Value(223)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64c3) Value(224)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64d4) Value(225)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega5) Value(226)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a1) Value(227)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a1u) Value(228)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega6) Value(229)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a3) Value(230)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128d3) Value(231)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192a3) Value(232)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192d3) Value(233)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3) Value(234)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3b) Value(235)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3bu) Value(236)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256d3) Value(237)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a3u) Value(238)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128b1) Value(239)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128b3) Value(240)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128c3) Value(241)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128d4) Value(242)
+
+EnumValue
+Enum(avr_mcu) String(atmxt540s) Value(243)
+
+EnumValue
+Enum(avr_mcu) String(atmxt540sreva) Value(244)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192a3u) Value(245)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192c3) Value(246)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3u) Value(247)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256c3) Value(248)
+
+EnumValue
+Enum(avr_mcu) String(atxmega384c3) Value(249)
+
+EnumValue
+Enum(avr_mcu) String(atxmega384d3) Value(250)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega7) Value(251)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a1) Value(252)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a1u) Value(253)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a4u) Value(254)
+
+EnumValue
+Enum(avr_mcu) String(avr1) Value(255)
+
+EnumValue
+Enum(avr_mcu) String(at90s1200) Value(256)
+
+EnumValue
+Enum(avr_mcu) String(attiny11) Value(257)
+
+EnumValue
+Enum(avr_mcu) String(attiny12) Value(258)
+
+EnumValue
+Enum(avr_mcu) String(attiny15) Value(259)
+
+EnumValue
+Enum(avr_mcu) String(attiny28) Value(260)
 
Index: config/avr/driver-avr.c
===================================================================
--- config/avr/driver-avr.c	(revision 195877)
+++ config/avr/driver-avr.c	(working copy)
@@ -48,10 +48,27 @@ avr_set_current_device (const char *name
   avr_current_arch = &avr_arch_types[avr_current_device->arch];
 }
 
-/* Returns command line parameters that describe the device architecture.  */
+/* Returns command line parameters to pass to as.  */
 
-const char *
-avr_device_to_arch (int argc, const char **argv)
+const char*
+avr_device_to_as (int argc, const char **argv)
+{
+  if (0 == argc)
+    return NULL;
+
+  avr_set_current_device (argv[0]);
+
+  enum avr_arch arch_for_as = avr_current_arch->arch_for_as;
+
+  return concat ("-mmcu=", avr_arch_types[arch_for_as].arch_name,
+                 avr_current_device->errata_skip ? "" : " -mno-skip-bug",
+                 NULL);
+}
+
+/* Returns command line parameters to pass to ld.  */
+
+const char*
+avr_device_to_ld (int argc, const char **argv)
 {
   if (0 == argc)
     return NULL;
Index: config/avr/avr.h
===================================================================
--- config/avr/avr.h	(revision 195877)
+++ config/avr/avr.h	(working copy)
@@ -486,14 +486,16 @@ typedef struct avr_args
 #define ADJUST_INSN_LENGTH(INSN, LENGTH)                \
     (LENGTH = avr_adjust_insn_length (INSN, LENGTH))
 
-extern const char *avr_device_to_arch (int argc, const char **argv);
+extern const char *avr_device_to_as (int argc, const char **argv);
+extern const char *avr_device_to_ld (int argc, const char **argv);
 extern const char *avr_device_to_data_start (int argc, const char **argv);
 extern const char *avr_device_to_startfiles (int argc, const char **argv);
 extern const char *avr_device_to_devicelib (int argc, const char **argv);
 extern const char *avr_device_to_sp8 (int argc, const char **argv);
 
 #define EXTRA_SPEC_FUNCTIONS                            \
-  { "device_to_arch", avr_device_to_arch },             \
+  { "device_to_as", avr_device_to_as },                 \
+  { "device_to_ld", avr_device_to_ld },                 \
   { "device_to_data_start", avr_device_to_data_start }, \
   { "device_to_startfile", avr_device_to_startfiles },  \
   { "device_to_devicelib", avr_device_to_devicelib },   \
@@ -507,14 +509,9 @@ extern const char *avr_device_to_sp8 (in
 #define CC1PLUS_SPEC "%{!frtti:-fno-rtti} \
     %{!fenforce-eh-specs:-fno-enforce-eh-specs} \
     %{!fexceptions:-fno-exceptions}"
-/* A C string constant that tells the GCC driver program options to
-   pass to `cc1plus'.  */
-
-#define ASM_SPEC "%{mmcu=avr25:-mmcu=avr2;mmcu=avr35:-mmcu=avr3;mmcu=avr31:-mmcu=avr3;mmcu=avr51:-mmcu=avr5;\
-mmcu=*:-mmcu=%*} \
-%{mmcu=*:%{!mmcu=avr2:%{!mmcu=at90s8515:%{!mmcu=avr31:%{!mmcu=atmega103:\
--mno-skip-bug}}}}}"
 
+#define ASM_SPEC "%:device_to_as(%{mmcu=*:%*}) "
+  
 #define LINK_SPEC "\
 %{mrelax:--relax\
          %{mpmem-wrap-around:%{mmcu=at90usb8*:--pmem-wrap-around=8k}\
@@ -524,7 +521,7 @@ mmcu=*:-mmcu=%*} \
                              %{mmcu=atmega64*|\
                                mmcu=at90can64*|\
                                mmcu=at90usb64*:--pmem-wrap-around=64k}}}\
-%:device_to_arch(%{mmcu=*:%*})\
+%:device_to_as(%{mmcu=*:%*})\
 %:device_to_data_start(%{mmcu=*:%*})"
 
 #define LIB_SPEC \
Index: doc/avr-mmcu.texi
===================================================================
--- doc/avr-mmcu.texi	(revision 195736)
+++ doc/avr-mmcu.texi	(working copy)
@@ -18,7 +18,7 @@
 
 @item avr25
 ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}.
+@*@var{mcu}@tie{}= @code{ata5272}, @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}.
 
 @item avr3
 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
@@ -30,19 +30,19 @@
 
 @item avr35
 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
+@*@var{mcu}@tie{}= @code{ata5505}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny1634}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
 
 @item avr4
 ``Enhanced'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega8}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
+@*@var{mcu}@tie{}= @code{ata6285}, @code{ata6286}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega48pa}, @code{atmega8}, @code{atmega8a}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
 
 @item avr5
 ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega406}, @code{atmega64}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
+@*@var{mcu}@tie{}= @code{ata5790}, @code{ata5790n}, @code{ata5795}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega26hvg}, @code{atmega32}, @code{atmega32a}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega48hvf}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega64m1}, @code{atmega64rfa2}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
 
 @item avr51
 ``Enhanced'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}.
+@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128a}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}.
 
 @item avr6
 ``Enhanced'' devices with 3-byte PC, i.e.@: with more than 128@tie{}KiB of program memory.
@@ -50,11 +50,11 @@
 
 @item avrxmega2
 ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega16a4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32d4}, @code{atxmega32x1}.
+@*@var{mcu}@tie{}= @code{atmxt112sl}, @code{atmxt224}, @code{atmxt224e}, @code{atmxt336s}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c4}, @code{atxmega32d4}, @code{atxmega32e5}, @code{atxmega32x1}.
 
 @item avrxmega4
 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64d3}.
+@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64a3u}, @code{atxmega64a4u}, @code{atxmega64b1}, @code{atxmega64b3}, @code{atxmega64c3}, @code{atxmega64d3}, @code{atxmega64d4}.
 
 @item avrxmega5
 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
@@ -62,11 +62,11 @@
 
 @item avrxmega6
 ``XMEGA'' devices with more than 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega128a3}, @code{atxmega128d3}, @code{atxmega192a3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256d3}.
+@*@var{mcu}@tie{}= @code{atmxt540s}, @code{atmxt540sreva}, @code{atxmega128a3}, @code{atxmega128a3u}, @code{atxmega128b1}, @code{atxmega128b3}, @code{atxmega128c3}, @code{atxmega128d3}, @code{atxmega128d4}, @code{atxmega192a3}, @code{atxmega192a3u}, @code{atxmega192c3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256a3u}, @code{atxmega256c3}, @code{atxmega256d3}, @code{atxmega384c3}, @code{atxmega384d3}.
 
 @item avrxmega7
 ``XMEGA'' devices with more than 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
-@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}.
+@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}, @code{atxmega128a4u}.
 
 @item avr1
 This ISA is implemented by the minimal AVR core and supported for assembler only.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Patch,avr]: Add more devices take #2: 1/2
  2013-02-12 15:33 [Patch,avr]: Add more devices Georg-Johann Lay
@ 2013-02-13 10:05 ` Georg-Johann Lay
  2013-02-13 10:07   ` Georg-Johann Lay
  2013-02-13 10:17 ` [Patch,avr]: Add more devices take #2: 2/2 Georg-Johann Lay
  1 sibling, 1 reply; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-13 10:05 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington

Let me drop this, I was thinking too complicated.

src/gas/config/tc-avr.c

reads:

static struct mcu_type_s mcu_types[] =
{
  {"avr1",       AVR_ISA_AVR1,    bfd_mach_avr1},
/* TODO: insruction set for avr2 architecture should be AVR_ISA_AVR2,
 but set to AVR_ISA_AVR25 for some following version
 of GCC (from 4.3) for backward compatibility.  */
  {"avr2",       AVR_ISA_AVR25,   bfd_mach_avr2},
  {"avr25",      AVR_ISA_AVR25,   bfd_mach_avr25},
/* TODO: insruction set for avr3 architecture should be AVR_ISA_AVR3,
 but set to AVR_ISA_AVR3_ALL for some following version
 of GCC (from 4.3) for backward compatibility.  */
  {"avr3",       AVR_ISA_AVR3_ALL, bfd_mach_avr3},
  {"avr31",      AVR_ISA_AVR31,   bfd_mach_avr31},
  {"avr35",      AVR_ISA_AVR35,   bfd_mach_avr35},
  {"avr4",       AVR_ISA_AVR4,    bfd_mach_avr4},
/* TODO: insruction set for avr5 architecture should be AVR_ISA_AVR5,
 but set to AVR_ISA_AVR51 for some following version
 of GCC (from 4.3) for backward compatibility.  */
  {"avr5",       AVR_ISA_AVR51,   bfd_mach_avr5},
  {"avr51",      AVR_ISA_AVR51,   bfd_mach_avr51},
  {"avr6",       AVR_ISA_AVR6,    bfd_mach_avr6},

This means that cores liek avr31, avr35 etc. are supported by binutils and
there is no more the need for avr-gcc to do mappings like avr31 -> avr3.

It appears that avr-gcc implemented these mappings to overcome missing binutils
support for specific cores, and in turn binutils arranged for that kludge...

This means that avr_arch_t need not to be extended to hold the arch mapping for
gas calls and the gas call can use the core name from avr_arch_t.


I broke the patch into two parts:

1/2:  New devices
2/2:  Map device to core to disentangle gcc/binutils interdependencies.

Okay for trunk and 4.7 backport?

Johann


	* avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
	(ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
	(atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
	(atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
	(atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
	(atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
	(atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
	(atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
	(atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
	(atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
	(atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
	(atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
	(atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
	(atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
	(atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
	(avrxmega6): Increase max flash segments from 5 to 6.
	* config/avr/t-multilib: Regenerate.
	* config/avr/avr-tables.opt: Regenerate.
	* doc/avr-mmcu.texi: Regenerate.


Georg-Johann Lay wrote:
> This patch adds more devices to avr-mcus.def and regenerates depending files.
> 
> There is a new spec function that is the worker for ASM_SPEC and that
> transforms -mmcu=device to -mmcu=arch for avr-as.
> 
> This transformation was already performed for avr25, avr31, avr35 and avr51 and
> is now performed for all devices so that avr-as only need to support -mmcu=arch.
> 
> Rationale is to reduce tool dependencies:  as need not to know what device it
> compiles for, the core is enough.  The only cases where the core arch is no
> enough is
> 
> - Tell whether the device suffers from skip silicon bug
> - Tell whether the device supporte DES, XCH, LAS, LAC, LAT instruction.
> 
> The first case is handled by device_to_as that issues -mno-skip-bug as needed.
> 
> The second case is not handled.  Binutils is agnostic w.r.t. availability of
> these instructions if the exact device is supplied.  If binutils will wver be
> extended to know about these instructions, the preferred way is as described in
> 
> http://sourceware.org/PR15043
> 
> i.e. add new ISA options to binutils.  That way, tools dependencies can be
> disentangled and binutils need not to be changed for every new device.
> 
> Ok for trunk?
> 
> Even though this is new feature, I'd propose to backport the additions to
> avr-mcus.def to 4.7.  The changes to avr-mcus.def are obvious enough, IMO.
> 
> Okay to backport avr-mcus.def and docs part to 4.7 then?
> 
> Johann
> 
> 	* config/avr/avr-arch.h (avr_arch_t) <arch_for_as>: New component.
> 	* config/avr/avr-devices.c: Initialize it.
> 	* config/avr/avr.h (device_to_arch): Rename to device_to_ld.
> 	(avr_device_to_arch): Rename to avr_device_to_ld.
> 	(avr_device_to_as): New prototype.
> 	(EXTRA_SPEC_FUNCTIONS): Add device_to_as.
> 	(ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
> 	* config/avr/driver-avr.c (avr_device_to_as): New.
> 	(avr_device_to_arch): Rename to avr_device_to_ld.
> 	* avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
> 	(ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
> 	(atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
> 	(atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
> 	(atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
> 	(atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
> 	(atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
> 	(atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
> 	(atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
> 	(atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
> 	(atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
> 	(atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
> 	(atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
> 	(atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
> 	(atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
> 	(avrxmega6): Increase max flash segments from 5 to 6.
> 	* config/avr/t-multilib: Regenerate.
> 	* config/avr/avr-tables.opt: Regenerate.
> 	* doc/avr-mmcu.texi: Regenerate.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Patch,avr]: Add more devices take #2: 1/2
  2013-02-13 10:05 ` [Patch,avr]: Add more devices take #2: 1/2 Georg-Johann Lay
@ 2013-02-13 10:07   ` Georg-Johann Lay
  2013-02-19 15:37     ` Ping: " Georg-Johann Lay
  0 siblings, 1 reply; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-13 10:07 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington

[-- Attachment #1: Type: text/plain, Size: 3084 bytes --]

Better attach the patch...

Georg-Johann Lay wrote:
> Let me drop this, I was thinking too complicated.
> 
> src/gas/config/tc-avr.c
> 
> reads:
> 
> static struct mcu_type_s mcu_types[] =
> {
>   {"avr1",       AVR_ISA_AVR1,    bfd_mach_avr1},
> /* TODO: insruction set for avr2 architecture should be AVR_ISA_AVR2,
>  but set to AVR_ISA_AVR25 for some following version
>  of GCC (from 4.3) for backward compatibility.  */
>   {"avr2",       AVR_ISA_AVR25,   bfd_mach_avr2},
>   {"avr25",      AVR_ISA_AVR25,   bfd_mach_avr25},
> /* TODO: insruction set for avr3 architecture should be AVR_ISA_AVR3,
>  but set to AVR_ISA_AVR3_ALL for some following version
>  of GCC (from 4.3) for backward compatibility.  */
>   {"avr3",       AVR_ISA_AVR3_ALL, bfd_mach_avr3},
>   {"avr31",      AVR_ISA_AVR31,   bfd_mach_avr31},
>   {"avr35",      AVR_ISA_AVR35,   bfd_mach_avr35},
>   {"avr4",       AVR_ISA_AVR4,    bfd_mach_avr4},
> /* TODO: insruction set for avr5 architecture should be AVR_ISA_AVR5,
>  but set to AVR_ISA_AVR51 for some following version
>  of GCC (from 4.3) for backward compatibility.  */
>   {"avr5",       AVR_ISA_AVR51,   bfd_mach_avr5},
>   {"avr51",      AVR_ISA_AVR51,   bfd_mach_avr51},
>   {"avr6",       AVR_ISA_AVR6,    bfd_mach_avr6},
> 
> This means that cores liek avr31, avr35 etc. are supported by binutils and
> there is no more the need for avr-gcc to do mappings like avr31 -> avr3.
> 
> It appears that avr-gcc implemented these mappings to overcome missing binutils
> support for specific cores, and in turn binutils arranged for that kludge...
> 
> This means that avr_arch_t need not to be extended to hold the arch mapping for
> gas calls and the gas call can use the core name from avr_arch_t.
> 
> 
> I broke the patch into two parts:
> 
> 1/2:  New devices
> 2/2:  Map device to core to disentangle gcc/binutils interdependencies.
> 
> Okay for trunk and 4.7 backport?
> 
> Johann
> 
> 
> 	* avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
> 	(ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
> 	(atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
> 	(atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
> 	(atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
> 	(atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
> 	(atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
> 	(atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
> 	(atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
> 	(atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
> 	(atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
> 	(atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
> 	(atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
> 	(atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
> 	(atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
> 	(avrxmega6): Increase max flash segments from 5 to 6.
> 	* config/avr/t-multilib: Regenerate.
> 	* config/avr/avr-tables.opt: Regenerate.
> 	* doc/avr-mmcu.texi: Regenerate.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: more-devices-1.diff --]
[-- Type: text/x-patch; name="more-devices-1.diff", Size: 56259 bytes --]

Index: config/avr/avr-mcus.def
===================================================================
--- config/avr/avr-mcus.def	(revision 195877)
+++ config/avr/avr-mcus.def	(working copy)
@@ -28,11 +28,8 @@
    -  $(srcdir)/doc/avr-mmcu.texi
 
    After that, rebuild everything and check-in the new sources to the repo.
-   The device list below has to be kept in sync with the following places:
+   The device list below has to be kept in sync with AVR-LibC.
 
-   -  here
-   -  gas/config/tc-avr.c
-   -  avr-libc
 
    Before including this file, define a macro:
 
@@ -79,6 +76,7 @@ AVR_MCU ("at90s8535",            ARCH_AV
 /* Classic + MOVW, <= 8K.  */
 AVR_MCU ("avr25",                ARCH_AVR25, NULL,                       0, 0, 0x0060, 1, "tn85")
 AVR_MCU ("ata6289",              ARCH_AVR25, "__AVR_ATA6289__",          0, 0, 0x0100, 1, "a6289")
+AVR_MCU ("ata5272",              ARCH_AVR25, "__AVR_ATA5272__",          0, 0, 0x0100, 1, "a5272")
 AVR_MCU ("attiny13",             ARCH_AVR25, "__AVR_ATtiny13__",         1, 0, 0x0060, 1, "tn13")
 AVR_MCU ("attiny13a",            ARCH_AVR25, "__AVR_ATtiny13A__",        1, 0, 0x0060, 1, "tn13a")
 AVR_MCU ("attiny2313",           ARCH_AVR25, "__AVR_ATtiny2313__",       1, 0, 0x0060, 1, "tn2313")
@@ -114,18 +112,24 @@ AVR_MCU ("atmega103",            ARCH_AV
 AVR_MCU ("at43usb320",           ARCH_AVR31, "__AVR_AT43USB320__",       0, 0, 0x0060, 2, "43320")
 /* Classic + MOVW + JMP/CALL.  */
 AVR_MCU ("avr35",                ARCH_AVR35, NULL,                       0, 0, 0x0100, 1, "usb162")
+AVR_MCU ("ata5505",              ARCH_AVR35, "__AVR_ATA5505__",          0, 0, 0x0100, 1, "a5505")
 AVR_MCU ("at90usb82",            ARCH_AVR35, "__AVR_AT90USB82__",        0, 0, 0x0100, 1, "usb82")
 AVR_MCU ("at90usb162",           ARCH_AVR35, "__AVR_AT90USB162__",       0, 0, 0x0100, 1, "usb162")
 AVR_MCU ("atmega8u2",            ARCH_AVR35, "__AVR_ATmega8U2__",        0, 0, 0x0100, 1, "m8u2")
 AVR_MCU ("atmega16u2",           ARCH_AVR35, "__AVR_ATmega16U2__",       0, 0, 0x0100, 1, "m16u2")
 AVR_MCU ("atmega32u2",           ARCH_AVR35, "__AVR_ATmega32U2__",       0, 0, 0x0100, 1, "m32u2")
 AVR_MCU ("attiny167",            ARCH_AVR35, "__AVR_ATtiny167__",        0, 0, 0x0100, 1, "tn167")
+AVR_MCU ("attiny1634",           ARCH_AVR35, "__AVR_ATtiny1634__",       0, 0, 0x0100, 1, "tn1634")
 /* Enhanced, <= 8K.  */
 AVR_MCU ("avr4",                 ARCH_AVR4, NULL,                        0, 0, 0x0060, 1, "m8")
+AVR_MCU ("ata6285",              ARCH_AVR4, "__AVR_ATA6285__",           0, 0, 0x0100, 1, "a6285")
+AVR_MCU ("ata6286",              ARCH_AVR4, "__AVR_ATA6286__",           0, 0, 0x0100, 1, "a6286")
 AVR_MCU ("atmega8",              ARCH_AVR4, "__AVR_ATmega8__",           0, 0, 0x0060, 1, "m8")
+AVR_MCU ("atmega8a",             ARCH_AVR4, "__AVR_ATmega8A__",          0, 0, 0x0060, 1, "m8a")
 AVR_MCU ("atmega48",             ARCH_AVR4, "__AVR_ATmega48__",          0, 0, 0x0100, 1, "m48")
 AVR_MCU ("atmega48a",            ARCH_AVR4, "__AVR_ATmega48A__",         0, 0, 0x0100, 1, "m48a")
 AVR_MCU ("atmega48p",            ARCH_AVR4, "__AVR_ATmega48P__",         0, 0, 0x0100, 1, "m48p")
+AVR_MCU ("atmega48pa",           ARCH_AVR4, "__AVR_ATmega48PA__",        0, 0, 0x0100, 1, "m48pa")
 AVR_MCU ("atmega88",             ARCH_AVR4, "__AVR_ATmega88__",          0, 0, 0x0100, 1, "m88")
 AVR_MCU ("atmega88a",            ARCH_AVR4, "__AVR_ATmega88A__",         0, 0, 0x0100, 1, "m88a")
 AVR_MCU ("atmega88p",            ARCH_AVR4, "__AVR_ATmega88P__",         0, 0, 0x0100, 1, "m88p")
@@ -141,6 +145,9 @@ AVR_MCU ("at90pwm3b",            ARCH_AV
 AVR_MCU ("at90pwm81",            ARCH_AVR4, "__AVR_AT90PWM81__",         0, 0, 0x0100, 1, "90pwm81")
 /* Enhanced, > 8K, <= 64K.  */
 AVR_MCU ("avr5",                 ARCH_AVR5, NULL,                        0, 0, 0x0060, 1, "m16")
+AVR_MCU ("ata5790",              ARCH_AVR5, "__AVR_ATA5790__",           0, 0, 0x0100, 1, "a5790")
+AVR_MCU ("ata5790n",             ARCH_AVR5, "__AVR_ATA5790N__",          0, 0, 0x0100, 1, "a5790n")
+AVR_MCU ("ata5795",              ARCH_AVR5, "__AVR_ATA5795__",           0, 0, 0x0100, 1, "a5795")
 AVR_MCU ("atmega16",             ARCH_AVR5, "__AVR_ATmega16__",          0, 0, 0x0060, 1, "m16")
 AVR_MCU ("atmega16a",            ARCH_AVR5, "__AVR_ATmega16A__",         0, 0, 0x0060, 1, "m16a")
 AVR_MCU ("atmega161",            ARCH_AVR5, "__AVR_ATmega161__",         0, 0, 0x0060, 1, "m161")
@@ -148,17 +155,28 @@ AVR_MCU ("atmega162",            ARCH_AV
 AVR_MCU ("atmega163",            ARCH_AVR5, "__AVR_ATmega163__",         0, 0, 0x0060, 1, "m163")
 AVR_MCU ("atmega164a",           ARCH_AVR5, "__AVR_ATmega164A__",        0, 0, 0x0100, 1, "m164a")
 AVR_MCU ("atmega164p",           ARCH_AVR5, "__AVR_ATmega164P__",        0, 0, 0x0100, 1, "m164p")
+AVR_MCU ("atmega164pa",          ARCH_AVR5, "__AVR_ATmega164PA__",       0, 0, 0x0100, 1, "m164pa")
 AVR_MCU ("atmega165",            ARCH_AVR5, "__AVR_ATmega165__",         0, 0, 0x0100, 1, "m165")
 AVR_MCU ("atmega165a",           ARCH_AVR5, "__AVR_ATmega165A__",        0, 0, 0x0100, 1, "m165a")
 AVR_MCU ("atmega165p",           ARCH_AVR5, "__AVR_ATmega165P__",        0, 0, 0x0100, 1, "m165p")
+AVR_MCU ("atmega165pa",          ARCH_AVR5, "__AVR_ATmega165PA__",       0, 0, 0x0100, 1, "m165pa")
 AVR_MCU ("atmega168",            ARCH_AVR5, "__AVR_ATmega168__",         0, 0, 0x0100, 1, "m168")
 AVR_MCU ("atmega168a",           ARCH_AVR5, "__AVR_ATmega168A__",        0, 0, 0x0100, 1, "m168a")
 AVR_MCU ("atmega168p",           ARCH_AVR5, "__AVR_ATmega168P__",        0, 0, 0x0100, 1, "m168p")
+AVR_MCU ("atmega168pa",          ARCH_AVR5, "__AVR_ATmega168PA__",       0, 0, 0x0100, 1, "m168pa")
 AVR_MCU ("atmega169",            ARCH_AVR5, "__AVR_ATmega169__",         0, 0, 0x0100, 1, "m169")
 AVR_MCU ("atmega169a",           ARCH_AVR5, "__AVR_ATmega169A__",        0, 0, 0x0100, 1, "m169a")
 AVR_MCU ("atmega169p",           ARCH_AVR5, "__AVR_ATmega169P__",        0, 0, 0x0100, 1, "m169p")
 AVR_MCU ("atmega169pa",          ARCH_AVR5, "__AVR_ATmega169PA__",       0, 0, 0x0100, 1, "m169pa")
+AVR_MCU ("atmega16hva",          ARCH_AVR5, "__AVR_ATmega16HVA__",       0, 0, 0x0100, 1, "m16hva")
+AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
+AVR_MCU ("atmega16hvbrevb",      ARCH_AVR5, "__AVR_ATmega16HVBREVB__",   0, 0, 0x0100, 1, "m16hvbrevb")
+AVR_MCU ("atmega16m1",           ARCH_AVR5, "__AVR_ATmega16M1__",        0, 0, 0x0100, 1, "m16m1")
+AVR_MCU ("atmega16u4",           ARCH_AVR5, "__AVR_ATmega16U4__",        0, 0, 0x0100, 1, "m16u4")
+AVR_MCU ("atmega26hvg",          ARCH_AVR5, "__AVR_ATmega26HVG__",       0, 0, 0x0100, 1, "m26hvg")
+AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
 AVR_MCU ("atmega32",             ARCH_AVR5, "__AVR_ATmega32__",          0, 0, 0x0060, 1, "m32")
+AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
 AVR_MCU ("atmega323",            ARCH_AVR5, "__AVR_ATmega323__",         0, 0, 0x0060, 1, "m323")
 AVR_MCU ("atmega324a",           ARCH_AVR5, "__AVR_ATmega324A__",        0, 0, 0x0100, 1, "m324a")
 AVR_MCU ("atmega324p",           ARCH_AVR5, "__AVR_ATmega324P__",        0, 0, 0x0100, 1, "m324p")
@@ -169,6 +187,7 @@ AVR_MCU ("atmega325p",           ARCH_AV
 AVR_MCU ("atmega3250",           ARCH_AVR5, "__AVR_ATmega3250__",        0, 0, 0x0100, 1, "m3250")
 AVR_MCU ("atmega3250a",          ARCH_AVR5, "__AVR_ATmega3250A__",       0, 0, 0x0100, 1, "m3250a")
 AVR_MCU ("atmega3250p",          ARCH_AVR5, "__AVR_ATmega3250P__",       0, 0, 0x0100, 1, "m3250p")
+AVR_MCU ("atmega3250pa",         ARCH_AVR5, "__AVR_ATmega3250PA__",      0, 0, 0x0100, 1, "m3250pa")
 AVR_MCU ("atmega328",            ARCH_AVR5, "__AVR_ATmega328__",         0, 0, 0x0100, 1, "m328")
 AVR_MCU ("atmega328p",           ARCH_AVR5, "__AVR_ATmega328P__",        0, 0, 0x0100, 1, "m328p")
 AVR_MCU ("atmega329",            ARCH_AVR5, "__AVR_ATmega329__",         0, 0, 0x0100, 1, "m329")
@@ -178,8 +197,14 @@ AVR_MCU ("atmega329pa",          ARCH_AV
 AVR_MCU ("atmega3290",           ARCH_AVR5, "__AVR_ATmega3290__",        0, 0, 0x0100, 1, "m3290")
 AVR_MCU ("atmega3290a",          ARCH_AVR5, "__AVR_ATmega3290A__",       0, 0, 0x0100, 1, "m3290a")
 AVR_MCU ("atmega3290p",          ARCH_AVR5, "__AVR_ATmega3290P__",       0, 0, 0x0100, 1, "m3290p")
+AVR_MCU ("atmega3290pa",         ARCH_AVR5, "__AVR_ATmega3290PA__",      0, 0, 0x0100, 1, "m3290pa")
+AVR_MCU ("atmega32c1",           ARCH_AVR5, "__AVR_ATmega32C1__",        0, 0, 0x0100, 1, "m32c1")
+AVR_MCU ("atmega32m1",           ARCH_AVR5, "__AVR_ATmega32M1__",        0, 0, 0x0100, 1, "m32m1")
+AVR_MCU ("atmega32u4",           ARCH_AVR5, "__AVR_ATmega32U4__",        0, 0, 0x0100, 1, "m32u4")
+AVR_MCU ("atmega32u6",           ARCH_AVR5, "__AVR_ATmega32U6__",        0, 0, 0x0100, 1, "m32u6")
 AVR_MCU ("atmega406",            ARCH_AVR5, "__AVR_ATmega406__",         0, 0, 0x0100, 1, "m406")
 AVR_MCU ("atmega64",             ARCH_AVR5, "__AVR_ATmega64__",          0, 0, 0x0100, 1, "m64")
+AVR_MCU ("atmega64a",            ARCH_AVR5, "__AVR_ATmega64A__",         0, 0, 0x0100, 1, "m64a")
 AVR_MCU ("atmega640",            ARCH_AVR5, "__AVR_ATmega640__",         0, 0, 0x0200, 1, "m640")
 AVR_MCU ("atmega644",            ARCH_AVR5, "__AVR_ATmega644__",         0, 0, 0x0100, 1, "m644")
 AVR_MCU ("atmega644a",           ARCH_AVR5, "__AVR_ATmega644A__",        0, 0, 0x0100, 1, "m644a")
@@ -199,9 +224,20 @@ AVR_MCU ("atmega16hva",          ARCH_AV
 AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
 AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
 AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+AVR_MCU ("atmega6490a",          ARCH_AVR5, "__AVR_ATmega6490A__",       0, 0, 0x0100, 1, "m6490a")
+AVR_MCU ("atmega6490p",          ARCH_AVR5, "__AVR_ATmega6490P__",       0, 0, 0x0100, 1, "m6490p")
+AVR_MCU ("atmega64c1",           ARCH_AVR5, "__AVR_ATmega64C1__",        0, 0, 0x0100, 1, "m64c1")
+AVR_MCU ("atmega64m1",           ARCH_AVR5, "__AVR_ATmega64M1__",        0, 0, 0x0100, 1, "m64m1")
 AVR_MCU ("atmega64hve",          ARCH_AVR5, "__AVR_ATmega64HVE__",       0, 0, 0x0100, 1, "m64hve")
+AVR_MCU ("atmega64rfa2",         ARCH_AVR5, "__AVR_ATmega64RFA2__",      0, 0, 0x0200, 1, "m64rfa2")
+AVR_MCU ("atmega64rfr2",         ARCH_AVR5, "__AVR_ATmega64RFR2__",      0, 0, 0x0200, 1, "m64rfr2")
+AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+AVR_MCU ("atmega32hvbrevb",      ARCH_AVR5, "__AVR_ATmega32HVBREVB__",   0, 0, 0x0100, 1, "m32hvbrevb")
+AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
+AVR_MCU ("atmega48hvf",          ARCH_AVR5, "__AVR_ATmega48HVF__",       0, 0, 0x0100, 1, "m48hvf")
 AVR_MCU ("at90can32",            ARCH_AVR5, "__AVR_AT90CAN32__",         0, 0, 0x0100, 1, "can32")
 AVR_MCU ("at90can64",            ARCH_AVR5, "__AVR_AT90CAN64__",         0, 0, 0x0100, 1, "can64")
+AVR_MCU ("at90pwm161",           ARCH_AVR5, "__AVR_AT90PWM161__",        0, 0, 0x0100, 1, "90pwm161")
 AVR_MCU ("at90pwm216",           ARCH_AVR5, "__AVR_AT90PWM216__",        0, 0, 0x0100, 1, "90pwm216")
 AVR_MCU ("at90pwm316",           ARCH_AVR5, "__AVR_AT90PWM316__",        0, 0, 0x0100, 1, "90pwm316")
 AVR_MCU ("atmega32c1",           ARCH_AVR5, "__AVR_ATmega32C1__",        0, 0, 0x0100, 1, "m32c1")
@@ -220,8 +256,10 @@ AVR_MCU ("m3000",                ARCH_AV
 /* Enhanced, == 128K.  */
 AVR_MCU ("avr51",                ARCH_AVR51, NULL,                       0, 0, 0x0100, 2, "m128")
 AVR_MCU ("atmega128",            ARCH_AVR51, "__AVR_ATmega128__",        0, 0, 0x0100, 2, "m128")
+AVR_MCU ("atmega128a",           ARCH_AVR51, "__AVR_ATmega128A__",       0, 0, 0x0100, 2, "m128a")
 AVR_MCU ("atmega1280",           ARCH_AVR51, "__AVR_ATmega1280__",       0, 0, 0x0200, 2, "m1280")
 AVR_MCU ("atmega1281",           ARCH_AVR51, "__AVR_ATmega1281__",       0, 0, 0x0200, 2, "m1281")
+AVR_MCU ("atmega1284",           ARCH_AVR51, "__AVR_ATmega1284__",       0, 0, 0x0100, 2, "m1284")
 AVR_MCU ("atmega1284p",          ARCH_AVR51, "__AVR_ATmega1284P__",      0, 0, 0x0100, 2, "m1284p")
 AVR_MCU ("atmega128rfa1",        ARCH_AVR51, "__AVR_ATmega128RFA1__",    0, 0, 0x0200, 2, "m128rfa1")
 AVR_MCU ("at90can128",           ARCH_AVR51, "__AVR_AT90CAN128__",       0, 0, 0x0100, 2, "can128")
@@ -239,16 +277,31 @@ AVR_MCU ("atxmega16x1",      ARCH_AVRXME
 AVR_MCU ("atxmega32a4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__",      0, 0, 0x2000, 1, "x32a4")
 AVR_MCU ("atxmega32d4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__",      0, 0, 0x2000, 1, "x32d4")
 AVR_MCU ("atxmega32x1",      ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__",      0, 0, 0x2000, 1, "x32x1")
+AVR_MCU ("atmxt112sl",       ARCH_AVRXMEGA2, "__AVR_ATMXT112SL__",       0, 0, 0x2000, 1, "mxt112sl")
+AVR_MCU ("atmxt224",         ARCH_AVRXMEGA2, "__AVR_ATMXT224__",         0, 0, 0x2000, 1, "mxt224")
+AVR_MCU ("atmxt224e",        ARCH_AVRXMEGA2, "__AVR_ATMXT224E__",        0, 0, 0x2000, 1, "mxt224e")
+AVR_MCU ("atmxt336s",        ARCH_AVRXMEGA2, "__AVR_ATMXT336S__",        0, 0, 0x2000, 1, "mxt336s")
+AVR_MCU ("atxmega16a4u",     ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__",     0, 0, 0x2000, 1, "x16a4u")
+AVR_MCU ("atxmega16c4",      ARCH_AVRXMEGA2, "__AVR_ATxmega16C4__",      0, 0, 0x2000, 1, "x16c4")
+AVR_MCU ("atxmega32a4u",     ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__",     0, 0, 0x2000, 1, "x32a4u")
+AVR_MCU ("atxmega32c4",      ARCH_AVRXMEGA2, "__AVR_ATxmega32C4__",      0, 0, 0x2000, 1, "x32c4")
+AVR_MCU ("atxmega32e5",      ARCH_AVRXMEGA2, "__AVR_ATxmega32E5__",      0, 0, 0x2000, 1, "x32e5")
 /* Xmega, 64K < Flash <= 128K, RAM <= 64K */
 AVR_MCU ("avrxmega4",        ARCH_AVRXMEGA4, NULL,                       0, 0, 0x2000, 2, "x64a4")
 AVR_MCU ("atxmega64a3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__",      0, 0, 0x2000, 2, "x64a3")
 AVR_MCU ("atxmega64d3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__",      0, 0, 0x2000, 2, "x64d3")
+AVR_MCU ("atxmega64a3u",     ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__",     0, 0, 0x2000, 2, "x64a3u")
+AVR_MCU ("atxmega64a4u",     ARCH_AVRXMEGA4, "__AVR_ATxmega64A4U__",     0, 0, 0x2000, 2, "x64a4u")
+AVR_MCU ("atxmega64b1",      ARCH_AVRXMEGA4, "__AVR_ATxmega64B1__",      0, 0, 0x2000, 2, "x64b1")
+AVR_MCU ("atxmega64b3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__",      0, 0, 0x2000, 2, "x64b3")
+AVR_MCU ("atxmega64c3",      ARCH_AVRXMEGA4, "__AVR_ATxmega64C3__",      0, 0, 0x2000, 2, "x64c3")
+AVR_MCU ("atxmega64d4",      ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__",      0, 0, 0x2000, 2, "x64d4")
 /* Xmega, 64K < Flash <= 128K, RAM > 64K */
 AVR_MCU ("avrxmega5",        ARCH_AVRXMEGA5, NULL,                       0, 0, 0x2000, 2, "x64a1")
 AVR_MCU ("atxmega64a1",      ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__",      0, 0, 0x2000, 2, "x64a1")
 AVR_MCU ("atxmega64a1u",     ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__",     0, 0, 0x2000, 2, "x64a1u")
 /* Xmega, 128K < Flash, RAM <= 64K */
-AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, NULL,                       0, 0, 0x2000, 5, "x128a3")
+AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, NULL,                       0, 0, 0x2000, 6, "x128a3")
 AVR_MCU ("atxmega128a3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__",     0, 0, 0x2000, 3, "x128a3")
 AVR_MCU ("atxmega128d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__",     0, 0, 0x2000, 3, "x128d3")
 AVR_MCU ("atxmega192a3",     ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__",     0, 0, 0x2000, 4, "x192a3")
@@ -257,10 +310,24 @@ AVR_MCU ("atxmega256a3",     ARCH_AVRXME
 AVR_MCU ("atxmega256a3b",    ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__",    0, 0, 0x2000, 5, "x256a3b")
 AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__",   0, 0, 0x2000, 5, "x256a3bu")
 AVR_MCU ("atxmega256d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__",     0, 0, 0x2000, 5, "x256d3")
+AVR_MCU ("atxmega128a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__",    0, 0, 0x2000, 3, "x128a3u")
+AVR_MCU ("atxmega128b1",     ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__",     0, 0, 0x2000, 3, "x128b1")
+AVR_MCU ("atxmega128b3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128B3__",     0, 0, 0x2000, 3, "x128b3")
+AVR_MCU ("atxmega128c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega128C3__",     0, 0, 0x2000, 3, "x128c3")
+AVR_MCU ("atxmega128d4",     ARCH_AVRXMEGA6, "__AVR_ATxmega128D4__",     0, 0, 0x2000, 3, "x128d4")
+AVR_MCU ("atmxt540s",        ARCH_AVRXMEGA6, "__AVR_ATMXT540S__",        0, 0, 0x2000, 2, "mxt540s")
+AVR_MCU ("atmxt540sreva",    ARCH_AVRXMEGA6, "__AVR_ATMXT540SREVA__",    0, 0, 0x2000, 2, "mxt540sreva")
+AVR_MCU ("atxmega192a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__",    0, 0, 0x2000, 4, "x192a3u")
+AVR_MCU ("atxmega192c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega192C3__",     0, 0, 0x2000, 4, "x192c3")
+AVR_MCU ("atxmega256a3u",    ARCH_AVRXMEGA6, "__AVR_ATxmega256A3U__",    0, 0, 0x2000, 5, "x256a3u")
+AVR_MCU ("atxmega256c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega256C3__",     0, 0, 0x2000, 5, "x256c3")
+AVR_MCU ("atxmega384c3",     ARCH_AVRXMEGA6, "__AVR_ATxmega384C3__",     0, 0, 0x2000, 6, "x384c3")
+AVR_MCU ("atxmega384d3",     ARCH_AVRXMEGA6, "__AVR_ATxmega384D3__",     0, 0, 0x2000, 6, "x384d3")
 /* Xmega, 128K < Flash, RAM > 64K RAM.  */
 AVR_MCU ("avrxmega7",        ARCH_AVRXMEGA7, NULL,                       0, 0, 0x2000, 3, "x128a1")
 AVR_MCU ("atxmega128a1",     ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__",     0, 0, 0x2000, 3, "x128a1")
 AVR_MCU ("atxmega128a1u",    ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__",    0, 0, 0x2000, 3, "x128a1u")
+AVR_MCU ("atxmega128a4u",    ARCH_AVRXMEGA7, "__AVR_ATxmega128A4U__",    0, 0, 0x2000, 3, "x128a4u")
 /* Assembler only.  */
 AVR_MCU ("avr1",                 ARCH_AVR1, NULL,                        0, 0, 0x0060, 1, "s1200")
 AVR_MCU ("at90s1200",            ARCH_AVR1, "__AVR_AT90S1200__",         0, 0, 0x0060, 1, "s1200")
Index: config/avr/t-multilib
===================================================================
--- config/avr/t-multilib	(revision 195877)
+++ config/avr/t-multilib	(working copy)
@@ -53,6 +53,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr2=mmcu?at90c8534 \
 	mmcu?avr2=mmcu?at90s8535 \
 	mmcu?avr25=mmcu?ata6289 \
+	mmcu?avr25=mmcu?ata5272 \
 	mmcu?avr25=mmcu?attiny13 \
 	mmcu?avr25=mmcu?attiny13a \
 	mmcu?avr25=mmcu?attiny2313 \
@@ -82,16 +83,22 @@ MULTILIB_MATCHES = \
 	mmcu?avr3=mmcu?at76c711 \
 	mmcu?avr31=mmcu?atmega103 \
 	mmcu?avr31=mmcu?at43usb320 \
+	mmcu?avr35=mmcu?ata5505 \
 	mmcu?avr35=mmcu?at90usb82 \
 	mmcu?avr35=mmcu?at90usb162 \
 	mmcu?avr35=mmcu?atmega8u2 \
 	mmcu?avr35=mmcu?atmega16u2 \
 	mmcu?avr35=mmcu?atmega32u2 \
 	mmcu?avr35=mmcu?attiny167 \
+	mmcu?avr35=mmcu?attiny1634 \
+	mmcu?avr4=mmcu?ata6285 \
+	mmcu?avr4=mmcu?ata6286 \
 	mmcu?avr4=mmcu?atmega8 \
+	mmcu?avr4=mmcu?atmega8a \
 	mmcu?avr4=mmcu?atmega48 \
 	mmcu?avr4=mmcu?atmega48a \
 	mmcu?avr4=mmcu?atmega48p \
+	mmcu?avr4=mmcu?atmega48pa \
 	mmcu?avr4=mmcu?atmega88 \
 	mmcu?avr4=mmcu?atmega88a \
 	mmcu?avr4=mmcu?atmega88p \
@@ -105,6 +112,9 @@ MULTILIB_MATCHES = \
 	mmcu?avr4=mmcu?at90pwm3 \
 	mmcu?avr4=mmcu?at90pwm3b \
 	mmcu?avr4=mmcu?at90pwm81 \
+	mmcu?avr5=mmcu?ata5790 \
+	mmcu?avr5=mmcu?ata5790n \
+	mmcu?avr5=mmcu?ata5795 \
 	mmcu?avr5=mmcu?atmega16 \
 	mmcu?avr5=mmcu?atmega16a \
 	mmcu?avr5=mmcu?atmega161 \
@@ -112,17 +122,28 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega163 \
 	mmcu?avr5=mmcu?atmega164a \
 	mmcu?avr5=mmcu?atmega164p \
+	mmcu?avr5=mmcu?atmega164pa \
 	mmcu?avr5=mmcu?atmega165 \
 	mmcu?avr5=mmcu?atmega165a \
 	mmcu?avr5=mmcu?atmega165p \
+	mmcu?avr5=mmcu?atmega165pa \
 	mmcu?avr5=mmcu?atmega168 \
 	mmcu?avr5=mmcu?atmega168a \
 	mmcu?avr5=mmcu?atmega168p \
+	mmcu?avr5=mmcu?atmega168pa \
 	mmcu?avr5=mmcu?atmega169 \
 	mmcu?avr5=mmcu?atmega169a \
 	mmcu?avr5=mmcu?atmega169p \
 	mmcu?avr5=mmcu?atmega169pa \
+	mmcu?avr5=mmcu?atmega16hva \
+	mmcu?avr5=mmcu?atmega16hvb \
+	mmcu?avr5=mmcu?atmega16hvbrevb \
+	mmcu?avr5=mmcu?atmega16m1 \
+	mmcu?avr5=mmcu?atmega16u4 \
+	mmcu?avr5=mmcu?atmega26hvg \
+	mmcu?avr5=mmcu?atmega32a \
 	mmcu?avr5=mmcu?atmega32 \
+	mmcu?avr5=mmcu?atmega32a \
 	mmcu?avr5=mmcu?atmega323 \
 	mmcu?avr5=mmcu?atmega324a \
 	mmcu?avr5=mmcu?atmega324p \
@@ -133,6 +154,7 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega3250 \
 	mmcu?avr5=mmcu?atmega3250a \
 	mmcu?avr5=mmcu?atmega3250p \
+	mmcu?avr5=mmcu?atmega3250pa \
 	mmcu?avr5=mmcu?atmega328 \
 	mmcu?avr5=mmcu?atmega328p \
 	mmcu?avr5=mmcu?atmega329 \
@@ -142,8 +164,14 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega3290 \
 	mmcu?avr5=mmcu?atmega3290a \
 	mmcu?avr5=mmcu?atmega3290p \
+	mmcu?avr5=mmcu?atmega3290pa \
+	mmcu?avr5=mmcu?atmega32c1 \
+	mmcu?avr5=mmcu?atmega32m1 \
+	mmcu?avr5=mmcu?atmega32u4 \
+	mmcu?avr5=mmcu?atmega32u6 \
 	mmcu?avr5=mmcu?atmega406 \
 	mmcu?avr5=mmcu?atmega64 \
+	mmcu?avr5=mmcu?atmega64a \
 	mmcu?avr5=mmcu?atmega640 \
 	mmcu?avr5=mmcu?atmega644 \
 	mmcu?avr5=mmcu?atmega644a \
@@ -163,9 +191,20 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?atmega16hva2 \
 	mmcu?avr5=mmcu?atmega16hvb \
 	mmcu?avr5=mmcu?atmega32hvb \
+	mmcu?avr5=mmcu?atmega6490a \
+	mmcu?avr5=mmcu?atmega6490p \
+	mmcu?avr5=mmcu?atmega64c1 \
+	mmcu?avr5=mmcu?atmega64m1 \
 	mmcu?avr5=mmcu?atmega64hve \
+	mmcu?avr5=mmcu?atmega64rfa2 \
+	mmcu?avr5=mmcu?atmega64rfr2 \
+	mmcu?avr5=mmcu?atmega32hvb \
+	mmcu?avr5=mmcu?atmega32hvbrevb \
+	mmcu?avr5=mmcu?atmega16hva2 \
+	mmcu?avr5=mmcu?atmega48hvf \
 	mmcu?avr5=mmcu?at90can32 \
 	mmcu?avr5=mmcu?at90can64 \
+	mmcu?avr5=mmcu?at90pwm161 \
 	mmcu?avr5=mmcu?at90pwm216 \
 	mmcu?avr5=mmcu?at90pwm316 \
 	mmcu?avr5=mmcu?atmega32c1 \
@@ -182,8 +221,10 @@ MULTILIB_MATCHES = \
 	mmcu?avr5=mmcu?at94k \
 	mmcu?avr5=mmcu?m3000 \
 	mmcu?avr51=mmcu?atmega128 \
+	mmcu?avr51=mmcu?atmega128a \
 	mmcu?avr51=mmcu?atmega1280 \
 	mmcu?avr51=mmcu?atmega1281 \
+	mmcu?avr51=mmcu?atmega1284 \
 	mmcu?avr51=mmcu?atmega1284p \
 	mmcu?avr51=mmcu?atmega128rfa1 \
 	mmcu?avr51=mmcu?at90can128 \
@@ -197,8 +238,23 @@ MULTILIB_MATCHES = \
 	mmcu?avrxmega2=mmcu?atxmega32a4 \
 	mmcu?avrxmega2=mmcu?atxmega32d4 \
 	mmcu?avrxmega2=mmcu?atxmega32x1 \
+	mmcu?avrxmega2=mmcu?atmxt112sl \
+	mmcu?avrxmega2=mmcu?atmxt224 \
+	mmcu?avrxmega2=mmcu?atmxt224e \
+	mmcu?avrxmega2=mmcu?atmxt336s \
+	mmcu?avrxmega2=mmcu?atxmega16a4u \
+	mmcu?avrxmega2=mmcu?atxmega16c4 \
+	mmcu?avrxmega2=mmcu?atxmega32a4u \
+	mmcu?avrxmega2=mmcu?atxmega32c4 \
+	mmcu?avrxmega2=mmcu?atxmega32e5 \
 	mmcu?avrxmega4=mmcu?atxmega64a3 \
 	mmcu?avrxmega4=mmcu?atxmega64d3 \
+	mmcu?avrxmega4=mmcu?atxmega64a3u \
+	mmcu?avrxmega4=mmcu?atxmega64a4u \
+	mmcu?avrxmega4=mmcu?atxmega64b1 \
+	mmcu?avrxmega4=mmcu?atxmega64b3 \
+	mmcu?avrxmega4=mmcu?atxmega64c3 \
+	mmcu?avrxmega4=mmcu?atxmega64d4 \
 	mmcu?avrxmega5=mmcu?atxmega64a1 \
 	mmcu?avrxmega5=mmcu?atxmega64a1u \
 	mmcu?avrxmega6=mmcu?atxmega128a3 \
@@ -209,5 +265,19 @@ MULTILIB_MATCHES = \
 	mmcu?avrxmega6=mmcu?atxmega256a3b \
 	mmcu?avrxmega6=mmcu?atxmega256a3bu \
 	mmcu?avrxmega6=mmcu?atxmega256d3 \
+	mmcu?avrxmega6=mmcu?atxmega128a3u \
+	mmcu?avrxmega6=mmcu?atxmega128b1 \
+	mmcu?avrxmega6=mmcu?atxmega128b3 \
+	mmcu?avrxmega6=mmcu?atxmega128c3 \
+	mmcu?avrxmega6=mmcu?atxmega128d4 \
+	mmcu?avrxmega6=mmcu?atmxt540s \
+	mmcu?avrxmega6=mmcu?atmxt540sreva \
+	mmcu?avrxmega6=mmcu?atxmega192a3u \
+	mmcu?avrxmega6=mmcu?atxmega192c3 \
+	mmcu?avrxmega6=mmcu?atxmega256a3u \
+	mmcu?avrxmega6=mmcu?atxmega256c3 \
+	mmcu?avrxmega6=mmcu?atxmega384c3 \
+	mmcu?avrxmega6=mmcu?atxmega384d3 \
 	mmcu?avrxmega7=mmcu?atxmega128a1 \
-	mmcu?avrxmega7=mmcu?atxmega128a1u
+	mmcu?avrxmega7=mmcu?atxmega128a1u \
+	mmcu?avrxmega7=mmcu?atxmega128a4u
Index: config/avr/avr-tables.opt
===================================================================
--- config/avr/avr-tables.opt	(revision 195877)
+++ config/avr/avr-tables.opt	(working copy)
@@ -69,530 +69,740 @@ EnumValue
 Enum(avr_mcu) String(ata6289) Value(14)
 
 EnumValue
-Enum(avr_mcu) String(attiny13) Value(15)
+Enum(avr_mcu) String(ata5272) Value(15)
 
 EnumValue
-Enum(avr_mcu) String(attiny13a) Value(16)
+Enum(avr_mcu) String(attiny13) Value(16)
 
 EnumValue
-Enum(avr_mcu) String(attiny2313) Value(17)
+Enum(avr_mcu) String(attiny13a) Value(17)
 
 EnumValue
-Enum(avr_mcu) String(attiny2313a) Value(18)
+Enum(avr_mcu) String(attiny2313) Value(18)
 
 EnumValue
-Enum(avr_mcu) String(attiny24) Value(19)
+Enum(avr_mcu) String(attiny2313a) Value(19)
 
 EnumValue
-Enum(avr_mcu) String(attiny24a) Value(20)
+Enum(avr_mcu) String(attiny24) Value(20)
 
 EnumValue
-Enum(avr_mcu) String(attiny4313) Value(21)
+Enum(avr_mcu) String(attiny24a) Value(21)
 
 EnumValue
-Enum(avr_mcu) String(attiny44) Value(22)
+Enum(avr_mcu) String(attiny4313) Value(22)
 
 EnumValue
-Enum(avr_mcu) String(attiny44a) Value(23)
+Enum(avr_mcu) String(attiny44) Value(23)
 
 EnumValue
-Enum(avr_mcu) String(attiny84) Value(24)
+Enum(avr_mcu) String(attiny44a) Value(24)
 
 EnumValue
-Enum(avr_mcu) String(attiny84a) Value(25)
+Enum(avr_mcu) String(attiny84) Value(25)
 
 EnumValue
-Enum(avr_mcu) String(attiny25) Value(26)
+Enum(avr_mcu) String(attiny84a) Value(26)
 
 EnumValue
-Enum(avr_mcu) String(attiny45) Value(27)
+Enum(avr_mcu) String(attiny25) Value(27)
 
 EnumValue
-Enum(avr_mcu) String(attiny85) Value(28)
+Enum(avr_mcu) String(attiny45) Value(28)
 
 EnumValue
-Enum(avr_mcu) String(attiny261) Value(29)
+Enum(avr_mcu) String(attiny85) Value(29)
 
 EnumValue
-Enum(avr_mcu) String(attiny261a) Value(30)
+Enum(avr_mcu) String(attiny261) Value(30)
 
 EnumValue
-Enum(avr_mcu) String(attiny461) Value(31)
+Enum(avr_mcu) String(attiny261a) Value(31)
 
 EnumValue
-Enum(avr_mcu) String(attiny461a) Value(32)
+Enum(avr_mcu) String(attiny461) Value(32)
 
 EnumValue
-Enum(avr_mcu) String(attiny861) Value(33)
+Enum(avr_mcu) String(attiny461a) Value(33)
 
 EnumValue
-Enum(avr_mcu) String(attiny861a) Value(34)
+Enum(avr_mcu) String(attiny861) Value(34)
 
 EnumValue
-Enum(avr_mcu) String(attiny43u) Value(35)
+Enum(avr_mcu) String(attiny861a) Value(35)
 
 EnumValue
-Enum(avr_mcu) String(attiny87) Value(36)
+Enum(avr_mcu) String(attiny43u) Value(36)
 
 EnumValue
-Enum(avr_mcu) String(attiny48) Value(37)
+Enum(avr_mcu) String(attiny87) Value(37)
 
 EnumValue
-Enum(avr_mcu) String(attiny88) Value(38)
+Enum(avr_mcu) String(attiny48) Value(38)
 
 EnumValue
-Enum(avr_mcu) String(at86rf401) Value(39)
+Enum(avr_mcu) String(attiny88) Value(39)
 
 EnumValue
-Enum(avr_mcu) String(avr3) Value(40)
+Enum(avr_mcu) String(at86rf401) Value(40)
 
 EnumValue
-Enum(avr_mcu) String(at43usb355) Value(41)
+Enum(avr_mcu) String(avr3) Value(41)
 
 EnumValue
-Enum(avr_mcu) String(at76c711) Value(42)
+Enum(avr_mcu) String(at43usb355) Value(42)
 
 EnumValue
-Enum(avr_mcu) String(avr31) Value(43)
+Enum(avr_mcu) String(at76c711) Value(43)
 
 EnumValue
-Enum(avr_mcu) String(atmega103) Value(44)
+Enum(avr_mcu) String(avr31) Value(44)
 
 EnumValue
-Enum(avr_mcu) String(at43usb320) Value(45)
+Enum(avr_mcu) String(atmega103) Value(45)
 
 EnumValue
-Enum(avr_mcu) String(avr35) Value(46)
+Enum(avr_mcu) String(at43usb320) Value(46)
 
 EnumValue
-Enum(avr_mcu) String(at90usb82) Value(47)
+Enum(avr_mcu) String(avr35) Value(47)
 
 EnumValue
-Enum(avr_mcu) String(at90usb162) Value(48)
+Enum(avr_mcu) String(ata5505) Value(48)
 
 EnumValue
-Enum(avr_mcu) String(atmega8u2) Value(49)
+Enum(avr_mcu) String(at90usb82) Value(49)
 
 EnumValue
-Enum(avr_mcu) String(atmega16u2) Value(50)
+Enum(avr_mcu) String(at90usb162) Value(50)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u2) Value(51)
+Enum(avr_mcu) String(atmega8u2) Value(51)
 
 EnumValue
-Enum(avr_mcu) String(attiny167) Value(52)
+Enum(avr_mcu) String(atmega16u2) Value(52)
 
 EnumValue
-Enum(avr_mcu) String(avr4) Value(53)
+Enum(avr_mcu) String(atmega32u2) Value(53)
 
 EnumValue
-Enum(avr_mcu) String(atmega8) Value(54)
+Enum(avr_mcu) String(attiny167) Value(54)
 
 EnumValue
-Enum(avr_mcu) String(atmega48) Value(55)
+Enum(avr_mcu) String(attiny1634) Value(55)
 
 EnumValue
-Enum(avr_mcu) String(atmega48a) Value(56)
+Enum(avr_mcu) String(avr4) Value(56)
 
 EnumValue
-Enum(avr_mcu) String(atmega48p) Value(57)
+Enum(avr_mcu) String(ata6285) Value(57)
 
 EnumValue
-Enum(avr_mcu) String(atmega88) Value(58)
+Enum(avr_mcu) String(ata6286) Value(58)
 
 EnumValue
-Enum(avr_mcu) String(atmega88a) Value(59)
+Enum(avr_mcu) String(atmega8) Value(59)
 
 EnumValue
-Enum(avr_mcu) String(atmega88p) Value(60)
+Enum(avr_mcu) String(atmega8a) Value(60)
 
 EnumValue
-Enum(avr_mcu) String(atmega88pa) Value(61)
+Enum(avr_mcu) String(atmega48) Value(61)
 
 EnumValue
-Enum(avr_mcu) String(atmega8515) Value(62)
+Enum(avr_mcu) String(atmega48a) Value(62)
 
 EnumValue
-Enum(avr_mcu) String(atmega8535) Value(63)
+Enum(avr_mcu) String(atmega48p) Value(63)
 
 EnumValue
-Enum(avr_mcu) String(atmega8hva) Value(64)
+Enum(avr_mcu) String(atmega48pa) Value(64)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm1) Value(65)
+Enum(avr_mcu) String(atmega88) Value(65)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm2) Value(66)
+Enum(avr_mcu) String(atmega88a) Value(66)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm2b) Value(67)
+Enum(avr_mcu) String(atmega88p) Value(67)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm3) Value(68)
+Enum(avr_mcu) String(atmega88pa) Value(68)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm3b) Value(69)
+Enum(avr_mcu) String(atmega8515) Value(69)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm81) Value(70)
+Enum(avr_mcu) String(atmega8535) Value(70)
 
 EnumValue
-Enum(avr_mcu) String(avr5) Value(71)
+Enum(avr_mcu) String(atmega8hva) Value(71)
 
 EnumValue
-Enum(avr_mcu) String(atmega16) Value(72)
+Enum(avr_mcu) String(at90pwm1) Value(72)
 
 EnumValue
-Enum(avr_mcu) String(atmega16a) Value(73)
+Enum(avr_mcu) String(at90pwm2) Value(73)
 
 EnumValue
-Enum(avr_mcu) String(atmega161) Value(74)
+Enum(avr_mcu) String(at90pwm2b) Value(74)
 
 EnumValue
-Enum(avr_mcu) String(atmega162) Value(75)
+Enum(avr_mcu) String(at90pwm3) Value(75)
 
 EnumValue
-Enum(avr_mcu) String(atmega163) Value(76)
+Enum(avr_mcu) String(at90pwm3b) Value(76)
 
 EnumValue
-Enum(avr_mcu) String(atmega164a) Value(77)
+Enum(avr_mcu) String(at90pwm81) Value(77)
 
 EnumValue
-Enum(avr_mcu) String(atmega164p) Value(78)
+Enum(avr_mcu) String(avr5) Value(78)
 
 EnumValue
-Enum(avr_mcu) String(atmega165) Value(79)
+Enum(avr_mcu) String(ata5790) Value(79)
 
 EnumValue
-Enum(avr_mcu) String(atmega165a) Value(80)
+Enum(avr_mcu) String(ata5790n) Value(80)
 
 EnumValue
-Enum(avr_mcu) String(atmega165p) Value(81)
+Enum(avr_mcu) String(ata5795) Value(81)
 
 EnumValue
-Enum(avr_mcu) String(atmega168) Value(82)
+Enum(avr_mcu) String(atmega16) Value(82)
 
 EnumValue
-Enum(avr_mcu) String(atmega168a) Value(83)
+Enum(avr_mcu) String(atmega16a) Value(83)
 
 EnumValue
-Enum(avr_mcu) String(atmega168p) Value(84)
+Enum(avr_mcu) String(atmega161) Value(84)
 
 EnumValue
-Enum(avr_mcu) String(atmega169) Value(85)
+Enum(avr_mcu) String(atmega162) Value(85)
 
 EnumValue
-Enum(avr_mcu) String(atmega169a) Value(86)
+Enum(avr_mcu) String(atmega163) Value(86)
 
 EnumValue
-Enum(avr_mcu) String(atmega169p) Value(87)
+Enum(avr_mcu) String(atmega164a) Value(87)
 
 EnumValue
-Enum(avr_mcu) String(atmega169pa) Value(88)
+Enum(avr_mcu) String(atmega164p) Value(88)
 
 EnumValue
-Enum(avr_mcu) String(atmega32) Value(89)
+Enum(avr_mcu) String(atmega164pa) Value(89)
 
 EnumValue
-Enum(avr_mcu) String(atmega323) Value(90)
+Enum(avr_mcu) String(atmega165) Value(90)
 
 EnumValue
-Enum(avr_mcu) String(atmega324a) Value(91)
+Enum(avr_mcu) String(atmega165a) Value(91)
 
 EnumValue
-Enum(avr_mcu) String(atmega324p) Value(92)
+Enum(avr_mcu) String(atmega165p) Value(92)
 
 EnumValue
-Enum(avr_mcu) String(atmega324pa) Value(93)
+Enum(avr_mcu) String(atmega165pa) Value(93)
 
 EnumValue
-Enum(avr_mcu) String(atmega325) Value(94)
+Enum(avr_mcu) String(atmega168) Value(94)
 
 EnumValue
-Enum(avr_mcu) String(atmega325a) Value(95)
+Enum(avr_mcu) String(atmega168a) Value(95)
 
 EnumValue
-Enum(avr_mcu) String(atmega325p) Value(96)
+Enum(avr_mcu) String(atmega168p) Value(96)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250) Value(97)
+Enum(avr_mcu) String(atmega168pa) Value(97)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250a) Value(98)
+Enum(avr_mcu) String(atmega169) Value(98)
 
 EnumValue
-Enum(avr_mcu) String(atmega3250p) Value(99)
+Enum(avr_mcu) String(atmega169a) Value(99)
 
 EnumValue
-Enum(avr_mcu) String(atmega328) Value(100)
+Enum(avr_mcu) String(atmega169p) Value(100)
 
 EnumValue
-Enum(avr_mcu) String(atmega328p) Value(101)
+Enum(avr_mcu) String(atmega169pa) Value(101)
 
 EnumValue
-Enum(avr_mcu) String(atmega329) Value(102)
+Enum(avr_mcu) String(atmega16hva) Value(102)
 
 EnumValue
-Enum(avr_mcu) String(atmega329a) Value(103)
+Enum(avr_mcu) String(atmega16hvb) Value(103)
 
 EnumValue
-Enum(avr_mcu) String(atmega329p) Value(104)
+Enum(avr_mcu) String(atmega16hvbrevb) Value(104)
 
 EnumValue
-Enum(avr_mcu) String(atmega329pa) Value(105)
+Enum(avr_mcu) String(atmega16m1) Value(105)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290) Value(106)
+Enum(avr_mcu) String(atmega16u4) Value(106)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290a) Value(107)
+Enum(avr_mcu) String(atmega26hvg) Value(107)
 
 EnumValue
-Enum(avr_mcu) String(atmega3290p) Value(108)
+Enum(avr_mcu) String(atmega32a) Value(108)
 
 EnumValue
-Enum(avr_mcu) String(atmega406) Value(109)
+Enum(avr_mcu) String(atmega32) Value(109)
 
 EnumValue
-Enum(avr_mcu) String(atmega64) Value(110)
+Enum(avr_mcu) String(atmega32a) Value(110)
 
 EnumValue
-Enum(avr_mcu) String(atmega640) Value(111)
+Enum(avr_mcu) String(atmega323) Value(111)
 
 EnumValue
-Enum(avr_mcu) String(atmega644) Value(112)
+Enum(avr_mcu) String(atmega324a) Value(112)
 
 EnumValue
-Enum(avr_mcu) String(atmega644a) Value(113)
+Enum(avr_mcu) String(atmega324p) Value(113)
 
 EnumValue
-Enum(avr_mcu) String(atmega644p) Value(114)
+Enum(avr_mcu) String(atmega324pa) Value(114)
 
 EnumValue
-Enum(avr_mcu) String(atmega644pa) Value(115)
+Enum(avr_mcu) String(atmega325) Value(115)
 
 EnumValue
-Enum(avr_mcu) String(atmega645) Value(116)
+Enum(avr_mcu) String(atmega325a) Value(116)
 
 EnumValue
-Enum(avr_mcu) String(atmega645a) Value(117)
+Enum(avr_mcu) String(atmega325p) Value(117)
 
 EnumValue
-Enum(avr_mcu) String(atmega645p) Value(118)
+Enum(avr_mcu) String(atmega3250) Value(118)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450) Value(119)
+Enum(avr_mcu) String(atmega3250a) Value(119)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450a) Value(120)
+Enum(avr_mcu) String(atmega3250p) Value(120)
 
 EnumValue
-Enum(avr_mcu) String(atmega6450p) Value(121)
+Enum(avr_mcu) String(atmega3250pa) Value(121)
 
 EnumValue
-Enum(avr_mcu) String(atmega649) Value(122)
+Enum(avr_mcu) String(atmega328) Value(122)
 
 EnumValue
-Enum(avr_mcu) String(atmega649a) Value(123)
+Enum(avr_mcu) String(atmega328p) Value(123)
 
 EnumValue
-Enum(avr_mcu) String(atmega649p) Value(124)
+Enum(avr_mcu) String(atmega329) Value(124)
 
 EnumValue
-Enum(avr_mcu) String(atmega6490) Value(125)
+Enum(avr_mcu) String(atmega329a) Value(125)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hva) Value(126)
+Enum(avr_mcu) String(atmega329p) Value(126)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hva2) Value(127)
+Enum(avr_mcu) String(atmega329pa) Value(127)
 
 EnumValue
-Enum(avr_mcu) String(atmega16hvb) Value(128)
+Enum(avr_mcu) String(atmega3290) Value(128)
 
 EnumValue
-Enum(avr_mcu) String(atmega32hvb) Value(129)
+Enum(avr_mcu) String(atmega3290a) Value(129)
 
 EnumValue
-Enum(avr_mcu) String(atmega64hve) Value(130)
+Enum(avr_mcu) String(atmega3290p) Value(130)
 
 EnumValue
-Enum(avr_mcu) String(at90can32) Value(131)
+Enum(avr_mcu) String(atmega3290pa) Value(131)
 
 EnumValue
-Enum(avr_mcu) String(at90can64) Value(132)
+Enum(avr_mcu) String(atmega32c1) Value(132)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm216) Value(133)
+Enum(avr_mcu) String(atmega32m1) Value(133)
 
 EnumValue
-Enum(avr_mcu) String(at90pwm316) Value(134)
+Enum(avr_mcu) String(atmega32u4) Value(134)
 
 EnumValue
-Enum(avr_mcu) String(atmega32c1) Value(135)
+Enum(avr_mcu) String(atmega32u6) Value(135)
 
 EnumValue
-Enum(avr_mcu) String(atmega64c1) Value(136)
+Enum(avr_mcu) String(atmega406) Value(136)
 
 EnumValue
-Enum(avr_mcu) String(atmega16m1) Value(137)
+Enum(avr_mcu) String(atmega64) Value(137)
 
 EnumValue
-Enum(avr_mcu) String(atmega32m1) Value(138)
+Enum(avr_mcu) String(atmega64a) Value(138)
 
 EnumValue
-Enum(avr_mcu) String(atmega64m1) Value(139)
+Enum(avr_mcu) String(atmega640) Value(139)
 
 EnumValue
-Enum(avr_mcu) String(atmega16u4) Value(140)
+Enum(avr_mcu) String(atmega644) Value(140)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u4) Value(141)
+Enum(avr_mcu) String(atmega644a) Value(141)
 
 EnumValue
-Enum(avr_mcu) String(atmega32u6) Value(142)
+Enum(avr_mcu) String(atmega644p) Value(142)
 
 EnumValue
-Enum(avr_mcu) String(at90scr100) Value(143)
+Enum(avr_mcu) String(atmega644pa) Value(143)
 
 EnumValue
-Enum(avr_mcu) String(at90usb646) Value(144)
+Enum(avr_mcu) String(atmega645) Value(144)
 
 EnumValue
-Enum(avr_mcu) String(at90usb647) Value(145)
+Enum(avr_mcu) String(atmega645a) Value(145)
 
 EnumValue
-Enum(avr_mcu) String(at94k) Value(146)
+Enum(avr_mcu) String(atmega645p) Value(146)
 
 EnumValue
-Enum(avr_mcu) String(m3000) Value(147)
+Enum(avr_mcu) String(atmega6450) Value(147)
 
 EnumValue
-Enum(avr_mcu) String(avr51) Value(148)
+Enum(avr_mcu) String(atmega6450a) Value(148)
 
 EnumValue
-Enum(avr_mcu) String(atmega128) Value(149)
+Enum(avr_mcu) String(atmega6450p) Value(149)
 
 EnumValue
-Enum(avr_mcu) String(atmega1280) Value(150)
+Enum(avr_mcu) String(atmega649) Value(150)
 
 EnumValue
-Enum(avr_mcu) String(atmega1281) Value(151)
+Enum(avr_mcu) String(atmega649a) Value(151)
 
 EnumValue
-Enum(avr_mcu) String(atmega1284p) Value(152)
+Enum(avr_mcu) String(atmega649p) Value(152)
 
 EnumValue
-Enum(avr_mcu) String(atmega128rfa1) Value(153)
+Enum(avr_mcu) String(atmega6490) Value(153)
 
 EnumValue
-Enum(avr_mcu) String(at90can128) Value(154)
+Enum(avr_mcu) String(atmega16hva) Value(154)
 
 EnumValue
-Enum(avr_mcu) String(at90usb1286) Value(155)
+Enum(avr_mcu) String(atmega16hva2) Value(155)
 
 EnumValue
-Enum(avr_mcu) String(at90usb1287) Value(156)
+Enum(avr_mcu) String(atmega16hvb) Value(156)
 
 EnumValue
-Enum(avr_mcu) String(avr6) Value(157)
+Enum(avr_mcu) String(atmega32hvb) Value(157)
 
 EnumValue
-Enum(avr_mcu) String(atmega2560) Value(158)
+Enum(avr_mcu) String(atmega6490a) Value(158)
 
 EnumValue
-Enum(avr_mcu) String(atmega2561) Value(159)
+Enum(avr_mcu) String(atmega6490p) Value(159)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega2) Value(160)
+Enum(avr_mcu) String(atmega64c1) Value(160)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16a4) Value(161)
+Enum(avr_mcu) String(atmega64m1) Value(161)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16d4) Value(162)
+Enum(avr_mcu) String(atmega64hve) Value(162)
 
 EnumValue
-Enum(avr_mcu) String(atxmega16x1) Value(163)
+Enum(avr_mcu) String(atmega64rfa2) Value(163)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32a4) Value(164)
+Enum(avr_mcu) String(atmega64rfr2) Value(164)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32d4) Value(165)
+Enum(avr_mcu) String(atmega32hvb) Value(165)
 
 EnumValue
-Enum(avr_mcu) String(atxmega32x1) Value(166)
+Enum(avr_mcu) String(atmega32hvbrevb) Value(166)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega4) Value(167)
+Enum(avr_mcu) String(atmega16hva2) Value(167)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a3) Value(168)
+Enum(avr_mcu) String(atmega48hvf) Value(168)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64d3) Value(169)
+Enum(avr_mcu) String(at90can32) Value(169)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega5) Value(170)
+Enum(avr_mcu) String(at90can64) Value(170)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a1) Value(171)
+Enum(avr_mcu) String(at90pwm161) Value(171)
 
 EnumValue
-Enum(avr_mcu) String(atxmega64a1u) Value(172)
+Enum(avr_mcu) String(at90pwm216) Value(172)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega6) Value(173)
+Enum(avr_mcu) String(at90pwm316) Value(173)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a3) Value(174)
+Enum(avr_mcu) String(atmega32c1) Value(174)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128d3) Value(175)
+Enum(avr_mcu) String(atmega64c1) Value(175)
 
 EnumValue
-Enum(avr_mcu) String(atxmega192a3) Value(176)
+Enum(avr_mcu) String(atmega16m1) Value(176)
 
 EnumValue
-Enum(avr_mcu) String(atxmega192d3) Value(177)
+Enum(avr_mcu) String(atmega32m1) Value(177)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3) Value(178)
+Enum(avr_mcu) String(atmega64m1) Value(178)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3b) Value(179)
+Enum(avr_mcu) String(atmega16u4) Value(179)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256a3bu) Value(180)
+Enum(avr_mcu) String(atmega32u4) Value(180)
 
 EnumValue
-Enum(avr_mcu) String(atxmega256d3) Value(181)
+Enum(avr_mcu) String(atmega32u6) Value(181)
 
 EnumValue
-Enum(avr_mcu) String(avrxmega7) Value(182)
+Enum(avr_mcu) String(at90scr100) Value(182)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a1) Value(183)
+Enum(avr_mcu) String(at90usb646) Value(183)
 
 EnumValue
-Enum(avr_mcu) String(atxmega128a1u) Value(184)
+Enum(avr_mcu) String(at90usb647) Value(184)
 
 EnumValue
-Enum(avr_mcu) String(avr1) Value(185)
+Enum(avr_mcu) String(at94k) Value(185)
 
 EnumValue
-Enum(avr_mcu) String(at90s1200) Value(186)
+Enum(avr_mcu) String(m3000) Value(186)
 
 EnumValue
-Enum(avr_mcu) String(attiny11) Value(187)
+Enum(avr_mcu) String(avr51) Value(187)
 
 EnumValue
-Enum(avr_mcu) String(attiny12) Value(188)
+Enum(avr_mcu) String(atmega128) Value(188)
 
 EnumValue
-Enum(avr_mcu) String(attiny15) Value(189)
+Enum(avr_mcu) String(atmega128a) Value(189)
 
 EnumValue
-Enum(avr_mcu) String(attiny28) Value(190)
+Enum(avr_mcu) String(atmega1280) Value(190)
+
+EnumValue
+Enum(avr_mcu) String(atmega1281) Value(191)
+
+EnumValue
+Enum(avr_mcu) String(atmega1284) Value(192)
+
+EnumValue
+Enum(avr_mcu) String(atmega1284p) Value(193)
+
+EnumValue
+Enum(avr_mcu) String(atmega128rfa1) Value(194)
+
+EnumValue
+Enum(avr_mcu) String(at90can128) Value(195)
+
+EnumValue
+Enum(avr_mcu) String(at90usb1286) Value(196)
+
+EnumValue
+Enum(avr_mcu) String(at90usb1287) Value(197)
+
+EnumValue
+Enum(avr_mcu) String(avr6) Value(198)
+
+EnumValue
+Enum(avr_mcu) String(atmega2560) Value(199)
+
+EnumValue
+Enum(avr_mcu) String(atmega2561) Value(200)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega2) Value(201)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16a4) Value(202)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16d4) Value(203)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16x1) Value(204)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32a4) Value(205)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32d4) Value(206)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32x1) Value(207)
+
+EnumValue
+Enum(avr_mcu) String(atmxt112sl) Value(208)
+
+EnumValue
+Enum(avr_mcu) String(atmxt224) Value(209)
+
+EnumValue
+Enum(avr_mcu) String(atmxt224e) Value(210)
+
+EnumValue
+Enum(avr_mcu) String(atmxt336s) Value(211)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16a4u) Value(212)
+
+EnumValue
+Enum(avr_mcu) String(atxmega16c4) Value(213)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32a4u) Value(214)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32c4) Value(215)
+
+EnumValue
+Enum(avr_mcu) String(atxmega32e5) Value(216)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega4) Value(217)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a3) Value(218)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64d3) Value(219)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a3u) Value(220)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a4u) Value(221)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64b1) Value(222)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64b3) Value(223)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64c3) Value(224)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64d4) Value(225)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega5) Value(226)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a1) Value(227)
+
+EnumValue
+Enum(avr_mcu) String(atxmega64a1u) Value(228)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega6) Value(229)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a3) Value(230)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128d3) Value(231)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192a3) Value(232)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192d3) Value(233)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3) Value(234)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3b) Value(235)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3bu) Value(236)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256d3) Value(237)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a3u) Value(238)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128b1) Value(239)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128b3) Value(240)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128c3) Value(241)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128d4) Value(242)
+
+EnumValue
+Enum(avr_mcu) String(atmxt540s) Value(243)
+
+EnumValue
+Enum(avr_mcu) String(atmxt540sreva) Value(244)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192a3u) Value(245)
+
+EnumValue
+Enum(avr_mcu) String(atxmega192c3) Value(246)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256a3u) Value(247)
+
+EnumValue
+Enum(avr_mcu) String(atxmega256c3) Value(248)
+
+EnumValue
+Enum(avr_mcu) String(atxmega384c3) Value(249)
+
+EnumValue
+Enum(avr_mcu) String(atxmega384d3) Value(250)
+
+EnumValue
+Enum(avr_mcu) String(avrxmega7) Value(251)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a1) Value(252)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a1u) Value(253)
+
+EnumValue
+Enum(avr_mcu) String(atxmega128a4u) Value(254)
+
+EnumValue
+Enum(avr_mcu) String(avr1) Value(255)
+
+EnumValue
+Enum(avr_mcu) String(at90s1200) Value(256)
+
+EnumValue
+Enum(avr_mcu) String(attiny11) Value(257)
+
+EnumValue
+Enum(avr_mcu) String(attiny12) Value(258)
+
+EnumValue
+Enum(avr_mcu) String(attiny15) Value(259)
+
+EnumValue
+Enum(avr_mcu) String(attiny28) Value(260)
 
Index: doc/avr-mmcu.texi
===================================================================
--- doc/avr-mmcu.texi	(revision 195736)
+++ doc/avr-mmcu.texi	(working copy)
@@ -18,7 +18,7 @@
 
 @item avr25
 ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}.
+@*@var{mcu}@tie{}= @code{ata5272}, @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}.
 
 @item avr3
 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
@@ -30,19 +30,19 @@
 
 @item avr35
 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
+@*@var{mcu}@tie{}= @code{ata5505}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny1634}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
 
 @item avr4
 ``Enhanced'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega8}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
+@*@var{mcu}@tie{}= @code{ata6285}, @code{ata6286}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega48pa}, @code{atmega8}, @code{atmega8a}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
 
 @item avr5
 ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega406}, @code{atmega64}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
+@*@var{mcu}@tie{}= @code{ata5790}, @code{ata5790n}, @code{ata5795}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega26hvg}, @code{atmega32}, @code{atmega32a}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega48hvf}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega64m1}, @code{atmega64rfa2}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
 
 @item avr51
 ``Enhanced'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}.
+@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128a}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284}, @code{atmega1284p}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}.
 
 @item avr6
 ``Enhanced'' devices with 3-byte PC, i.e.@: with more than 128@tie{}KiB of program memory.
@@ -50,11 +50,11 @@
 
 @item avrxmega2
 ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega16a4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32d4}, @code{atxmega32x1}.
+@*@var{mcu}@tie{}= @code{atmxt112sl}, @code{atmxt224}, @code{atmxt224e}, @code{atmxt336s}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16x1}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c4}, @code{atxmega32d4}, @code{atxmega32e5}, @code{atxmega32x1}.
 
 @item avrxmega4
 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64d3}.
+@*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64a3u}, @code{atxmega64a4u}, @code{atxmega64b1}, @code{atxmega64b3}, @code{atxmega64c3}, @code{atxmega64d3}, @code{atxmega64d4}.
 
 @item avrxmega5
 ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
@@ -62,11 +62,11 @@
 
 @item avrxmega6
 ``XMEGA'' devices with more than 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atxmega128a3}, @code{atxmega128d3}, @code{atxmega192a3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256d3}.
+@*@var{mcu}@tie{}= @code{atmxt540s}, @code{atmxt540sreva}, @code{atxmega128a3}, @code{atxmega128a3u}, @code{atxmega128b1}, @code{atxmega128b3}, @code{atxmega128c3}, @code{atxmega128d3}, @code{atxmega128d4}, @code{atxmega192a3}, @code{atxmega192a3u}, @code{atxmega192c3}, @code{atxmega192d3}, @code{atxmega256a3}, @code{atxmega256a3b}, @code{atxmega256a3bu}, @code{atxmega256a3u}, @code{atxmega256c3}, @code{atxmega256d3}, @code{atxmega384c3}, @code{atxmega384d3}.
 
 @item avrxmega7
 ``XMEGA'' devices with more than 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
-@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}.
+@*@var{mcu}@tie{}= @code{atxmega128a1}, @code{atxmega128a1u}, @code{atxmega128a4u}.
 
 @item avr1
 This ISA is implemented by the minimal AVR core and supported for assembler only.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Patch,avr]: Add more devices take #2: 2/2
  2013-02-12 15:33 [Patch,avr]: Add more devices Georg-Johann Lay
  2013-02-13 10:05 ` [Patch,avr]: Add more devices take #2: 1/2 Georg-Johann Lay
@ 2013-02-13 10:17 ` Georg-Johann Lay
  2013-02-19 15:36   ` Ping: " Georg-Johann Lay
  1 sibling, 1 reply; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-13 10:17 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington

[-- Attachment #1: Type: text/plain, Size: 439 bytes --]

And here 2/2 with the device -> arch mapping for gas.


Ok for trunk?

Johann


	* config/avr/avr.h (device_to_arch): Rename to device_to_ld.
	(avr_device_to_arch): Rename to avr_device_to_ld.
	(avr_device_to_as): New prototype.
	(EXTRA_SPEC_FUNCTIONS): Add device_to_as.
	(ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
	* config/avr/driver-avr.c (avr_device_to_as): New.
	(avr_device_to_arch): Rename to avr_device_to_ld.

[-- Attachment #2: more-devices-2.diff --]
[-- Type: text/x-patch, Size: 3251 bytes --]

Index: config/avr/avr.h
===================================================================
--- config/avr/avr.h	(revision 195877)
+++ config/avr/avr.h	(working copy)
@@ -486,14 +486,16 @@ typedef struct avr_args
 #define ADJUST_INSN_LENGTH(INSN, LENGTH)                \
     (LENGTH = avr_adjust_insn_length (INSN, LENGTH))
 
-extern const char *avr_device_to_arch (int argc, const char **argv);
+extern const char *avr_device_to_as (int argc, const char **argv);
+extern const char *avr_device_to_ld (int argc, const char **argv);
 extern const char *avr_device_to_data_start (int argc, const char **argv);
 extern const char *avr_device_to_startfiles (int argc, const char **argv);
 extern const char *avr_device_to_devicelib (int argc, const char **argv);
 extern const char *avr_device_to_sp8 (int argc, const char **argv);
 
 #define EXTRA_SPEC_FUNCTIONS                            \
-  { "device_to_arch", avr_device_to_arch },             \
+  { "device_to_as", avr_device_to_as },                 \
+  { "device_to_ld", avr_device_to_ld },                 \
   { "device_to_data_start", avr_device_to_data_start }, \
   { "device_to_startfile", avr_device_to_startfiles },  \
   { "device_to_devicelib", avr_device_to_devicelib },   \
@@ -507,14 +509,9 @@ extern const char *avr_device_to_sp8 (in
 #define CC1PLUS_SPEC "%{!frtti:-fno-rtti} \
     %{!fenforce-eh-specs:-fno-enforce-eh-specs} \
     %{!fexceptions:-fno-exceptions}"
-/* A C string constant that tells the GCC driver program options to
-   pass to `cc1plus'.  */
-
-#define ASM_SPEC "%{mmcu=avr25:-mmcu=avr2;mmcu=avr35:-mmcu=avr3;mmcu=avr31:-mmcu=avr3;mmcu=avr51:-mmcu=avr5;\
-mmcu=*:-mmcu=%*} \
-%{mmcu=*:%{!mmcu=avr2:%{!mmcu=at90s8515:%{!mmcu=avr31:%{!mmcu=atmega103:\
--mno-skip-bug}}}}}"
 
+#define ASM_SPEC "%:device_to_as(%{mmcu=*:%*}) "
+  
 #define LINK_SPEC "\
 %{mrelax:--relax\
          %{mpmem-wrap-around:%{mmcu=at90usb8*:--pmem-wrap-around=8k}\
@@ -524,7 +521,7 @@ mmcu=*:-mmcu=%*} \
                              %{mmcu=atmega64*|\
                                mmcu=at90can64*|\
                                mmcu=at90usb64*:--pmem-wrap-around=64k}}}\
-%:device_to_arch(%{mmcu=*:%*})\
+%:device_to_ld(%{mmcu=*:%*})\
 %:device_to_data_start(%{mmcu=*:%*})"
 
 #define LIB_SPEC \
Index: config/avr/driver-avr.c
===================================================================
--- config/avr/driver-avr.c	(revision 195877)
+++ config/avr/driver-avr.c	(working copy)
@@ -48,10 +48,25 @@ avr_set_current_device (const char *name
   avr_current_arch = &avr_arch_types[avr_current_device->arch];
 }
 
-/* Returns command line parameters that describe the device architecture.  */
+/* Returns command line parameters to pass to as.  */
 
-const char *
-avr_device_to_arch (int argc, const char **argv)
+const char*
+avr_device_to_as (int argc, const char **argv)
+{
+  if (0 == argc)
+    return NULL;
+
+  avr_set_current_device (argv[0]);
+
+  return concat ("-mmcu=", avr_current_arch->arch_name,
+                 avr_current_device->errata_skip ? "" : " -mno-skip-bug",
+                 NULL);
+}
+
+/* Returns command line parameters to pass to ld.  */
+
+const char*
+avr_device_to_ld (int argc, const char **argv)
 {
   if (0 == argc)
     return NULL;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Ping: [Patch,avr]: Add more devices take #2: 2/2
  2013-02-13 10:17 ` [Patch,avr]: Add more devices take #2: 2/2 Georg-Johann Lay
@ 2013-02-19 15:36   ` Georg-Johann Lay
  2013-02-24 11:09     ` Denis Chertykov
  0 siblings, 1 reply; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-19 15:36 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington, Richard Biener

CCing Richard in case this needs RM approval (I don't think so because 
the patch just changes ternary parts).

Ping #1 for:
http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00579.html


Georg-Johann Lay schrieb:
> And here 2/2 with the device -> arch mapping for gas.
> 
> 
> Ok for trunk?
> 
> Johann
> 
> 
> 	* config/avr/avr.h (device_to_arch): Rename to device_to_ld.
> 	(avr_device_to_arch): Rename to avr_device_to_ld.
> 	(avr_device_to_as): New prototype.
> 	(EXTRA_SPEC_FUNCTIONS): Add device_to_as.
> 	(ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
> 	* config/avr/driver-avr.c (avr_device_to_as): New.
> 	(avr_device_to_arch): Rename to avr_device_to_ld.
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Ping: [Patch,avr]: Add more devices take #2: 1/2
  2013-02-13 10:07   ` Georg-Johann Lay
@ 2013-02-19 15:37     ` Georg-Johann Lay
  0 siblings, 0 replies; 7+ messages in thread
From: Georg-Johann Lay @ 2013-02-19 15:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: Denis Chertykov, Eric Weddington, Richard Biener

CCing Richard in case this needs RM approval (I don't think so because 
the patch just changes ternary parts).

Ping #1 for:
http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00577.html
http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00576.html

Georg-Johann Lay schrieb:
> Better attach the patch...
> 
> Georg-Johann Lay wrote:
>> Let me drop this, I was thinking too complicated.
>>
>> src/gas/config/tc-avr.c
>>
>> reads:
>>
>> static struct mcu_type_s mcu_types[] =
>> {
>>   {"avr1",       AVR_ISA_AVR1,    bfd_mach_avr1},
>> /* TODO: insruction set for avr2 architecture should be AVR_ISA_AVR2,
>>  but set to AVR_ISA_AVR25 for some following version
>>  of GCC (from 4.3) for backward compatibility.  */
>>   {"avr2",       AVR_ISA_AVR25,   bfd_mach_avr2},
>>   {"avr25",      AVR_ISA_AVR25,   bfd_mach_avr25},
>> /* TODO: insruction set for avr3 architecture should be AVR_ISA_AVR3,
>>  but set to AVR_ISA_AVR3_ALL for some following version
>>  of GCC (from 4.3) for backward compatibility.  */
>>   {"avr3",       AVR_ISA_AVR3_ALL, bfd_mach_avr3},
>>   {"avr31",      AVR_ISA_AVR31,   bfd_mach_avr31},
>>   {"avr35",      AVR_ISA_AVR35,   bfd_mach_avr35},
>>   {"avr4",       AVR_ISA_AVR4,    bfd_mach_avr4},
>> /* TODO: insruction set for avr5 architecture should be AVR_ISA_AVR5,
>>  but set to AVR_ISA_AVR51 for some following version
>>  of GCC (from 4.3) for backward compatibility.  */
>>   {"avr5",       AVR_ISA_AVR51,   bfd_mach_avr5},
>>   {"avr51",      AVR_ISA_AVR51,   bfd_mach_avr51},
>>   {"avr6",       AVR_ISA_AVR6,    bfd_mach_avr6},
>>
>> This means that cores liek avr31, avr35 etc. are supported by binutils and
>> there is no more the need for avr-gcc to do mappings like avr31 -> avr3.
>>
>> It appears that avr-gcc implemented these mappings to overcome missing binutils
>> support for specific cores, and in turn binutils arranged for that kludge...
>>
>> This means that avr_arch_t need not to be extended to hold the arch mapping for
>> gas calls and the gas call can use the core name from avr_arch_t.
>>
>>
>> I broke the patch into two parts:
>>
>> 1/2:  New devices
>> 2/2:  Map device to core to disentangle gcc/binutils interdependencies.
>>
>> Okay for trunk and 4.7 backport?
>>
>> Johann
>>
>>
>> 	* avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285)
>> 	(ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795)
>> 	(atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb)
>> 	(atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a)
>> 	(atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1)
>> 	(atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p)
>> 	(atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb)
>> 	(atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161)
>> 	(atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e)
>> 	(atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4)
>> 	(atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3)
>> 	(atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1)
>> 	(atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva)
>> 	(atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3)
>> 	(atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU.
>> 	(avrxmega6): Increase max flash segments from 5 to 6.
>> 	* config/avr/t-multilib: Regenerate.
>> 	* config/avr/avr-tables.opt: Regenerate.
>> 	* doc/avr-mmcu.texi: Regenerate.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ping: [Patch,avr]: Add more devices take #2: 2/2
  2013-02-19 15:36   ` Ping: " Georg-Johann Lay
@ 2013-02-24 11:09     ` Denis Chertykov
  0 siblings, 0 replies; 7+ messages in thread
From: Denis Chertykov @ 2013-02-24 11:09 UTC (permalink / raw)
  To: Georg-Johann Lay; +Cc: gcc-patches, Eric Weddington, Richard Biener

2013/2/19 Georg-Johann Lay <avr@gjlay.de>:
> CCing Richard in case this needs RM approval (I don't think so because the
> patch just changes ternary parts).
>
> Ping #1 for:
> http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00579.html
>
>
> Georg-Johann Lay schrieb:
>>
>> And here 2/2 with the device -> arch mapping for gas.
>>
>>
>> Ok for trunk?
>>
>> Johann
>>
>>
>>         * config/avr/avr.h (device_to_arch): Rename to device_to_ld.
>>         (avr_device_to_arch): Rename to avr_device_to_ld.
>>         (avr_device_to_as): New prototype.
>>         (EXTRA_SPEC_FUNCTIONS): Add device_to_as.
>>         (ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=.
>>         * config/avr/driver-avr.c (avr_device_to_as): New.
>>         (avr_device_to_arch): Rename to avr_device_to_ld.
>>
>

I'm sorry. I was on vacation.

Approved.

Denis.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-02-24 11:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-12 15:33 [Patch,avr]: Add more devices Georg-Johann Lay
2013-02-13 10:05 ` [Patch,avr]: Add more devices take #2: 1/2 Georg-Johann Lay
2013-02-13 10:07   ` Georg-Johann Lay
2013-02-19 15:37     ` Ping: " Georg-Johann Lay
2013-02-13 10:17 ` [Patch,avr]: Add more devices take #2: 2/2 Georg-Johann Lay
2013-02-19 15:36   ` Ping: " Georg-Johann Lay
2013-02-24 11:09     ` Denis Chertykov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).