]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/54607 ([avr]: Canadian cross build fails because gen-avr-mmcu-texi.c...
authorGeorg-Johann Lay <avr@gjlay.de>
Mon, 17 Sep 2012 15:22:37 +0000 (15:22 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Mon, 17 Sep 2012 15:22:37 +0000 (15:22 +0000)
PR target/54607
* config.gcc (tm_file,avr): Add avr/avr-arch.h.
* config/avr/t-avr (gen-avr-mmcu-texi): Use CC_FOR_BUILD to
compile.  Don't depend on TM_H.  Use CFLAGS_FOR_BUILD.
* config/avr/avr.h (avr_arch, base_arch_s, mcu_type_s): Source out
to...
* config/avr/avr-arch.h: ...this new file.
* config/avr/gen-avr-mmcu-texi.c: Include avr-arch.h, stdio.h,
stdlib.h.
* comparator: Make letters smaller than digits.
* config/avr/avr-devices.c: Don't include headers if used in
gen-avr-mmcu-texi.c.
* doc/avr-mmcu.texi: Regenerate.

From-SVN: r191390

gcc/ChangeLog
gcc/config.gcc
gcc/config/avr/avr-arch.h [new file with mode: 0644]
gcc/config/avr/avr-devices.c
gcc/config/avr/avr.h
gcc/config/avr/gen-avr-mmcu-texi.c
gcc/config/avr/t-avr
gcc/doc/avr-mmcu.texi

index 2dc31a55248ea23f0acfd437ac9544aa750bd3e3..c7a92fcd5c4350711cd53c4adde90e1f7ae44029 100644 (file)
@@ -1,3 +1,19 @@
+2012-09-17  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/54607
+       * config.gcc (tm_file,avr): Add avr/avr-arch.h.
+       * config/avr/t-avr (gen-avr-mmcu-texi): Use CC_FOR_BUILD to
+       compile.  Don't depend on TM_H.  Use CFLAGS_FOR_BUILD.
+       * config/avr/avr.h (avr_arch, base_arch_s, mcu_type_s): Source out
+       to...
+       * config/avr/avr-arch.h: ...this new file.
+       * config/avr/gen-avr-mmcu-texi.c: Include avr-arch.h, stdio.h,
+       stdlib.h.
+       * comparator: Make letters smaller than digits.
+       * config/avr/avr-devices.c: Don't include headers if used in
+       gen-avr-mmcu-texi.c.
+       * doc/avr-mmcu.texi: Regenerate.
+
 2012-09-17  Georg-Johann Lay  <avr@gjlay.de>
 
        * rtl.h (CONST_FIXED_P): New predicate macro.
index c84348b83928e514741b68acf3808804320d92a6..4d6b3aca6ea874b11a803b1809fe424bbb6e3355 100644 (file)
@@ -886,13 +886,13 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
        tm_file="${tm_file} arm/aout.h arm/arm.h"
        ;;
 avr-*-rtems*)
-       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
+       tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
        tmake_file="avr/t-avr avr/t-multilib t-rtems avr/t-rtems"
        extra_gcc_objs="driver-avr.o avr-devices.o"
        extra_objs="avr-devices.o avr-log.o"
        ;;
 avr-*-*)
-       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/avr-stdint.h"
+       tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h dbxelf.h avr/avr-stdint.h"
        if test x${with_avrlibc} != xno; then
            tm_file="${tm_file} ${cpu_type}/avrlibc.h"
            tm_defines="${tm_defines} WITH_AVRLIBC"
diff --git a/gcc/config/avr/avr-arch.h b/gcc/config/avr/avr-arch.h
new file mode 100644 (file)
index 0000000..b28bec9
--- /dev/null
@@ -0,0 +1,156 @@
+/* Definitions of types that are used to store AVR architecture and
+   device information.
+   Copyright (C) 2012 Free Software Foundation, Inc.
+   Contributed by Georg-Johann Lay (avr@gjlay.de)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+    
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* This enum supplies indices into the avr_arch_types[] table below. */
+
+enum avr_arch
+{
+  ARCH_UNKNOWN,
+  ARCH_AVR1,
+  ARCH_AVR2,
+  ARCH_AVR25,
+  ARCH_AVR3,
+  ARCH_AVR31,
+  ARCH_AVR35,
+  ARCH_AVR4,
+  ARCH_AVR5,
+  ARCH_AVR51,
+  ARCH_AVR6,
+  ARCH_AVRXMEGA2,
+  ARCH_AVRXMEGA4,
+  ARCH_AVRXMEGA5,
+  ARCH_AVRXMEGA6,
+  ARCH_AVRXMEGA7
+};
+
+
+/* Architecture-specific properties.  */
+
+struct base_arch_s
+{
+  /* Assembler only.  */
+  int asm_only;
+
+  /* Core have 'MUL*' instructions.  */
+  int have_mul;
+
+  /* Core have 'CALL' and 'JMP' instructions.  */
+  int have_jmp_call;
+
+  /* Core have 'MOVW' and 'LPM Rx,Z' instructions.  */
+  int have_movw_lpmx;
+
+  /* Core have 'ELPM' instructions.  */
+  int have_elpm;
+
+  /* Core have 'ELPM Rx,Z' instructions.  */
+  int have_elpmx;
+
+  /* Core have 'EICALL' and 'EIJMP' instructions.  */
+  int have_eijmp_eicall;
+
+  /* This is an XMEGA core.  */
+  int xmega_p;
+
+  /* This core has the RAMPD special function register
+     and thus also the RAMPX, RAMPY and RAMPZ registers.  */
+  int have_rampd;
+  
+  /* Default start of data section address for architecture.  */
+  int default_data_section_start;
+
+  /* Offset between SFR address and RAM address:
+     SFR-address = RAM-address - sfr_offset  */
+  int sfr_offset;
+
+  /* Architecture id to built-in define __AVR_ARCH__ (NULL -> no macro) */
+  const char *const macro;
+  
+  /* Architecture name.  */
+  const char *const arch_name;  
+};
+
+
+/* Device-specific properties.  */
+
+struct mcu_type_s
+{
+  /* Device name.  */
+  const char *const name;
+  
+  /* Index in avr_arch_types[].  */
+  enum avr_arch arch; 
+  
+  /* Must lie outside user's namespace.  NULL == no macro.  */
+  const char *const macro;
+  
+  /* Stack pointer have 8 bits width.  */
+  int short_sp;
+  
+  /* Some AVR devices have a core erratum when skipping a 2-word instruction.
+     Skip instructions are:  SBRC, SBRS, SBIC, SBIS, CPSE.
+     Problems will occur with return address is IRQ executes during the
+     skip sequence.
+
+     A support ticket from Atmel returned the following information:
+
+         Subject: (ATTicket:644469) On AVR skip-bug core Erratum
+         From: avr@atmel.com                    Date: 2011-07-27
+         (Please keep the subject when replying to this mail)
+
+         This errata exists only in AT90S8515 and ATmega103 devices.
+
+         For information please refer the following respective errata links
+            http://www.atmel.com/dyn/resources/prod_documents/doc2494.pdf
+            http://www.atmel.com/dyn/resources/prod_documents/doc1436.pdf  */
+
+  /* Core Erratum:  Must not skip 2-word instruction.  */
+  int errata_skip;
+  
+  /* Start of data section.  */
+  int data_section_start;
+  
+  /* Number of 64k segments in the flash.  */
+  int n_flash;
+
+  /* Name of device library.  */
+  const char *const library_name; 
+};
+
+/* Map architecture to its texinfo string.  */
+
+struct arch_info_s
+{
+  /* Architecture ID.  */
+  enum avr_arch arch;
+
+  /* textinfo source to describe the archtiecture.  */
+  const char *texinfo;
+};
+
+/* Preprocessor macros to define depending on MCU type.  */
+
+extern const char *avr_extra_arch_macro;
+extern const struct base_arch_s *avr_current_arch;
+extern const struct mcu_type_s *avr_current_device;
+extern const struct mcu_type_s avr_mcu_types[];
+extern const struct base_arch_s avr_arch_types[];
index 47cfefd861298739516ac5dbce8f4b3132ed4dad..3ee1eff49caaa85c8afdb59e3ae9ba0a841bdaee 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef IN_GEN_AVR_MMCU_TEXI
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#endif /* IN_GEN_AVR_MMCU_TEXI */
 
 /* List of all known AVR MCU architectures.
    Order as of enum avr_arch from avr.h.  */
index f8686685b2f2ad5cc957fd5e1d2f7338a62232da..8488ecd3e08e3910bebb2d1987b29350124de12b 100644 (file)
@@ -21,133 +21,6 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* Names to predefine in the preprocessor for this target machine.  */
-
-struct base_arch_s
-{
-  /* Assembler only.  */
-  int asm_only;
-
-  /* Core have 'MUL*' instructions.  */
-  int have_mul;
-
-  /* Core have 'CALL' and 'JMP' instructions.  */
-  int have_jmp_call;
-
-  /* Core have 'MOVW' and 'LPM Rx,Z' instructions.  */
-  int have_movw_lpmx;
-
-  /* Core have 'ELPM' instructions.  */
-  int have_elpm;
-
-  /* Core have 'ELPM Rx,Z' instructions.  */
-  int have_elpmx;
-
-  /* Core have 'EICALL' and 'EIJMP' instructions.  */
-  int have_eijmp_eicall;
-
-  /* This is an XMEGA core.  */
-  int xmega_p;
-
-  /* This core has the RAMPD special function register
-     and thus also the RAMPX, RAMPY and RAMPZ registers.  */
-  int have_rampd;
-  
-  /* Default start of data section address for architecture.  */
-  int default_data_section_start;
-
-  /* Offset between SFR address and RAM address:
-     SFR-address = RAM-address - sfr_offset  */
-  int sfr_offset;
-
-  /* Architecture id to built-in define __AVR_ARCH__ (NULL -> no macro) */
-  const char *const macro;
-  
-  /* Architecture name.  */
-  const char *const arch_name;  
-};
-
-/* These names are used as the index into the avr_arch_types[] table 
-   above.  */
-
-enum avr_arch
-{
-  ARCH_UNKNOWN,
-  ARCH_AVR1,
-  ARCH_AVR2,
-  ARCH_AVR25,
-  ARCH_AVR3,
-  ARCH_AVR31,
-  ARCH_AVR35,
-  ARCH_AVR4,
-  ARCH_AVR5,
-  ARCH_AVR51,
-  ARCH_AVR6,
-  ARCH_AVRXMEGA2,
-  ARCH_AVRXMEGA4,
-  ARCH_AVRXMEGA5,
-  ARCH_AVRXMEGA6,
-  ARCH_AVRXMEGA7
-};
-
-struct mcu_type_s {
-  /* Device name.  */
-  const char *const name;
-  
-  /* Index in avr_arch_types[].  */
-  enum avr_arch arch; 
-  
-  /* Must lie outside user's namespace.  NULL == no macro.  */
-  const char *const macro;
-  
-  /* Stack pointer have 8 bits width.  */
-  int short_sp;
-  
-  /* Some AVR devices have a core erratum when skipping a 2-word instruction.
-     Skip instructions are:  SBRC, SBRS, SBIC, SBIS, CPSE.
-     Problems will occur with return address is IRQ executes during the
-     skip sequence.
-
-     A support ticket from Atmel returned the following information:
-
-         Subject: (ATTicket:644469) On AVR skip-bug core Erratum
-         From: avr@atmel.com                    Date: 2011-07-27
-         (Please keep the subject when replying to this mail)
-
-         This errata exists only in AT90S8515 and ATmega103 devices.
-
-         For information please refer the following respective errata links
-            http://www.atmel.com/dyn/resources/prod_documents/doc2494.pdf
-            http://www.atmel.com/dyn/resources/prod_documents/doc1436.pdf  */
-
-  /* Core Erratum:  Must not skip 2-word instruction.  */
-  int errata_skip;
-  
-  /* Start of data section.  */
-  int data_section_start;
-  
-  /* Number of 64k segments in the flash.  */
-  int n_flash;
-
-  /* Name of device library.  */
-  const char *const library_name; 
-};
-
-struct arch_info_s {
-  /* Architecture ID.  */
-  enum avr_arch arch;
-
-  /* textinfo source to describe the archtiecture.  */
-  const char *texinfo;
-};
-
-/* Preprocessor macros to define depending on MCU type.  */
-extern const char *avr_extra_arch_macro;
-extern const struct base_arch_s *avr_current_arch;
-extern const struct mcu_type_s *avr_current_device;
-extern const struct mcu_type_s avr_mcu_types[];
-extern const struct base_arch_s avr_arch_types[];
-
 typedef struct
 {
   /* Id of the address space as used in c_register_addr_space */
index f4cb24e289f92e66dbca2b2661aa38b7db70ffb3..d5567e7099074b001e23ed8511d101851d5cd202 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
+#include <stdlib.h>
+#include <stdio.h>
+
+#define IN_GEN_AVR_MMCU_TEXI
+
+#include "avr-arch.h"
 #include "avr-devices.c"
 
 static const char*
 mcu_name[sizeof avr_mcu_types / sizeof avr_mcu_types[0]];
 
+static int letter (char c)
+{
+  return c >= 'a' && c <= 'z';
+}
+
+static int digit (char c)
+{
+  return c >= '0' && c <= '9';
+}
+
 static int
 comparator (const void *va, const void *vb)
 {
-  const char* const *a = (const char* const*) va;
-  const char* const *b = (const char* const*) vb;
+  const char *a = *(const char* const*) va;
+  const char *b = *(const char* const*) vb;
+
+  while (*a && *b)
+    {
+      /* Make letters smaller than digits so that `atmega16a' follows
+         `atmega16' without `atmega161' etc. between them.  */
+      
+      if (letter (*a) && digit (*b))
+        return -1;
+
+      if (digit (*a) && letter (*b))
+        return 1;
+
+      if (*a != *b)
+        return *a - *b;
+      
+      a++;
+      b++;
+    }
 
-  return strcmp (*a, *b);
+  return *a - *b;
 } 
 
 static void
@@ -61,6 +95,7 @@ int main (void)
 
   printf ("@c This file is generated automatically using\n");
   printf ("@c gcc/config/avr/gen-avr-mmcu-texi.c from:\n");
+  printf ("@c    gcc/config/avr/avr-arch.h\n");
   printf ("@c    gcc/config/avr/avr-devices.c\n");
   printf ("@c    gcc/config/avr/avr-mcus.def\n\n");
 
index 98f4c3db8be72fa8592ea97d31b54c17b2fbb061..f4cd26f59cfabc9dc5f812568e2fb9f63b8fa31d 100644 (file)
@@ -44,8 +44,9 @@ $(srcdir)/config/avr/avr-tables.opt: $(srcdir)/config/avr/genopt.sh $(AVR_MCUS)
        $(SHELL) $< $(AVR_MCUS) > $@
 
 gen-avr-mmcu-texi$(build_exeext): $(srcdir)/config/avr/gen-avr-mmcu-texi.c \
-  $(TM_H) $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c
-       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< -o $@
+  $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c \
+  $(srcdir)/config/avr/avr-arch.h
+       $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $< -o $@
 
 # Make sure that the -mmcu= documentation is in sync with the compiler.
 $(srcdir)/doc/avr-mmcu.texi: s-avr-mmcu-texi; @true
index ac9c631161a027b38453ac3aa101999111fa0c9c..9306e08002cb234bbd61f6e5eb28d8432cd0694f 100644 (file)
@@ -4,6 +4,7 @@
 
 @c This file is generated automatically using
 @c gcc/config/avr/gen-avr-mmcu-texi.c from:
+@c    gcc/config/avr/avr-arch.h
 @c    gcc/config/avr/avr-devices.c
 @c    gcc/config/avr/avr-mcus.def
 
 
 @item avr2
 ``Classic'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at90c8534}, @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90s8515}, @code{at90s8535}, @code{attiny22}, @code{attiny26}.
+@*@var{mcu}@tie{}= @code{attiny22}, @code{attiny26}, @code{at90c8534}, @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90s8515}, @code{at90s8535}.
 
 @item avr25
 ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{at86rf401}, @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny4313}, @code{attiny43u}, @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}.
+@*@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}.
 
 @item avr3
 ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
 
 @item avr31
 ``Classic'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at43usb320}, @code{atmega103}.
+@*@var{mcu}@tie{}= @code{atmega103}, @code{at43usb320}.
 
 @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{at90usb162}, @code{at90usb82}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}.
+@*@var{mcu}@tie{}= @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
 
 @item avr4
 ``Enhanced'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega8}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{atmega8hva}.
+@*@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}.
 
 @item avr5
 ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{atmega16}, @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{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega32}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega325a}, @code{atmega325p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega406}, @code{atmega64}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega645a}, @code{atmega645p}, @code{atmega649}, @code{atmega6490}, @code{atmega649a}, @code{atmega649p}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{m3000}.
+@*@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}.
 
 @item avr51
 ``Enhanced'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}, @code{atmega128}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{atmega128rfa1}.
+@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega128rfa1}, @code{atmega1280}, @code{atmega1281}, @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.
@@ -69,6 +70,6 @@
 
 @item avr1
 This ISA is implemented by the minimal AVR core and supported for assembler only.
-@*@var{mcu}@tie{}= @code{at90s1200}, @code{attiny11}, @code{attiny12}, @code{attiny15}, @code{attiny28}.
+@*@var{mcu}@tie{}= @code{attiny11}, @code{attiny12}, @code{attiny15}, @code{attiny28}, @code{at90s1200}.
 
 @end table