[packages/crossavr-binutils] - up to 2.46

baggins baggins at pld-linux.org
Sun Apr 5 22:52:42 CEST 2026


commit 19c02fec30be8e8d90232030cabfb1d02ee0c76c
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Apr 5 23:52:34 2026 +0200

    - up to 2.46

 001-xmega-Makefile_am-typo.patch               |  23 -
 002-tinycore-support.patch                     | 702 -------------------------
 003-RMW-insn-constriant.patch                  |  37 --
 004-new-part-supports.patch                    | 257 ---------
 005-additional-part-supports.patch             | 105 ----
 006-xmega-showuage-typo.patch                  |  11 -
 007-ata6289-architecture-correction.patch      |  40 --
 008-add-usersig-section.patch                  |  22 -
 009-dwarf-relax-fix.patch                      | 484 -----------------
 010-disable-demand-paging.patch                |  28 -
 200-binutils-avr-size.patch                    | 619 ----------------------
 201-binutils-dwarf2-AVRStudio-workaround.patch |  28 -
 202-binutils-bug13113.patch                    |  48 --
 400-binutils-atmxt336s.patch                   |  50 --
 401-binutils-atmega48hvf.patch                 |  48 --
 402-binutils-atmega26hvg.patch                 |  49 --
 403-binutils-atmxt224_224e.patch               |  45 --
 404-binutils-atmxt112sl.patch                  |  35 --
 405-binutils-atmxt540s.patch                   |  51 --
 406-binutils-ata5831.patch                     | 444 ----------------
 407-binutils-attiny841.patch                   |  34 --
 408-binutils-atmegarfa2.patch                  |  87 ---
 409-binutils-ata5790n.patch                    |  34 --
 410-binutils-atmega64hve2.patch                |  40 --
 411-binutils-attiny474.patch                   |  38 --
 412-binutils-atmxts200.patch                   |  34 --
 500-binutils-avrtc530-backported.patch         |  33 --
 am.patch                                       |  20 -
 crossavr-binutils.spec                         |  72 +--
 29 files changed, 6 insertions(+), 3512 deletions(-)
---
diff --git a/crossavr-binutils.spec b/crossavr-binutils.spec
index e493941..a8dcbfd 100644
--- a/crossavr-binutils.spec
+++ b/crossavr-binutils.spec
@@ -5,43 +5,13 @@ Summary(pl.UTF-8):	Skrośne narzędzia programistyczne GNU dla AVR - binutils
 Summary(pt_BR.UTF-8):	Utilitários para desenvolvimento de binários da GNU - AVR binutils
 Summary(tr.UTF-8):	GNU geliştirme araçları - AVR binutils
 Name:		crossavr-binutils
-Version:	2.23.1
-Release:	3
+Version:	2.46
+Release:	1
 Epoch:		1
 License:	GPL v3+
 Group:		Development/Tools
-Source0:	http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.bz2
-# Source0-md5:	33adb18c3048d057ac58d07a3f1adb38
-Patch0:		am.patch
-# Patches 1xx are taken form Atmel official AVR8-GNU toolchain version 3.4.2
-# http://distribute.atmel.no/tools/opensource/Atmel-AVR-Toolchain-3.4.2/avr/avr-patches.tar.gz
-Patch100:	001-xmega-Makefile_am-typo.patch
-Patch101:	002-tinycore-support.patch
-Patch102:	003-RMW-insn-constriant.patch
-Patch103:	004-new-part-supports.patch
-Patch104:	005-additional-part-supports.patch
-Patch105:	006-xmega-showuage-typo.patch
-Patch106:	007-ata6289-architecture-correction.patch
-Patch107:	008-add-usersig-section.patch
-Patch108:	009-dwarf-relax-fix.patch
-Patch109:	010-disable-demand-paging.patch
-Patch110:	200-binutils-avr-size.patch
-Patch111:	201-binutils-dwarf2-AVRStudio-workaround.patch
-Patch112:	202-binutils-bug13113.patch
-Patch113:	400-binutils-atmxt336s.patch
-Patch114:	401-binutils-atmega48hvf.patch
-Patch115:	402-binutils-atmega26hvg.patch
-Patch116:	403-binutils-atmxt224_224e.patch
-Patch117:	404-binutils-atmxt112sl.patch
-Patch118:	405-binutils-atmxt540s.patch
-Patch119:	406-binutils-ata5831.patch
-Patch120:	407-binutils-attiny841.patch
-Patch121:	408-binutils-atmegarfa2.patch
-Patch122:	409-binutils-ata5790n.patch
-Patch123:	410-binutils-atmega64hve2.patch
-Patch124:	411-binutils-attiny474.patch
-Patch125:	412-binutils-atmxts200.patch
-Patch126:	500-binutils-avrtc530-backported.patch
+Source0:	https://ftp.gnu.org/gnu/binutils/binutils-with-gold-%{version}.tar.lz
+# Source0-md5:	e221b6201b7234e3e7733e878ff476c4
 URL:		http://sources.redhat.com/binutils/
 BuildRequires:	autoconf >= 2.64
 BuildRequires:	automake >= 1:1.9
@@ -86,35 +56,7 @@ programów i bibliotek.
 Ten pakiet zawiera wersję skrośną generującą kod dla Atmel AVR.
 
 %prep
-%setup -q -n binutils-%{version}
-%patch -P0 -p1
-%patch -P100 -p0
-%patch -P101 -p0
-%patch -P102 -p0
-%patch -P103 -p0
-%patch -P104 -p0
-%patch -P105 -p0
-%patch -P106 -p0
-%patch -P107 -p0
-%patch -P108 -p0
-%patch -P109 -p0
-%patch -P110 -p0
-%patch -P111 -p0
-%patch -P112 -p0
-%patch -P113 -p0
-%patch -P114 -p0
-%patch -P115 -p0
-%patch -P116 -p0
-%patch -P117 -p0
-%patch -P118 -p0
-%patch -P119 -p0
-%patch -P120 -p0
-%patch -P121 -p0
-%patch -P122 -p0
-%patch -P123 -p0
-%patch -P124 -p0
-%patch -P125 -p0
-%patch -P126 -p0
+%setup -q -n binutils-with-gold-%{version}
 
 # Remove hacks for specific autoconf version.
 echo > config/override.m4
@@ -173,14 +115,12 @@ install -d $RPM_BUILD_ROOT%{_prefix}
 
 # remove these man pages unless we cross-build for win*/netware platforms.
 # however, this should be done in Makefiles.
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{*dlltool,*nlmconv,*windmc,*windres}.1
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{*dlltool,*windmc,*windres}.1
 
 # rely on system locales and info documentation
 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}
 %{__rm} -r $RPM_BUILD_ROOT%{_infodir}
 
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/libiberty.a
-
 %clean
 rm -rf $RPM_BUILD_ROOT
 
diff --git a/001-xmega-Makefile_am-typo.patch b/001-xmega-Makefile_am-typo.patch
deleted file mode 100644
index 9e6e965..0000000
--- a/001-xmega-Makefile_am-typo.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- ld/Makefile.am	2012-08-23 11:16:38.000000000 +0530
-+++ ld/Makefile.am	2012-08-24 15:39:45.000000000 +0530
-@@ -165,13 +165,13 @@ ALL_EMULATION_SOURCES = \
- 	eavr5.c \
- 	eavr51.c \
- 	eavr6.c \
--	eavrxmega1.o \
--	eavrxmega2.o \
--	eavrxmega3.o \
--	eavrxmega4.o \
--	eavrxmega5.o \
--	eavrxmega6.o \
--	eavrxmega7.o \
-+	eavrxmega1.c \
-+	eavrxmega2.c \
-+	eavrxmega3.c \
-+	eavrxmega4.c \
-+	eavrxmega5.c \
-+	eavrxmega6.c \
-+	eavrxmega7.c \
- 	ecoff_i860.c \
- 	ecoff_sparc.c \
- 	ecrisaout.c \
diff --git a/002-tinycore-support.patch b/002-tinycore-support.patch
deleted file mode 100644
index 5cd3b9b..0000000
--- a/002-tinycore-support.patch
+++ /dev/null
@@ -1,702 +0,0 @@
-diff -Naurp bfd/archures.c bfd/archures.c
---- bfd/archures.c	2012-09-04 18:23:41.000000000 +0530
-+++ bfd/archures.c	2012-12-21 14:14:42.000000000 +0530
-@@ -391,6 +391,7 @@ DESCRIPTION
- .#define bfd_mach_avr5		5
- .#define bfd_mach_avr51		51
- .#define bfd_mach_avr6		6
-+.#define bfd_mach_avrtiny   90
- .#define bfd_mach_avrxmega1 101
- .#define bfd_mach_avrxmega2 102
- .#define bfd_mach_avrxmega3 103
-diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
---- bfd/cpu-avr.c	2012-01-31 23:24:35.000000000 +0530
-+++ bfd/cpu-avr.c	2012-12-21 14:14:42.000000000 +0530
-@@ -135,24 +135,27 @@ static const bfd_arch_info_type arch_inf
- 
-   /* 3-Byte PC.  */
-   N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
--  
-+
-+  /* Tiny core (ATTiny10 & similar) */
-+  N (16, bfd_mach_avrtiny, "avr:90", FALSE, & arch_info_struct[11]),
-+
-   /* Xmega 1 */
--  N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[11]),
-+  N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[12]),
- 
-   /* Xmega 2 */
--  N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[12]),
-+  N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[13]),
-   
-   /* Xmega 3 */
--  N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[13]),
-+  N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[14]),
-   
-   /* Xmega 4 */
--  N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[14]),
-+  N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[15]),
-   
-   /* Xmega 5 */
--  N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[15]),
-+  N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[16]),
-   
-   /* Xmega 6 */
--  N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]),
-+  N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[17]),
-   
-   /* Xmega 7 */
-   N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL)
-diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
---- bfd/elf32-avr.c	2012-07-25 03:14:44.000000000 +0530
-+++ bfd/elf32-avr.c	2012-12-21 14:14:42.000000000 +0530
-@@ -559,6 +559,20 @@ static reloc_howto_type elf_avr_howto_ta
- 	 0xffffff,		/* src_mask */
- 	 0xffffff,		/* dst_mask */
- 	 FALSE),		/* pcrel_offset */
-+  /* 7 bit immediate for LDS/STS in Tiny core */
-+  HOWTO (R_AVR_7_LDS16,         /* type */
-+         0,                     /* rightshift */
-+         1,                     /* size (0 = byte, 1 = short, 2 = long) */
-+         7,                     /* bitsize */  
-+         FALSE,                 /* pc_relative */
-+         0,                     /* bitpos */
-+         complain_overflow_dont,/* complain_on_overflow */
-+         bfd_elf_generic_reloc, /* special_function */
-+         "R_AVR_7_LDS16",       /* name */
-+         FALSE,                 /* partial_inplace */
-+         0xffff,                /* src_mask */
-+         0xffff,                /* dst_mask */
-+         FALSE),                /* pcrel_offset */
- };
- 
- /* Map BFD reloc types to AVR ELF reloc types.  */
-@@ -600,7 +614,8 @@ static const struct avr_reloc_map avr_re
-   { BFD_RELOC_8,                    R_AVR_8 },
-   { BFD_RELOC_AVR_8_LO,             R_AVR_8_LO8 },
-   { BFD_RELOC_AVR_8_HI,             R_AVR_8_HI8 },
--  { BFD_RELOC_AVR_8_HLO,            R_AVR_8_HLO8 }
-+  { BFD_RELOC_AVR_8_HLO,            R_AVR_8_HLO8 },
-+  { BFD_RELOC_AVR_7_LDS16,          R_AVR_7_LDS16 }
- };
- 
- /* Meant to be filled one day with the wrap around address for the
-@@ -1131,6 +1146,17 @@ avr_final_link_relocate (reloc_howto_typ
-       bfd_put_16 (input_bfd, (bfd_vma) srel & 0xffff, contents+2);
-       break;
- 
-+    case R_AVR_7_LDS16:
-+      contents += rel->r_offset;
-+      srel = (bfd_signed_vma) relocation + rel->r_addend;
-+      if ((srel & 0xFFFF) < 0x40 || (srel & 0xFFFF) > 0xbf)
-+        return bfd_reloc_outofrange;
-+      srel = srel & 0x7f;
-+      x = bfd_get_16 (input_bfd, contents);
-+      x |= (srel & 0x0f) | ((srel & 0x30) << 5) | ((srel & 0x40) << 2);
-+      bfd_put_16 (input_bfd, x, contents);
-+      break;
-+
-     case R_AVR_16_PM:
-       use_stubs = (!htab->no_stubs);
-       contents += rel->r_offset;
-@@ -1372,6 +1398,10 @@ bfd_elf_avr_final_write_processing (bfd 
-     case bfd_mach_avrxmega7:
-       val = E_AVR_MACH_XMEGA7;
-       break;
-+
-+    case bfd_mach_avrtiny:
-+      val = E_AVR_MACH_AVRTINY;
-+      break;
-     }
- 
-   elf_elfheader (abfd)->e_machine = EM_AVR;
-@@ -1462,6 +1492,10 @@ elf32_avr_object_p (bfd *abfd)
- 	case E_AVR_MACH_XMEGA7:
- 	  e_set = bfd_mach_avrxmega7;
- 	  break;
-+
-+	case E_AVR_MACH_AVRTINY:
-+	  e_set = bfd_mach_avrtiny;
-+	  break;
- 	}
-     }
-   return bfd_default_set_arch_mach (abfd, bfd_arch_avr,
-diff -Naurp bfd/reloc.c bfd/reloc.c
---- bfd/reloc.c	2012-09-04 18:23:42.000000000 +0530
-+++ bfd/reloc.c	2012-12-21 14:14:42.000000000 +0530
-@@ -4409,6 +4409,11 @@ ENUM
- ENUMDOC
-   This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
-   in .byte hlo8(symbol)
-+ENUM
-+  BFD_RELOC_AVR_7_LDS16
-+ENUMDOC
-+  This is a 7 bit reloc for the AVR that stores offset for 16bit sts/lds
-+  instructions supported only by Tiny core
- 
- ENUM
-   BFD_RELOC_RL78_NEG8
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-06-11 19:56:41.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-21 14:14:42.000000000 +0530
-@@ -89,6 +89,7 @@ static struct mcu_type_s mcu_types[] =
-   {"avrxmega5",  AVR_ISA_XMEGA,   bfd_mach_avrxmega5},
-   {"avrxmega6",  AVR_ISA_XMEGA,   bfd_mach_avrxmega6},
-   {"avrxmega7",  AVR_ISA_XMEGA,   bfd_mach_avrxmega7},
-+  {"avrtiny",    AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-   {"at90s1200",  AVR_ISA_1200,    bfd_mach_avr1},
-   {"attiny11",   AVR_ISA_AVR1,    bfd_mach_avr1},
-   {"attiny12",   AVR_ISA_AVR1,    bfd_mach_avr1},
-@@ -274,6 +275,12 @@ static struct mcu_type_s mcu_types[] =
-   {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-   {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-+  {"attiny4",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-+  {"attiny5",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-+  {"attiny9",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-+  {"attiny10",     AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-+  {"attiny20",     AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-+  {"attiny40",     AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-   {NULL, 0, 0}
- };
- 
-@@ -455,6 +462,7 @@ md_show_usage (FILE *stream)
- 	"                   avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM\n"
- 	"                   avrxmega6 - XMEGA, > 128K, <= 256K FLASH, <= 64K RAM\n"
- 	"                   avrxmega7 - XMEGA, > 128K, <= 256K FLASH, > 64K RAM\n"
-+	"                   avrtiny   - AVR Tiny core\n"
- 	"                   or immediate microcontroller name.\n"));
-   fprintf (stream,
-       _("  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
-@@ -803,6 +811,12 @@ avr_operand (struct avr_opcodes_s *opcod
- 	  str = input_line_pointer;
- 	}
- 
-+      if (avr_mcu->mach == bfd_mach_avrtiny)
-+        {
-+          if (op_mask < 16 || op_mask > 31)
-+            as_bad (_("register not supported"));
-+        }
-+
-       if (op_mask <= 31)
- 	{
- 	  switch (*op)
-@@ -941,6 +955,12 @@ avr_operand (struct avr_opcodes_s *opcod
- 		   &op_expr, FALSE, BFD_RELOC_16);
-       break;
- 
-+    case 'j':
-+      str = parse_exp (str, &op_expr);
-+      fix_new_exp (frag_now, where, opcode->insn_size * 2,
-+                   &op_expr, FALSE, BFD_RELOC_AVR_7_LDS16);
-+      break;
-+
-     case 'M':
-       {
- 	bfd_reloc_code_real_type r_type;
-@@ -1249,6 +1269,17 @@ md_apply_fix (fixS *fixP, valueT * valP,
- 	  bfd_putl16 ((bfd_vma) insn | LDI_IMMEDIATE (value), where);
- 	  break;
- 
-+        case BFD_RELOC_AVR_7_LDS16:
-+          if ((value < 0x40) || (value > 0xBF))
-+            as_warn_where (fixP->fx_file, fixP->fx_line,
-+                           _("operand out of range: 0x%lx"), 
-+                           (unsigned long)value);
-+          insn |= value & 0xF;
-+          insn |= (value & 0x30) << 5;
-+          insn |= (value & 0x40) << 2;
-+          bfd_putl16 ((bfd_vma) insn, where);
-+          break;
-+
- 	case BFD_RELOC_AVR_6:
- 	  if ((value > 63) || (value < 0))
- 	    as_bad_where (fixP->fx_file, fixP->fx_line,
-@@ -1448,6 +1479,28 @@ md_assemble (char *str)
- 
-   opcode = (struct avr_opcodes_s *) hash_find (avr_hash, op);
- 
-+  if (opcode && !avr_opt.all_opcodes)
-+    {
-+      /* Check if the instruction's ISA bit is ON in the ISA bits of the part 
-+         specified by the user. If not look for other instructions specifica-
-+         -tions with same mnemonic who's ISA bits matches. 
-+
-+         This requires include/opcode/avr.h to have the instructions with
-+         same mnenomic to be specified in sequence. */
-+
-+      while ((opcode->isa & avr_mcu->isa) != opcode->isa)
-+        {
-+          opcode++;
-+     
-+          if (opcode->name && strcmp(op, opcode->name))
-+            {
-+              as_bad (_("illegal opcode %s for mcu %s"), 
-+                      opcode->name, avr_mcu->name);
-+              return;
-+            }
-+        }
-+    } 
-+
-   if (opcode == NULL)
-     {
-       as_bad (_("unknown opcode `%s'"), op);
-@@ -1460,9 +1513,6 @@ md_assemble (char *str)
-   if (*str && *opcode->constraints == '?')
-     ++opcode;
- 
--  if (!avr_opt.all_opcodes && (opcode->isa & avr_mcu->isa) != opcode->isa)
--    as_bad (_("illegal opcode %s for mcu %s"), opcode->name, avr_mcu->name);
--
-   dwarf2_emit_insn (0);
- 
-   /* We used to set input_line_pointer to the result of get_operands,
-diff -Naurp include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h	2012-05-16 20:22:16.000000000 +0530
-+++ include/elf/avr.h	2012-12-21 14:14:42.000000000 +0530
-@@ -41,13 +41,14 @@
- #define E_AVR_MACH_AVR5     5
- #define E_AVR_MACH_AVR51   51
- #define E_AVR_MACH_AVR6     6 
--#define E_AVR_MACH_XMEGA1 101
--#define E_AVR_MACH_XMEGA2 102
--#define E_AVR_MACH_XMEGA3 103
--#define E_AVR_MACH_XMEGA4 104
--#define E_AVR_MACH_XMEGA5 105
--#define E_AVR_MACH_XMEGA6 106
--#define E_AVR_MACH_XMEGA7 107
-+#define E_AVR_MACH_AVRTINY 90
-+#define E_AVR_MACH_XMEGA1  101
-+#define E_AVR_MACH_XMEGA2  102
-+#define E_AVR_MACH_XMEGA3  103
-+#define E_AVR_MACH_XMEGA4  104
-+#define E_AVR_MACH_XMEGA5  105
-+#define E_AVR_MACH_XMEGA6  106
-+#define E_AVR_MACH_XMEGA7  107
- 
- /* Relocations.  */
- START_RELOC_NUMBERS (elf_avr_reloc_type)
-@@ -81,6 +82,7 @@ START_RELOC_NUMBERS (elf_avr_reloc_type)
-      RELOC_NUMBER (R_AVR_8_LO8,                27)
-      RELOC_NUMBER (R_AVR_8_HI8,                28)
-      RELOC_NUMBER (R_AVR_8_HLO8,               29)
-+     RELOC_NUMBER (R_AVR_7_LDS16,              30)
- END_RELOC_NUMBERS (R_AVR_max)
- 
- #endif /* _ELF_AVR_H */
-diff -Naurp include/opcode/avr.h include/opcode/avr.h
---- include/opcode/avr.h	2012-06-07 22:13:36.000000000 +0530
-+++ include/opcode/avr.h	2012-12-21 14:14:42.000000000 +0530
-@@ -22,6 +22,7 @@
- #define AVR_ISA_LPM   0x0002 /* device has LPM */
- #define AVR_ISA_LPMX  0x0004 /* device has LPM Rd,Z[+] */
- #define AVR_ISA_SRAM  0x0008 /* device has SRAM (LD, ST, PUSH, POP, ...) */
-+#define AVR_ISA_TINY  0x0010 /* device has Tiny core specific encodings */
- #define AVR_ISA_MEGA  0x0020 /* device has >8K program memory (JMP and CALL
- 				supported, no 8K wrap on RJMP and RCALL) */
- #define AVR_ISA_MUL   0x0040 /* device has new core (MUL, FMUL, ...) */
-@@ -37,6 +38,7 @@
- 
- #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
- #define AVR_ISA_2xxx  (AVR_ISA_TINY1 | AVR_ISA_SRAM)
-+#define AVR_ISA_2xxxa (AVR_ISA_1200 | AVR_ISA_SRAM)
- /* For the attiny26 which is missing LPM Rd,Z+.  */
- #define AVR_ISA_2xxe  (AVR_ISA_2xxx | AVR_ISA_LPMX)
- #define AVR_ISA_RF401 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX)
-@@ -71,6 +73,9 @@
-                         AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \
-                         AVR_ISA_BRK | AVR_ISA_EIND | AVR_ISA_MOVW)
- 
-+#define AVR_ISA_AVRTINY (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM | \
-+                         AVR_ISA_TINY)
-+
- #define REGISTER_P(x) ((x) == 'r'		\
- 		       || (x) == 'd'		\
- 		       || (x) == 'w'		\
-@@ -109,6 +114,7 @@
-    p - Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
-    K - immediate value from 0 to 63 (used in `adiw', `sbiw')
-    i - immediate value
-+   j - 7 bit immediate value from 0x40 to 0xBF (for 16-bit 'lds'/'sts')
-    l - signed pc relative offset from -64 to 63
-    L - signed pc relative offset from -2048 to 2047
-    h - absolute code address (call, jmp)
-@@ -159,8 +165,8 @@ AVR_INSN (sez,  "",    "1001010000011000
- AVR_INSN (bclr, "S",   "100101001SSS1000", 1, AVR_ISA_1200, 0x9488)
- AVR_INSN (bset, "S",   "100101000SSS1000", 1, AVR_ISA_1200, 0x9408)
- 
--AVR_INSN (icall,"",    "1001010100001001", 1, AVR_ISA_2xxx, 0x9509)
--AVR_INSN (ijmp, "",    "1001010000001001", 1, AVR_ISA_2xxx, 0x9409)
-+AVR_INSN (icall,"",    "1001010100001001", 1, AVR_ISA_2xxxa,0x9509)
-+AVR_INSN (ijmp, "",    "1001010000001001", 1, AVR_ISA_2xxxa,0x9409)
- 
- AVR_INSN (lpm,  "?",   "1001010111001000", 1, AVR_ISA_TINY1,0x95c8)
- AVR_INSN (lpm,  "r,z", "1001000ddddd010+", 1, AVR_ISA_LPMX, 0x9004)
-@@ -260,8 +266,8 @@ AVR_INSN (dec,  "r",   "1001010rrrrr1010
- AVR_INSN (inc,  "r",   "1001010rrrrr0011", 1, AVR_ISA_1200, 0x9403)
- AVR_INSN (lsr,  "r",   "1001010rrrrr0110", 1, AVR_ISA_1200, 0x9406)
- AVR_INSN (neg,  "r",   "1001010rrrrr0001", 1, AVR_ISA_1200, 0x9401)
--AVR_INSN (pop,  "r",   "1001000rrrrr1111", 1, AVR_ISA_2xxx, 0x900f)
--AVR_INSN (push, "r",   "1001001rrrrr1111", 1, AVR_ISA_2xxx, 0x920f)
-+AVR_INSN (pop,  "r",   "1001000rrrrr1111", 1, AVR_ISA_2xxxa,0x900f)
-+AVR_INSN (push, "r",   "1001001rrrrr1111", 1, AVR_ISA_2xxxa,0x920f)
- AVR_INSN (ror,  "r",   "1001010rrrrr0111", 1, AVR_ISA_1200, 0x9407)
- AVR_INSN (swap, "r",   "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402)
- 
-@@ -279,8 +285,10 @@ AVR_INSN (fmul, "a,a", "000000110ddd1rrr
- AVR_INSN (fmuls,"a,a", "000000111ddd0rrr", 1, AVR_ISA_MUL,  0x0380)
- AVR_INSN (fmulsu,"a,a","000000111ddd1rrr", 1, AVR_ISA_MUL,  0x0388)
- 
--AVR_INSN (sts,  "i,r", "1001001ddddd0000", 2, AVR_ISA_2xxx, 0x9200)
--AVR_INSN (lds,  "r,i", "1001000ddddd0000", 2, AVR_ISA_2xxx, 0x9000)
-+AVR_INSN (sts, "j,d", "10101kkkddddkkkk", 1, AVR_ISA_TINY, 0xA800)
-+AVR_INSN (sts, "i,r", "1001001ddddd0000", 2, AVR_ISA_2xxx, 0x9200)
-+AVR_INSN (lds, "d,j", "10100kkkddddkkkk", 1, AVR_ISA_TINY, 0xA000)
-+AVR_INSN (lds, "r,i", "1001000ddddd0000", 2, AVR_ISA_2xxx, 0x9000)
- 
-    /* Special case for b+0, `e' must be next entry after `b',
-       b={Y=1,Z=0}, ee={X=11,Y=10,Z=00}, !=1 if -e or e+ or X.  */
-diff -Naurp ld/configure.tgt ld/configure.tgt
---- ld/configure.tgt	2012-09-04 18:23:47.000000000 +0530
-+++ ld/configure.tgt	2012-12-21 14:14:42.000000000 +0530
-@@ -118,7 +118,7 @@ arm*-*-uclinux*)	targ_emul=armelf_linux
- arm-*-vxworks)		targ_emul=armelf_vxworks ;;
- arm*-*-conix*)		targ_emul=armelf ;;
- avr-*-*)		targ_emul=avr2
--			targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7"
-+			targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny"
- 			;;
- bfin-*-elf)		targ_emul=elf32bfin;
- 			targ_extra_emuls="elf32bfinfd"
-diff -Naurp ld/emulparams/avrtiny.sh ld/emulparams/avrtiny.sh
---- ld/emulparams/avrtiny.sh	1970-01-01 05:30:00.000000000 +0530
-+++ ld/emulparams/avrtiny.sh	2012-12-21 14:14:42.000000000 +0530
-@@ -0,0 +1,13 @@
-+ARCH=avr:90
-+MACHINE=
-+SCRIPT_NAME=avrtiny
-+OUTPUT_FORMAT="elf32-avr"
-+MAXPAGESIZE=1
-+EMBEDDED=yes
-+TEMPLATE_NAME=elf32
-+
-+TEXT_ORIGIN=0x0
-+TEXT_LENGTH=4K
-+DATA_ORIGIN=0x0800040
-+DATA_LENGTH=0x100
-+EXTRA_EM_FILE=avrelf
-diff -Naurp ld/Makefile.am ld/Makefile.am
---- ld/Makefile.am	2012-12-21 14:15:39.000000000 +0530
-+++ ld/Makefile.am	2012-12-21 14:14:42.000000000 +0530
-@@ -172,6 +172,7 @@ ALL_EMULATION_SOURCES = \
- 	eavrxmega5.c \
- 	eavrxmega6.c \
- 	eavrxmega7.c \
-+	eavrtiny.c   \
- 	ecoff_i860.c \
- 	ecoff_sparc.c \
- 	ecrisaout.c \
-@@ -844,9 +845,13 @@ eavrxmega6.c: $(srcdir)/emulparams/avrxm
-   ${GEN_DEPENDS}
- 	${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
- eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
--  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avrtiny.sc \
-   ${GEN_DEPENDS}
- 	${GENSCRIPTS} avrxmega7 "$(tdir_avr2)"
-+eavrtiny.c: $(srcdir)/emulparams/avrtiny.sh \
-+  $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+  ${GEN_DEPENDS}
-+	${GENSCRIPTS} avrtiny "$(tdir_avr2)"
- ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
-   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
- 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
-diff -Naurp ld/scripttempl/avrtiny.sc ld/scripttempl/avrtiny.sc
---- ld/scripttempl/avrtiny.sc	1970-01-01 05:30:00.000000000 +0530
-+++ ld/scripttempl/avrtiny.sc	2012-12-21 14:14:42.000000000 +0530
-@@ -0,0 +1,250 @@
-+cat <<EOF
-+OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
-+OUTPUT_ARCH(${ARCH})
-+
-+MEMORY
-+{
-+  text   (rx)   : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH
-+  data   (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
-+
-+  /* Provide offsets for config, lock and signature to match
-+     production file format. Ignore offsets in datasheet.  */
-+
-+  config(rw!x)     : ORIGIN = 0x820000, LENGTH = 2
-+  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 2
-+  signature (rw!x) : ORIGIN = 0x840000, LENGTH = 4
-+}
-+
-+SECTIONS
-+{
-+  /* Read-only sections, merged into text segment: */
-+  ${TEXT_DYNAMIC+${DYNAMIC}}
-+  .hash        ${RELOCATING-0} : { *(.hash)		}
-+  .dynsym      ${RELOCATING-0} : { *(.dynsym)		}
-+  .dynstr      ${RELOCATING-0} : { *(.dynstr)		}
-+  .gnu.version ${RELOCATING-0} : { *(.gnu.version)	}
-+  .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d)	}
-+  .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r)	}
-+
-+  .rel.init    ${RELOCATING-0} : { *(.rel.init)	}
-+  .rela.init   ${RELOCATING-0} : { *(.rela.init)	}
-+  .rel.text    ${RELOCATING-0} :
-+    {
-+      *(.rel.text)
-+      ${RELOCATING+*(.rel.text.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.t*)}
-+    }
-+  .rela.text   ${RELOCATING-0} :
-+    {
-+      *(.rela.text)
-+      ${RELOCATING+*(.rela.text.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.t*)}
-+    }
-+  .rel.fini    ${RELOCATING-0} : { *(.rel.fini)	}
-+  .rela.fini   ${RELOCATING-0} : { *(.rela.fini)	}
-+  .rel.rodata  ${RELOCATING-0} :
-+    {
-+      *(.rel.rodata)
-+      ${RELOCATING+*(.rel.rodata.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.r*)}
-+    }
-+  .rela.rodata ${RELOCATING-0} :
-+    {
-+      *(.rela.rodata)
-+      ${RELOCATING+*(.rela.rodata.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.r*)}
-+    }
-+  .rel.data    ${RELOCATING-0} :
-+    {
-+      *(.rel.data)
-+      ${RELOCATING+*(.rel.data.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.d*)}
-+    }
-+  .rela.data   ${RELOCATING-0} :
-+    {
-+      *(.rela.data)
-+      ${RELOCATING+*(.rela.data.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.d*)}
-+    }
-+  .rel.ctors   ${RELOCATING-0} : { *(.rel.ctors)	}
-+  .rela.ctors  ${RELOCATING-0} : { *(.rela.ctors)	}
-+  .rel.dtors   ${RELOCATING-0} : { *(.rel.dtors)	}
-+  .rela.dtors  ${RELOCATING-0} : { *(.rela.dtors)	}
-+  .rel.got     ${RELOCATING-0} : { *(.rel.got)		}
-+  .rela.got    ${RELOCATING-0} : { *(.rela.got)	}
-+  .rel.bss     ${RELOCATING-0} : { *(.rel.bss)		}
-+  .rela.bss    ${RELOCATING-0} : { *(.rela.bss)	}
-+  .rel.plt     ${RELOCATING-0} : { *(.rel.plt)		}
-+  .rela.plt    ${RELOCATING-0} : { *(.rela.plt)	}
-+
-+  /* Internal text space or external memory.  */
-+  .text ${RELOCATING-0} : ${RELOCATING+ AT (0x0)}
-+  {
-+    *(.vectors)
-+    KEEP(*(.vectors))
-+
-+    /* For data that needs to reside in the lower 64k of progmem.  */
-+    *(.progmem.gcc*)
-+    *(.progmem*)
-+    ${RELOCATING+. = ALIGN(2);}
-+
-+    ${CONSTRUCTING+ __trampolines_start = . ; }
-+    /* The jump trampolines for the 16-bit limited relocs will reside here.  */
-+    *(.trampolines)
-+    *(.trampolines*)
-+    ${CONSTRUCTING+ __trampolines_end = . ; }
-+
-+    /* For future tablejump instruction arrays for 3 byte pc devices.
-+       We don't relax jump/call instructions within these sections.  */
-+    *(.jumptables) 
-+    *(.jumptables*) 
-+
-+    /* For code that needs to reside in the lower 128k progmem.  */
-+    *(.lowtext)
-+    *(.lowtext*)
-+
-+    ${CONSTRUCTING+ __ctors_start = . ; }
-+    ${CONSTRUCTING+ *(.ctors) }
-+    ${CONSTRUCTING+ __ctors_end = . ; }
-+    ${CONSTRUCTING+ __dtors_start = . ; }
-+    ${CONSTRUCTING+ *(.dtors) }
-+    ${CONSTRUCTING+ __dtors_end = . ; }
-+    KEEP(SORT(*)(.ctors))
-+    KEEP(SORT(*)(.dtors))
-+
-+    /* From this point on, we don't bother about wether the insns are
-+       below or above the 16 bits boundary.  */
-+    *(.init0)  /* Start here after reset.  */
-+    KEEP (*(.init0))
-+    *(.init1)
-+    KEEP (*(.init1))
-+    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
-+    KEEP (*(.init2))
-+    *(.init3)
-+    KEEP (*(.init3))
-+    *(.init4)  /* Initialize data and BSS.  */
-+    KEEP (*(.init4))
-+    *(.init5)
-+    KEEP (*(.init5))
-+    *(.init6)  /* C++ constructors.  */
-+    KEEP (*(.init6))
-+    *(.init7)
-+    KEEP (*(.init7))
-+    *(.init8)
-+    KEEP (*(.init8))
-+    *(.init9)  /* Call main().  */
-+    KEEP (*(.init9))
-+    *(.text)
-+    ${RELOCATING+. = ALIGN(2);}
-+    *(.text.*)
-+    ${RELOCATING+. = ALIGN(2);}
-+    *(.fini9)  /* _exit() starts here.  */
-+    KEEP (*(.fini9))
-+    *(.fini8)
-+    KEEP (*(.fini8))
-+    *(.fini7)
-+    KEEP (*(.fini7))
-+    *(.fini6)  /* C++ destructors.  */
-+    KEEP (*(.fini6))
-+    *(.fini5)
-+    KEEP (*(.fini5))
-+    *(.fini4)
-+    KEEP (*(.fini4))
-+    *(.fini3)
-+    KEEP (*(.fini3))
-+    *(.fini2)
-+    KEEP (*(.fini2))
-+    *(.fini1)
-+    KEEP (*(.fini1))
-+    *(.fini0)  /* Infinite loop after program termination.  */
-+    KEEP (*(.fini0))
-+    ${RELOCATING+ _etext = . ; }
-+  } ${RELOCATING+ > text}
-+
-+  .data	${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
-+  {
-+    ${RELOCATING+ PROVIDE (__data_start = .) ; }
-+    *(.data)
-+    KEEP (*(.data))
-+    *(.data*)
-+    *(.rodata)  /* We need to include .rodata here if gcc is used */
-+    *(.rodata*) /* with -fdata-sections.  */
-+    *(.gnu.linkonce.d*)
-+    ${RELOCATING+. = ALIGN(2);}
-+    ${RELOCATING+ _edata = . ; }
-+    ${RELOCATING+ PROVIDE (__data_end = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))}
-+  {
-+    ${RELOCATING+ PROVIDE (__bss_start = .) ; }
-+    *(.bss)
-+    *(.bss*)
-+    *(COMMON)
-+    ${RELOCATING+ PROVIDE (__bss_end = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  ${RELOCATING+ __data_load_start = LOADADDR(.data); }
-+  ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); }
-+
-+  /* Global data not cleared after reset.  */
-+  .noinit ${RELOCATING-0}:
-+  {
-+    ${RELOCATING+ PROVIDE (__noinit_start = .) ; }
-+    *(.noinit*)
-+    ${RELOCATING+ PROVIDE (__noinit_end = .) ; }
-+    ${RELOCATING+ _end = . ;  }
-+    ${RELOCATING+ PROVIDE (__heap_start = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  .lock ${RELOCATING-0}:
-+  {
-+    KEEP(*(.lock*))
-+  } ${RELOCATING+ > lock}
-+
-+  .signature ${RELOCATING-0}:
-+  {
-+    KEEP(*(.signature*))
-+  } ${RELOCATING+ > signature}
-+
-+  .config ${RELOCATING-0}:
-+  {
-+    KEEP(*(.config*))
-+  } ${RELOCATING+ > config}
-+
-+  /* Stabs debugging sections.  */
-+  .stab 0 : { *(.stab) }
-+  .stabstr 0 : { *(.stabstr) }
-+  .stab.excl 0 : { *(.stab.excl) }
-+  .stab.exclstr 0 : { *(.stab.exclstr) }
-+  .stab.index 0 : { *(.stab.index) }
-+  .stab.indexstr 0 : { *(.stab.indexstr) }
-+  .comment 0 : { *(.comment) }
-+ 
-+  /* DWARF debug sections.
-+     Symbols in the DWARF debugging sections are relative to the beginning
-+     of the section so we begin them at 0.  */
-+
-+  /* DWARF 1 */
-+  .debug          0 : { *(.debug) }
-+  .line           0 : { *(.line) }
-+
-+  /* GNU DWARF 1 extensions */
-+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-+  .debug_sfnames  0 : { *(.debug_sfnames) }
-+
-+  /* DWARF 1.1 and DWARF 2 */
-+  .debug_aranges  0 : { *(.debug_aranges) }
-+  .debug_pubnames 0 : { *(.debug_pubnames) }
-+
-+  /* DWARF 2 */
-+  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
-+  .debug_abbrev   0 : { *(.debug_abbrev) }
-+  .debug_line     0 : { *(.debug_line) }
-+  .debug_frame    0 : { *(.debug_frame) }
-+  .debug_str      0 : { *(.debug_str) }
-+  .debug_loc      0 : { *(.debug_loc) }
-+  .debug_macinfo  0 : { *(.debug_macinfo) }
-+}
-+EOF
-+
-diff -Naurp opcodes/avr-dis.c opcodes/avr-dis.c
---- opcodes/avr-dis.c	2012-05-17 20:43:24.000000000 +0530
-+++ opcodes/avr-dis.c	2012-12-21 14:15:31.000000000 +0530
-@@ -187,6 +187,16 @@ avr_operand (unsigned int insn, unsigned
-     case 'i':
-       sprintf (buf, "0x%04X", insn2);
-       break;
-+
-+    case 'j':
-+      {
-+        unsigned int val = ((insn & 0xf) | ((insn & 0x600) >> 5)
-+                                         | ((insn & 0x100) >> 2));
-+        if (val > 0 && !(insn & 0x100))
-+          val |= 0x80;
-+        sprintf (buf, "0x%02x", val);
-+      }
-+      break;
-       
-     case 'M':
-       sprintf (buf, "0x%02X", ((insn & 0xf00) >> 4) | (insn & 0xf));
-@@ -330,8 +340,12 @@ print_insn_avr (bfd_vma addr, disassembl
-   for (opcode = avr_opcodes, maskptr = avr_bin_masks;
-        opcode->name;
-        opcode++, maskptr++)
--    if ((insn & *maskptr) == opcode->bin_opcode)
--      break;
-+    {
-+      if ((opcode->isa == AVR_ISA_TINY) && (info->mach != bfd_mach_avrtiny))
-+        continue;
-+      if ((insn & *maskptr) == opcode->bin_opcode)
-+        break;
-+    }
-   
-   /* Special case: disassemble `ldd r,b+0' as `ld r,b', and
-      `std b+0,r' as `st b,r' (next entry in the table).  */
diff --git a/003-RMW-insn-constriant.patch b/003-RMW-insn-constriant.patch
deleted file mode 100644
index fb71b0c..0000000
--- a/003-RMW-insn-constriant.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -Naurp include/opcode/avr.h include/opcode/avr.h
---- include/opcode/avr.h	2012-12-17 19:28:09.000000000 +0530
-+++ include/opcode/avr.h	2012-12-17 19:28:38.000000000 +0530
-@@ -34,7 +34,7 @@
- #define AVR_ISA_MOVW  0x1000 /* device has MOVW */
- #define AVR_ISA_SPMX  0x2000 /* device has SPM Z[+] */
- #define AVR_ISA_DES   0x4000 /* device has DES */
--#define AVR_ISA_XCH   0x8000 /* device has XCH, LAC, LAS, LAT */
-+#define AVR_ISA_RMW   0x8000 /* device has RMW instructions XCH,LAC,LAS,LAT */
- 
- #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
- #define AVR_ISA_2xxx  (AVR_ISA_TINY1 | AVR_ISA_SRAM)
-@@ -55,7 +55,8 @@
- #define AVR_ISA_M323  (AVR_ISA_M161 | AVR_ISA_BRK)
- #define AVR_ISA_M128  (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX)
- #define AVR_ISA_M256  (AVR_ISA_M128 | AVR_ISA_EIND)
--#define AVR_ISA_XMEGA (AVR_ISA_M256 | AVR_ISA_SPMX | AVR_ISA_DES | AVR_ISA_XCH)
-+#define AVR_ISA_XMEGA (AVR_ISA_M256 | AVR_ISA_SPMX | AVR_ISA_DES)
-+#define AVR_ISA_XMEGAU (AVR_ISA_XMEGA | AVR_ISA_RMW)
- 
- #define AVR_ISA_AVR1   AVR_ISA_TINY1
- #define AVR_ISA_AVR2   AVR_ISA_2xxx
-@@ -272,10 +273,10 @@ AVR_INSN (ror,  "r",   "1001010rrrrr0111
- AVR_INSN (swap, "r",   "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402)
- 
-    /* Atomic memory operations for XMEGA.  List before `sts'.  */
--AVR_INSN (xch,  "z,r",   "1001001rrrrr0100", 1, AVR_ISA_XCH, 0x9204)
--AVR_INSN (las,  "z,r",   "1001001rrrrr0101", 1, AVR_ISA_XCH, 0x9205)
--AVR_INSN (lac,  "z,r",   "1001001rrrrr0110", 1, AVR_ISA_XCH, 0x9206)
--AVR_INSN (lat,  "z,r",   "1001001rrrrr0111", 1, AVR_ISA_XCH, 0x9207)
-+AVR_INSN (xch,  "z,r",   "1001001rrrrr0100", 1, AVR_ISA_RMW, 0x9204)
-+AVR_INSN (las,  "z,r",   "1001001rrrrr0101", 1, AVR_ISA_RMW, 0x9205)
-+AVR_INSN (lac,  "z,r",   "1001001rrrrr0110", 1, AVR_ISA_RMW, 0x9206)
-+AVR_INSN (lat,  "z,r",   "1001001rrrrr0111", 1, AVR_ISA_RMW, 0x9207)
- 
-    /* Known to be decoded as `nop' by the old core.  */
- AVR_INSN (movw, "v,v", "00000001ddddrrrr", 1, AVR_ISA_MOVW, 0x0100)
diff --git a/004-new-part-supports.patch b/004-new-part-supports.patch
deleted file mode 100644
index 8744f11..0000000
--- a/004-new-part-supports.patch
+++ /dev/null
@@ -1,257 +0,0 @@
---- gas/config/tc-avr.c	2012-09-05 16:01:12.000000000 +0530
-+++ gas/config/tc-avr.c	2012-09-05 20:05:46.000000000 +0530
-@@ -107,6 +107,7 @@ static struct mcu_type_s mcu_types[] =
-   {"at90s8515",  AVR_ISA_AVR2,    bfd_mach_avr2},
-   {"at90c8534",  AVR_ISA_AVR2,    bfd_mach_avr2},
-   {"at90s8535",  AVR_ISA_AVR2,    bfd_mach_avr2},
-+  {"ata5272",    AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny13",   AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny13a",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny2313", AVR_ISA_AVR25,   bfd_mach_avr25},
-@@ -131,6 +132,7 @@ static struct mcu_type_s mcu_types[] =
-   {"attiny43u",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny48",   AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny88",   AVR_ISA_AVR25,   bfd_mach_avr25},
-+  {"attiny828",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"at86rf401",  AVR_ISA_RF401,   bfd_mach_avr25},
-   {"ata6289",    AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"at43usb355", AVR_ISA_AVR3,    bfd_mach_avr3},
-@@ -140,12 +142,18 @@ static struct mcu_type_s mcu_types[] =
-   {"attiny167",  AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"at90usb82",  AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"at90usb162", AVR_ISA_AVR35,   bfd_mach_avr35},
-+  {"ata5505",    AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"atmega8u2",  AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"atmega16u2", AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"atmega32u2", AVR_ISA_AVR35,   bfd_mach_avr35},
-+  {"attiny1634", AVR_ISA_AVR35,   bfd_mach_avr35},
-   {"atmega8",    AVR_ISA_M8,      bfd_mach_avr4},
-+  {"atmega8a",   AVR_ISA_M8,      bfd_mach_avr4},
-+  {"ata6285",    AVR_ISA_AVR4,    bfd_mach_avr4},
-+  {"ata6286",    AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48",   AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48a",  AVR_ISA_AVR4,    bfd_mach_avr4},
-+  {"atmega48pa", AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48p",  AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega88",   AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega88a",  AVR_ISA_AVR4,    bfd_mach_avr4},
-@@ -160,6 +168,9 @@ static struct mcu_type_s mcu_types[] =
-   {"at90pwm3",   AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"at90pwm3b",  AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"at90pwm81",  AVR_ISA_AVR4,    bfd_mach_avr4},
-+  {"at90pwm161", AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"ata5790",    AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"ata5795",    AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16",   AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16a",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega161",  AVR_ISA_M161,    bfd_mach_avr5},
-@@ -167,17 +178,21 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega163",  AVR_ISA_M161,    bfd_mach_avr5},
-   {"atmega164a", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega164p", AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega164pa",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega165",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega165a", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega165p", AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega165pa",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega168",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega168a", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega168p", AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega168pa",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega169",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega169a", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega169p", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega169pa",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega32",   AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega32a",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega323",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega324a", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega324p", AVR_ISA_AVR5,    bfd_mach_avr5},
-@@ -202,6 +217,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega3290pa",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"atmega406",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega64",   AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega64a",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega640",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega644",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega644a", AVR_ISA_AVR5,    bfd_mach_avr5},
-@@ -220,7 +236,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega6490a",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega6490p",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16hva",AVR_ISA_AVR5,    bfd_mach_avr5},
--  {"atmega16hva2",AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega16hva2",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"atmega16hvb",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-   {"atmega32hvb",AVR_ISA_AVR5,    bfd_mach_avr5},
-@@ -245,8 +261,10 @@ static struct mcu_type_s mcu_types[] =
-   {"at94k",      AVR_ISA_94K,     bfd_mach_avr5},
-   {"m3000",      AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega128",  AVR_ISA_AVR51,   bfd_mach_avr51},
-+  {"atmega128a", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega1280", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega1281", AVR_ISA_AVR51,   bfd_mach_avr51},
-+  {"atmega1284", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega1284p",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega128rfa1",AVR_ISA_AVR51, bfd_mach_avr51},
-   {"at90can128", AVR_ISA_AVR51,   bfd_mach_avr51},
-@@ -255,26 +273,46 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega2560", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atxmega16a4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-+  {"atxmega16c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega16d4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16x1", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega32a4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atxmega32a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-+  {"atxmega32c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega32d4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega32x1", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega64a3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-+  {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-+  {"atxmega64a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-+  {"atxmega64b1", AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-+  {"atxmega64b3", AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-+  {"atxmega64c3", AVR_ISA_XMEGAU,  bfd_mach_avrxmega4},
-   {"atxmega64d3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-   {"atxmega64a1", AVR_ISA_XMEGA,  bfd_mach_avrxmega5},
--  {"atxmega64a1u",AVR_ISA_XMEGA,  bfd_mach_avrxmega5},
-+  {"atxmega64a1u",AVR_ISA_XMEGAU,  bfd_mach_avrxmega5},
-   {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega128a3u",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega128b1", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega128b3", AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-+  {"atxmega128c3", AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega128d4", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega192a3u",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-+  {"atxmega192c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
-   {"atxmega192d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega256a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega256a3u",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega256a3b",AVR_ISA_XMEGA, bfd_mach_avrxmega6},
--  {"atxmega256a3bu",AVR_ISA_XMEGA,bfd_mach_avrxmega6},
-+  {"atxmega256a3bu",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-+  {"atxmega256c3", AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega256d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atxmega384c3", AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-+  {"atxmega384d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega128a1", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
--  {"atxmega128a1u", AVR_ISA_XMEGA, bfd_mach_avrxmega7},
-+  {"atxmega128a1u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
-+  {"atxmega128a4u", AVR_ISA_XMEGAU, bfd_mach_avrxmega7},
-   {"attiny4",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-   {"attiny5",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
-   {"attiny9",      AVR_ISA_AVRTINY, bfd_mach_avrtiny},
---- gas/doc/c-avr.texi	2012-09-05 15:59:12.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-09-05 20:03:45.000000000 +0530
-@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
- attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
- attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
- attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
--at86rf401, ata6289).
-+attiny828, at86rf401, ata6289, ata5272).
- 
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
-@@ -55,59 +55,68 @@ Instruction set avr31 is for the classic
- memory space (MCU types: atmega103, at43usb320).
- 
- Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
--instructions (MCU types: attiny167, at90usb82, at90usb162, atmega8u2,
--atmega16u2, atmega32u2).
-+instructions (MCU types: attiny167, attiny1634, at90usb82, at90usb162,
-+atmega8u2, atmega16u2, atmega32u2, ata5505).
- 
- Instruction set avr4 is for the enhanced AVR core with up to 8K program
--memory space (MCU types: atmega48, atmega48a, atmega48p, atmega8, atmega88,
--atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, atmega8hva, at90pwm1,
--at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81).
-+memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8, 
-+atmega8a, atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, 
-+atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, 
-+ata6285, ata6286).
- 
- Instruction set avr5 is for the enhanced AVR core with up to 128K program
--memory space (MCU types: atmega16, atmega16a, atmega161, atmega162, atmega163,
--atmega164a, atmega164p, atmega165, atmega165a, atmega165p, atmega168,
--atmega168a, atmega168p, atmega169, atmega169a, atmega169p, atmega169pa,
--atmega32, atmega323, atmega324a, atmega324p, atmega325, atmega325a, atmega325p,
--atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328,
--atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290,
--atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega640,
--atmega644, atmega644a, atmega644p, atmega644pa, atmega645, atmega645a,
--atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649, atmega649a,
--atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, atmega16hva2,
--atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve,
--at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1,
--atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4,
--atmega32u6, at90usb646, at90usb647, at94k, at90scr100).
-+memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
-+atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, 
-+atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, 
-+atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega323, atmega324a,
-+atmega324p, atmega324pa, atmega325, atmega325a, atmega32, atmega32a, atmega323,
-+atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
-+atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, 
-+atmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, 
-+atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, 
-+atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645, 
-+atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649, 
-+atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, 
-+atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, 
-+atmega64hve, at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, 
-+atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, 
-+atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100,
-+ata5790, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
--memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
--atmega128rfa1, at90can128, at90usb1286, at90usb1287, m3000).
-+memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
-+atmega1284, atmega1284p, atmega128rfa1, at90can128, at90usb1286, at90usb1287,
-+m3000).
- 
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
- atmega2560, atmega2561).
- 
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
--memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16d4,
--atxmega16x1, atxmega32a4, atxmega32d4, atxmega32x1).
-+memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
-+atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
-+atxmega32d4, atxmega32x1).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
- 
- Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
--memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64d3).
-+memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u, 
-+atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3).
- 
- Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K program 
- memory space and greater than 64K data space (MCU types: atxmega64a1,
- atxmega64a1u).
- 
--Instruction set avrxmega6 is for the XMEGA AVR core with up to 256K program
--memory space and less than 64K data space (MCU types: atxmega128a3,
--atxmega128d3, atxmega192a3, atxmega128b1, atxmega192d3, atxmega256a3, 
--atxmega256a3b, atxmega256a3bu, atxmega192d3).
-+Instruction set avrxmega6 is for the XMEGA AVR core with larger than 64K program
-+memory space and less than 64K data space (MCU types: atxmega128a3, 
-+atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, 
-+atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192c3, atxmega192d3, 
-+atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, 
-+atxmega256d3, atxmega384c3, atxmega256d3).
- 
--Instruction set avrxmega7 is for the XMEGA AVR core with up to 256K program
-+Instruction set avrxmega7 is for the XMEGA AVR core with larger than 64K program
- memory space and greater than 64K data space (MCU types: atxmega128a1,
--atxmega128a1u).
-+atxmega128a1u, atxmega128a4u).
- 
- @cindex @code{-mall-opcodes} command line option, AVR
- @item -mall-opcodes
diff --git a/005-additional-part-supports.patch b/005-additional-part-supports.patch
deleted file mode 100644
index e2c9d8a..0000000
--- a/005-additional-part-supports.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2013-02-06 16:41:25.000000000 +0530
-+++ gas/config/tc-avr.c	2013-02-06 16:38:01.000000000 +0530
-@@ -216,6 +216,8 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega3290p",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega3290pa",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"atmega406",  AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega64rfr2", AVR_ISA_AVR5,  bfd_mach_avr5},
-+  {"atmega644rfr2",AVR_ISA_AVR5,  bfd_mach_avr5},
-   {"atmega64",   AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega64a",  AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega640",  AVR_ISA_AVR5,    bfd_mach_avr5},
-@@ -267,11 +269,15 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega1284", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega1284p",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega128rfa1",AVR_ISA_AVR51, bfd_mach_avr51},
-+  {"atmega128rfr2",AVR_ISA_AVR51, bfd_mach_avr51},
-+  {"atmega1284rfr2",AVR_ISA_AVR51, bfd_mach_avr51},
-   {"at90can128", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"at90usb1286",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"at90usb1287",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega2560", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-+  {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-+  {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atxmega16a4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega16c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-@@ -281,6 +287,9 @@ static struct mcu_type_s mcu_types[] =
-   {"atxmega32a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega32c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega32d4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atxmega32e5", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atxmega16e5", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atxmega8e5",  AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega32x1", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega64a3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-   {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-@@ -289,6 +298,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atxmega64b3", AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-   {"atxmega64c3", AVR_ISA_XMEGAU,  bfd_mach_avrxmega4},
-   {"atxmega64d3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-+  {"atxmega64d4", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-   {"atxmega64a1", AVR_ISA_XMEGA,  bfd_mach_avrxmega5},
-   {"atxmega64a1u",AVR_ISA_XMEGAU,  bfd_mach_avrxmega5},
-   {"atxmega128a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2013-02-06 16:41:25.000000000 +0530
-+++ gas/doc/c-avr.texi	2013-02-06 16:40:55.000000000 +0530
-@@ -67,41 +67,41 @@ ata6285, ata6286).
- Instruction set avr5 is for the enhanced AVR core with up to 128K program
- memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
- atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, 
--atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, 
-+atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa,
- atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega323, atmega324a,
- atmega324p, atmega324pa, atmega325, atmega325a, atmega32, atmega32a, atmega323,
- atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
- atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, 
- atmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, 
- atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, 
--atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645, 
--atmega645a, atmega645p, atmega6450, atmega6450a, atmega6450p, atmega649, 
--atmega649a, atmega649p, atmega6490, atmega6490a, atmega6490p, atmega16hva, 
--atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, 
--atmega64hve, at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, 
--atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, 
--atmega32u4, atmega32u6, at90usb646, at90usb647, at94k, at90scr100,
--ata5790, ata5795).
-+atmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a, atmega644p,
-+atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
-+atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
-+atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
-+atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161,
-+at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
-+atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
-+at90scr100, ata5790, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
--atmega1284, atmega1284p, atmega128rfa1, at90can128, at90usb1286, at90usb1287,
--m3000).
-+atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2,
-+at90can128, at90usb1286, at90usb1287, m3000).
- 
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
--atmega2560, atmega2561).
-+atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
- 
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
--atxmega32d4, atxmega32x1).
-+atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
- 
- Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K program
- memory space and less than 64K data space (MCU types: atxmega64a3, atxmega64a3u, 
--atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3).
-+atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4).
- 
- Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K program 
- memory space and greater than 64K data space (MCU types: atxmega64a1,
diff --git a/006-xmega-showuage-typo.patch b/006-xmega-showuage-typo.patch
deleted file mode 100644
index 508428c..0000000
--- a/006-xmega-showuage-typo.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 19:31:00.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 19:34:49.000000000 +0530
-@@ -505,6 +505,7 @@ md_show_usage (FILE *stream)
- 	"                   avr5  - enhanced AVR core with up to 64K program memory\n"
- 	"                   avr51 - enhanced AVR core with up to 128K program memory\n"
- 	"                   avr6  - enhanced AVR core with up to 256K program memory\n"
-+	"                   avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM\n"
- 	"                   avrxmega3 - XMEGA, > 8K, <= 64K FLASH, > 64K RAM\n"
- 	"                   avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM\n"
- 	"                   avrxmega5 - XMEGA, > 64K, <= 128K FLASH, > 64K RAM\n"
diff --git a/007-ata6289-architecture-correction.patch b/007-ata6289-architecture-correction.patch
deleted file mode 100644
index c300fbf..0000000
--- a/007-ata6289-architecture-correction.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-21 12:07:55.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-21 12:06:22.000000000 +0530
-@@ -134,7 +134,6 @@ static struct mcu_type_s mcu_types[] =
-   {"attiny88",   AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny828",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"at86rf401",  AVR_ISA_RF401,   bfd_mach_avr25},
--  {"ata6289",    AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"at43usb355", AVR_ISA_AVR3,    bfd_mach_avr3},
-   {"at76c711",   AVR_ISA_AVR3,    bfd_mach_avr3},
-   {"atmega103",  AVR_ISA_AVR31,   bfd_mach_avr31},
-@@ -151,6 +150,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega8a",   AVR_ISA_M8,      bfd_mach_avr4},
-   {"ata6285",    AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"ata6286",    AVR_ISA_AVR4,    bfd_mach_avr4},
-+  {"ata6289",    AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48",   AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48a",  AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"atmega48pa", AVR_ISA_AVR4,    bfd_mach_avr4},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-21 12:07:54.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-21 12:07:18.000000000 +0530
-@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
- attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
- attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
- attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
--attiny828, at86rf401, ata6289, ata5272).
-+attiny828, at86rf401, ata5272).
- 
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
-@@ -62,7 +62,7 @@ Instruction set avr4 is for the enhanced
- memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8, 
- atmega8a, atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, 
- atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, 
--ata6285, ata6286).
-+ata6285, ata6286, ata6289).
- 
- Instruction set avr5 is for the enhanced AVR core with up to 128K program
- memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
diff --git a/008-add-usersig-section.patch b/008-add-usersig-section.patch
deleted file mode 100644
index 84c0654..0000000
--- a/008-add-usersig-section.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- ld/scripttempl/avr.sc	2012-12-26 16:10:01.000000000 +0530
-+++ ld/scripttempl/avr.sc	2012-12-26 16:00:54.000000000 +0530
-@@ -10,6 +10,7 @@ MEMORY
-   fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
-   lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
-   signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
-+  user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = 1K
- }
- 
- SECTIONS
-@@ -220,6 +221,11 @@ SECTIONS
-     KEEP(*(.signature*))
-   } ${RELOCATING+ > signature}
- 
-+  .user_signatures ${RELOCATING-0}:
-+  {
-+    KEEP(*(.user_signatures*))
-+  } ${RELOCATING+ > user_signatures}
-+
-   /* Stabs debugging sections.  */
-   .stab 0 : { *(.stab) }
-   .stabstr 0 : { *(.stabstr) }
diff --git a/009-dwarf-relax-fix.patch b/009-dwarf-relax-fix.patch
deleted file mode 100644
index d678829..0000000
--- a/009-dwarf-relax-fix.patch
+++ /dev/null
@@ -1,484 +0,0 @@
-diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
---- bfd/elf32-avr.c	2013-01-02 16:27:32.000000000 +0530
-+++ bfd/elf32-avr.c	2013-01-02 16:28:50.000000000 +0530
-@@ -34,6 +34,15 @@ static bfd_boolean debug_relax = FALSE;
- /* Enable debugging printout at stdout with this variable.  */
- static bfd_boolean debug_stubs = FALSE;
- 
-+static bfd_reloc_status_type
-+bfd_elf_avr_diff_reloc (bfd *abfd,
-+              arelent *reloc_entry,
-+              asymbol *symbol,
-+              void *data,
-+              asection *input_section,
-+              bfd *output_bfd,
-+              char **error_message);
-+
- /* Hash table initialization and handling.  Code is taken from the hppa port
-    and adapted to the needs of AVR.  */
- 
-@@ -573,6 +582,45 @@ static reloc_howto_type elf_avr_howto_ta
-          0xffff,                /* src_mask */
-          0xffff,                /* dst_mask */
-          FALSE),                /* pcrel_offset */
-+  HOWTO (R_AVR_DIFF8,      /* type */
-+     0,             /* rightshift */
-+     0, 			/* size (0 = byte, 1 = short, 2 = long) */
-+     8, 			/* bitsize */
-+     FALSE,         /* pc_relative */
-+     0,             /* bitpos */
-+     complain_overflow_bitfield, /* complain_on_overflow */
-+     bfd_elf_avr_diff_reloc, /* special_function */
-+     "R_AVR_DIFF8",     /* name */ 
-+     FALSE,         /* partial_inplace */ 
-+     0,             /* src_mask */ 
-+     0xff,          /* dst_mask */
-+     FALSE),        /* pcrel_offset */
-+  HOWTO (R_AVR_DIFF16,     /* type */
-+     0,             /* rightshift */
-+     1,			/* size (0 = byte, 1 = short, 2 = long) */
-+     16,			/* bitsize */
-+     FALSE,         /* pc_relative */
-+     0,             /* bitpos */
-+     complain_overflow_bitfield, /* complain_on_overflow */
-+     bfd_elf_avr_diff_reloc, /* special_function */
-+     "R_AVR_DIFF16",     /* name */ 
-+     FALSE,         /* partial_inplace */ 
-+     0,             /* src_mask */ 
-+     0xffff,        /* dst_mask */
-+     FALSE),        /* pcrel_offset */
-+  HOWTO (R_AVR_DIFF32,    /* type */
-+     0,             /* rightshift */
-+     2,         /* size (0 = byte, 1 = short, 2 = long) */
-+     32,        /* bitsize */
-+     FALSE,         /* pc_relative */
-+     0,             /* bitpos */
-+     complain_overflow_bitfield, /* complain_on_overflow */
-+     bfd_elf_avr_diff_reloc, /* special_function */
-+     "R_AVR_DIFF32",     /* name */ 
-+     FALSE,         /* partial_inplace */ 
-+     0,             /* src_mask */ 
-+     0xffffffff,    /* dst_mask */ 
-+     FALSE)         /* pcrel_offset */
- };
- 
- /* Map BFD reloc types to AVR ELF reloc types.  */
-@@ -615,7 +663,10 @@ static const struct avr_reloc_map avr_re
-   { BFD_RELOC_AVR_8_LO,             R_AVR_8_LO8 },
-   { BFD_RELOC_AVR_8_HI,             R_AVR_8_HI8 },
-   { BFD_RELOC_AVR_8_HLO,            R_AVR_8_HLO8 },
--  { BFD_RELOC_AVR_7_LDS16,          R_AVR_7_LDS16 }
-+  { BFD_RELOC_AVR_7_LDS16,          R_AVR_7_LDS16 },
-+  { BFD_RELOC_AVR_DIFF8,            R_AVR_DIFF8 },
-+  { BFD_RELOC_AVR_DIFF16,           R_AVR_DIFF16 },
-+  { BFD_RELOC_AVR_DIFF32,           R_AVR_DIFF32 }
- };
- 
- /* Meant to be filled one day with the wrap around address for the
-@@ -823,6 +874,22 @@ avr_get_stub_addr (bfd_vma srel,
-   return 0x020000;
- }
- 
-+/* Perform a diff relocation. Nothing to do, as the difference value is already
-+   written into the section's contents. */
-+
-+static bfd_reloc_status_type
-+bfd_elf_avr_diff_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-+		      arelent *reloc_entry ATTRIBUTE_UNUSED,
-+              asymbol *symbol ATTRIBUTE_UNUSED,
-+              void *data ATTRIBUTE_UNUSED,
-+              asection *input_section ATTRIBUTE_UNUSED,
-+              bfd *output_bfd ATTRIBUTE_UNUSED,
-+              char **error_message ATTRIBUTE_UNUSED)
-+{
-+  return bfd_reloc_ok;
-+}
-+
-+
- /* Perform a single relocation.  By default we use the standard BFD
-    routines, but a few relocs, we have to do them ourselves.  */
- 
-@@ -1186,6 +1253,13 @@ avr_final_link_relocate (reloc_howto_typ
-       bfd_put_16 (input_bfd, (bfd_vma) srel &0x00ffff, contents);
-       break;
- 
-+    case R_AVR_DIFF8:
-+    case R_AVR_DIFF16:
-+    case R_AVR_DIFF32:
-+      /* Nothing to do here, as contents already contains the diff value. */
-+      r = bfd_reloc_ok;
-+      break;
-+
-     default:
-       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
- 				    contents, rel->r_offset,
-@@ -1502,6 +1576,99 @@ elf32_avr_object_p (bfd *abfd)
- 				    e_set);
- }
- 
-+/* Returns whether the relocation type passed is a diff reloc. */
-+
-+static bfd_boolean
-+elf32_avr_is_diff_reloc (Elf_Internal_Rela *irel)
-+{
-+  return (ELF32_R_TYPE (irel->r_info) == R_AVR_DIFF8
-+          ||ELF32_R_TYPE (irel->r_info) == R_AVR_DIFF16
-+          || ELF32_R_TYPE (irel->r_info) == R_AVR_DIFF32);
-+}
-+
-+/* Reduce the value written in the section by count if the shrinked insn address
-+   happens to fall between the two symbols for which this diff reloc was 
-+   emitted. */
-+
-+static void
-+elf32_avr_adjust_diff_reloc_value (bfd *abfd,
-+                                   struct bfd_section *isec,
-+                                   Elf_Internal_Rela *irel,
-+                                   bfd_vma symval,
-+                                   bfd_vma shrinked_insn_address,
-+                                   int count)
-+{
-+  unsigned char *isec_contents = elf_section_data (isec)->this_hdr.contents;
-+  if (isec_contents == NULL)
-+  {
-+    if (! bfd_malloc_and_get_section (abfd, isec, &isec_contents))
-+      return;
-+  }
-+
-+  isec_contents += irel->r_offset;
-+
-+  /* Read value written in object file. */
-+ bfd_vma x = 0;
-+  switch (ELF32_R_TYPE (irel->r_info))
-+  {
-+  case R_AVR_DIFF8:
-+    {
-+      x = *isec_contents;
-+      break;
-+    }
-+  case R_AVR_DIFF16:
-+    {
-+      x = bfd_get_16 (abfd, isec_contents);
-+      break;
-+    }
-+  case R_AVR_DIFF32:
-+    {
-+      x = bfd_get_32 (abfd, isec_contents);
-+      break;
-+    }
-+  default:
-+    {
-+      BFD_FAIL();
-+    }
-+  }
-+
-+  /* For a diff reloc sym1 - sym2 the diff at assembly time (x) is written
-+     into the object file. sym2's value is represented as 
-+     <start_of_section> + addend. Check if the shrinked insn falls between 
-+     sym1 and sym2. */
-+
-+  bfd_vma end_address = symval + irel->r_addend;
-+  bfd_vma start_address = end_address - x;
-+
-+  if (shrinked_insn_address >= start_address && 
-+      shrinked_insn_address <= end_address)
-+  {
-+    switch (ELF32_R_TYPE (irel->r_info))
-+    {
-+    case R_AVR_DIFF8:
-+      {
-+        *isec_contents = (x - count);
-+        break;
-+      }
-+    case R_AVR_DIFF16:
-+      {
-+        bfd_put_16 (abfd, (x - count) & 0xFFFF, isec_contents);
-+        break;
-+      }
-+    case R_AVR_DIFF32:
-+      {
-+        bfd_put_32 (abfd, (x - count) & 0xFFFFFFFF, isec_contents);
-+        break;
-+      }
-+    default:
-+      {
-+        BFD_FAIL();
-+      }
-+    }
-+
-+    elf_section_data (isec)->this_hdr.contents = isec_contents - irel->r_offset;
-+  }
-+}
- 
- /* Delete some bytes from a section while changing the size of an instruction.
-    The parameter "addr" denotes the section-relative offset pointing just
-@@ -1640,6 +1807,14 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
-                    if (symval <= shrinked_insn_address
-                        && (symval + irel->r_addend) > shrinked_insn_address)
-                      {
-+                       if (elf32_avr_is_diff_reloc (irel))
-+                         {
-+                           elf32_avr_adjust_diff_reloc_value (abfd, isec, irel,
-+                                                         symval, 
-+                                                         shrinked_insn_address,
-+                                                        count);
-+                         }
-+
-                        irel->r_addend -= count;
- 
-                        if (debug_relax)
-diff -Naurp bfd/reloc.c bfd/reloc.c
---- bfd/reloc.c	2013-01-02 16:27:32.000000000 +0530
-+++ bfd/reloc.c	2013-01-02 16:28:50.000000000 +0530
-@@ -4414,6 +4414,19 @@ ENUM
- ENUMDOC
-   This is a 7 bit reloc for the AVR that stores offset for 16bit sts/lds
-   instructions supported only by Tiny core
-+ENUM
-+  BFD_RELOC_AVR_DIFF8
-+ENUMX
-+  BFD_RELOC_AVR_DIFF16
-+ENUMX
-+  BFD_RELOC_AVR_DIFF32
-+ENUMDOC
-+  AVR relocations to mark the difference of two local symbols.
-+  These are only needed to support linker relaxation and can be ignored
-+  when not relaxing.  The field is set to the value of the difference
-+  assuming no relaxation.  The relocation encodes the position of the
-+  second symbol so the linker can determine whether to adjust the field
-+  value.
- 
- ENUM
-   BFD_RELOC_RL78_NEG8
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2013-01-02 16:28:02.000000000 +0530
-+++ gas/config/tc-avr.c	2013-01-02 16:28:50.000000000 +0530
-@@ -342,9 +342,11 @@ struct avr_opt_s
-   int all_opcodes;  /* -mall-opcodes: accept all known AVR opcodes.  */
-   int no_skip_bug;  /* -mno-skip-bug: no warnings for skipping 2-word insns.  */
-   int no_wrap;      /* -mno-wrap: reject rjmp/rcall with 8K wrap-around.  */
-+  int link_relax;   /* -mlink-relax: generate relocations for linker 
-+                       relaxation. */
- };
- 
--static struct avr_opt_s avr_opt = { 0, 0, 0 };
-+static struct avr_opt_s avr_opt = { 0, 0, 0, 0 };
- 
- const char EXP_CHARS[] = "eE";
- const char FLT_CHARS[] = "dD";
-@@ -404,7 +406,8 @@ enum options
- {
-   OPTION_ALL_OPCODES = OPTION_MD_BASE + 1,
-   OPTION_NO_SKIP_BUG,
--  OPTION_NO_WRAP
-+  OPTION_NO_WRAP,
-+  OPTION_LINK_RELAX
- };
- 
- struct option md_longopts[] =
-@@ -413,6 +416,7 @@ struct option md_longopts[] =
-   { "mall-opcodes", no_argument, NULL, OPTION_ALL_OPCODES },
-   { "mno-skip-bug", no_argument, NULL, OPTION_NO_SKIP_BUG },
-   { "mno-wrap",     no_argument, NULL, OPTION_NO_WRAP     },
-+  { "mlink-relax",  no_argument, NULL, OPTION_LINK_RELAX  },
-   { NULL, no_argument, NULL, 0 }
- };
- 
-@@ -518,7 +522,9 @@ md_show_usage (FILE *stream)
- 	"  -mno-skip-bug    disable warnings for skipping two-word instructions\n"
- 	"                   (default for avr4, avr5)\n"
- 	"  -mno-wrap        reject rjmp/rcall instructions with 8K wrap-around\n"
--	"                   (default for avr3, avr5)\n"));
-+	"                   (default for avr3, avr5)\n"
-+    "  -mlink-relax     generate relocations for linker relaxation\n"
-+    ));
-   show_mcu_list (stream);
- }
- 
-@@ -580,6 +586,9 @@ md_parse_option (int c, char *arg)
-     case OPTION_NO_WRAP:
-       avr_opt.no_wrap = 1;
-       return 1;
-+    case OPTION_LINK_RELAX:
-+      avr_opt.link_relax = 1;
-+      return 1;
-     }
- 
-   return 0;
-@@ -630,6 +639,7 @@ md_begin (void)
-     }
- 
-   bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach);
-+  linkrelax = avr_opt.link_relax;
- }
- 
- /* Resolve STR as a constant expression and return the result.
-@@ -1205,6 +1215,53 @@ md_pcrel_from_section (fixS *fixp, segT 
-   return fixp->fx_frag->fr_address + fixp->fx_where;
- }
- 
-+static bfd_boolean
-+relaxable_section (asection *sec)
-+{
-+  return (sec->flags & SEC_DEBUGGING) == 0;
-+}
-+
-+/* Does whatever the xtensa port does. */
-+int
-+avr_validate_fix_sub (fixS *fix)
-+{
-+  segT add_symbol_segment, sub_symbol_segment;
-+
-+  /* The difference of two symbols should be resolved by the assembler when
-+     linkrelax is not set.  If the linker may relax the section containing
-+     the symbols, then an Xtensa DIFF relocation must be generated so that
-+     the linker knows to adjust the difference value.  */
-+  if (!linkrelax || fix->fx_addsy == NULL)
-+    return 0;
-+
-+  /* Make sure both symbols are in the same segment, and that segment is
-+     "normal" and relaxable.  If the segment is not "normal", then the
-+     fix is not valid.  If the segment is not "relaxable", then the fix
-+     should have been handled earlier.  */
-+  add_symbol_segment = S_GET_SEGMENT (fix->fx_addsy);
-+  if (! SEG_NORMAL (add_symbol_segment) ||
-+      ! relaxable_section (add_symbol_segment))
-+    return 0;
-+
-+  sub_symbol_segment = S_GET_SEGMENT (fix->fx_subsy);
-+  return (sub_symbol_segment == add_symbol_segment);
-+}
-+
-+/* TC_FORCE_RELOCATION hook */
-+
-+/* If linkrelax is turned on, and the symbol to relocate
-+   against is in a relaxable segment, don't compute the value -
-+   generate a relocation instead. */
-+int
-+avr_force_relocation (fixS *fix)
-+{
-+  if (linkrelax && fix->fx_addsy
-+      && relaxable_section (S_GET_SEGMENT (fix->fx_addsy)))
-+    return 1;
-+
-+  return generic_force_reloc (fix);
-+}
-+
- /* GAS will call this for each fixup.  It should store the correct
-    value in the object file.  */
- 
-@@ -1228,11 +1285,46 @@ md_apply_fix (fixS *fixP, valueT * valP,
- 	  fixP->fx_done = 1;
- 	}
-     }
-+  else if (linkrelax && fixP->fx_subsy)
-+    {
-+      /* For a subtraction relocation expression, generate one
-+         of the DIFF relocs, with the value being the difference.
-+         Note that a sym1 - sym2 expression is adjusted into a 
-+         section_start_sym + sym2_offset_from_section_start - sym1
-+         expression. fixP->fx_addsy holds the section start symbol,
-+         fixP->fx_offset holds sym2's offset, and fixP->fx_subsy
-+         holds sym1. Calculate and write value, but leave fx_offset
-+         as is - during relaxation, fx_offset - value gives sym1's value */
-+
-+       switch (fixP->fx_r_type)
-+         {
-+           case BFD_RELOC_8:
-+             fixP->fx_r_type = BFD_RELOC_AVR_DIFF8;
-+             break;
-+           case BFD_RELOC_16:
-+             fixP->fx_r_type = BFD_RELOC_AVR_DIFF16;
-+             break;
-+           case BFD_RELOC_32:
-+             fixP->fx_r_type = BFD_RELOC_AVR_DIFF32;
-+             break;
-+           default:
-+             as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
-+             break;
-+         }
-+
-+      value = S_GET_VALUE (fixP->fx_addsy) + 
-+          fixP->fx_offset - S_GET_VALUE (fixP->fx_subsy);
- 
-+      fixP->fx_subsy = NULL;
-+  }
-   /* We don't actually support subtracting a symbol.  */
-   if (fixP->fx_subsy != (symbolS *) NULL)
-     as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
- 
-+  /* For the DIFF relocs, write the value into the object file while still
-+     keeping fx_done FALSE, as both the difference (recorded in the object file)
-+     and the sym offset (part of fixP) are needed at link relax time */
-+  where = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where;
-   switch (fixP->fx_r_type)
-     {
-     default:
-@@ -1242,6 +1334,19 @@ md_apply_fix (fixS *fixP, valueT * valP,
-     case BFD_RELOC_AVR_13_PCREL:
-     case BFD_RELOC_32:
-     case BFD_RELOC_16:
-+      break;
-+    case BFD_RELOC_AVR_DIFF8:
-+      if (value > 255 || value < -128)
-+        as_warn_where (fixP->fx_file, fixP->fx_line,
-+                           _("operand out of range: %ld"), value);
-+      *where = value;
-+	  break;
-+    case BFD_RELOC_AVR_DIFF16:
-+      bfd_putl16 ((bfd_vma) value, where);
-+      break;
-+    case BFD_RELOC_AVR_DIFF32:
-+      bfd_putl16 ((bfd_vma) value, where);
-+      break;
-     case BFD_RELOC_AVR_CALL:
-       break;
-     }
-diff -Naurp gas/config/tc-avr.h gas/config/tc-avr.h
---- gas/config/tc-avr.h	2011-03-29 23:46:15.000000000 +0530
-+++ gas/config/tc-avr.h	2013-01-02 16:28:50.000000000 +0530
-@@ -93,6 +93,18 @@ extern void avr_cons_fix_new (fragS *,in
-    visible symbols can be overridden.  */
- #define EXTERN_FORCE_RELOC 0
- 
-+/* If defined, this macro allows control over whether fixups for a
-+   given section will be processed when the linkrelax variable is
-+   set. Define it to zero and handle things in md_apply_fix instead.*/
-+#define TC_LINKRELAX_FIXUP(SEG) 0
-+
-+/* If this macro returns non-zero, it guarantees that a relocation will be emitted
-+   even when the value can be resolved locally. Do that if linkrelax is turned on */
-+#define TC_FORCE_RELOCATION(fix)	avr_force_relocation (fix)
-+#define TC_FORCE_RELOCATION_SUB_SAME(fix, seg) \
-+  (! SEG_NORMAL (seg) || avr_force_relocation (fix))
-+extern int avr_force_relocation (struct fix *);
-+
- /* Values passed to md_apply_fix don't include the symbol value.  */
- #define MD_APPLY_SYM_VALUE(FIX) 0
- 
-@@ -144,6 +156,12 @@ extern long md_pcrel_from_section (struc
-     {                                                        \
-       goto SKIP;                                             \
-    }
-+  
-+/* This macro is evaluated for any fixup with a fx_subsy that
-+   fixup_segment cannot reduce to a number.  If the macro returns
-+   false an error will be reported. */
-+#define TC_VALIDATE_FIX_SUB(fix, seg)   avr_validate_fix_sub (fix)                                                                    
-+extern int avr_validate_fix_sub (struct fix *);
- 
- /* This target is buggy, and sets fix size too large.  */
- #define TC_FX_SIZE_SLACK(FIX) 2
-diff -Naurp include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h	2013-01-02 16:27:32.000000000 +0530
-+++ include/elf/avr.h	2013-01-02 16:28:50.000000000 +0530
-@@ -83,6 +83,9 @@ START_RELOC_NUMBERS (elf_avr_reloc_type)
-      RELOC_NUMBER (R_AVR_8_HI8,                28)
-      RELOC_NUMBER (R_AVR_8_HLO8,               29)
-      RELOC_NUMBER (R_AVR_7_LDS16,              30)
-+     RELOC_NUMBER (R_AVR_DIFF8,                31)
-+     RELOC_NUMBER (R_AVR_DIFF16,               32)
-+     RELOC_NUMBER (R_AVR_DIFF32,               33)
- END_RELOC_NUMBERS (R_AVR_max)
- 
- #endif /* _ELF_AVR_H */
diff --git a/010-disable-demand-paging.patch b/010-disable-demand-paging.patch
deleted file mode 100644
index 5315553..0000000
--- a/010-disable-demand-paging.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git ld/emultempl/avrelf.em ld/emultempl/avrelf.em
-index e0d6357..7f7dcf0 100644
---- ld/emultempl/avrelf.em
-+++ ld/emultempl/avrelf.em
-@@ -166,6 +166,15 @@ avr_elf_after_allocation (void)
-     }
- }
- 
-+static void
-+avr_elf_before_parse (void)
-+{
-+  /* Don't create a demand-paged executable, since this feature isn't
-+     meaninful in AVR. */
-+  config.magic_demand_paged = FALSE;
-+
-+  gld${EMULATION_NAME}_before_parse ();
-+}
- 
- EOF
- 
-@@ -262,6 +271,7 @@ PARSE_AND_LIST_ARGS_CASES='
- #
- # Put these extra avr-elf routines in ld_${EMULATION_NAME}_emulation
- #
-+LDEMUL_BEFORE_PARSE=avr_elf_before_parse
- LDEMUL_BEFORE_ALLOCATION=avr_elf_${EMULATION_NAME}_before_allocation
- LDEMUL_AFTER_ALLOCATION=avr_elf_after_allocation
- LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=avr_elf_create_output_section_statements
diff --git a/200-binutils-avr-size.patch b/200-binutils-avr-size.patch
deleted file mode 100644
index 71176e6..0000000
--- a/200-binutils-avr-size.patch
+++ /dev/null
@@ -1,619 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2013-02-06 16:32:42.000000000 +0530
-+++ binutils/size.c	2013-02-06 16:53:39.000000000 +0530
-@@ -36,10 +36,31 @@
- #include "getopt.h"
- #include "bucomm.h"
- 
--#ifndef BSD_DEFAULT
--#define BSD_DEFAULT 1
-+typedef enum
-+{
-+    format_sysv = 0,
-+    format_bsd = 1,
-+    format_avr = 2,
-+} format_type_t;
-+
-+
-+/* Set the default format. */
-+#define FORMAT_DEFAULT_SYSV 0
-+#define FORMAT_DEFAULT_BSD 1
-+#define FORMAT_DEFAULT_AVR 0
-+
-+#if FORMAT_DEFAULT_SYSV
-+    #define FORMAT_DEFAULT format_sysv
-+    #define FORMAT_NAME "sysv"
-+#elif FORMAT_DEFAULT_BSD
-+    #define FORMAT_DEFAULT format_bsd
-+    #define FORMAT_NAME "berkeley"
-+#elif FORMAT_DEFAULT_AVR
-+    #define FORMAT_DEFAULT format_avr
-+    #define FORMAT_NAME "avr"
- #endif
- 
-+
- /* Program options.  */
- 
- static enum
-@@ -48,9 +69,8 @@ static enum
-   }
- radix = decimal;
- 
--/* 0 means use AT&T-style output.  */
--static int berkeley_format = BSD_DEFAULT;
- 
-+format_type_t format = FORMAT_DEFAULT;
- static int show_version = 0;
- static int show_help = 0;
- static int show_totals = 0;
-@@ -64,6 +84,308 @@ static bfd_size_type total_textsize;
- /* Program exit status.  */
- static int return_code = 0;
- 
-+
-+/* AVR Size specific stuff */
-+
-+#define AVR64 64UL
-+#define AVR128 128UL
-+#define AVR256 256UL
-+#define AVR512 512UL
-+#define AVR2112 2112UL
-+#define AVR1K 1024UL
-+#define AVR2K 2048UL
-+#define AVR4K 4096UL
-+#define AVR8K 8192UL
-+#define AVR16K 16384UL
-+#define AVR20K 20480UL
-+#define AVR24K 24576UL
-+#define AVR32K 32768UL
-+#define AVR36K 36864UL
-+#define AVR40K 40960UL
-+#define AVR64K 65536UL
-+#define AVR68K 69632UL
-+#define AVR128K 131072UL
-+#define AVR136K 139264UL
-+#define AVR200K 204800UL
-+#define AVR256K 262144UL
-+#define AVR264K 270336UL
-+#define AVR384K 393216UL
-+#define AVR392K 401408UL
-+
-+typedef struct
-+{
-+    char *name;
-+	long flash;
-+	long ram;
-+	long eeprom;
-+} avr_device_t;
-+
-+avr_device_t avr[] =
-+{
-+  	{"atxmega384c3",  AVR392K, AVR32K, AVR4K},
-+ 
-+ 	{"atxmega384d3",  AVR384K, AVR16K, AVR4K},
-+  
-+ 	{"atmega256rfr2", AVR256K, AVR32K, AVR8K},
-+ 	{"atmega2564rfr2",AVR256K, AVR32K, AVR8K},
-+ 
-+  	{"atxmega256a3",  AVR264K, AVR16K, AVR4K},
-+ 	{"atxmega256a3u", AVR264K, AVR16K, AVR4K},
-+  	{"atxmega256a3b", AVR264K, AVR16K, AVR4K},
-+ 	{"atxmega256a3bu",AVR264K, AVR16K, AVR4K},
-+ 	{"atxmega256c3",  AVR264K, AVR16K, AVR4K},
-+  	{"atxmega256d3",  AVR264K, AVR16K, AVR4K},
-+  
-+  	{"atmega2560",    AVR256K, AVR8K,  AVR4K},
-+  	{"atmega2561",    AVR256K, AVR8K,  AVR4K},
-+  
-+  	{"atxmega192a3",  AVR200K, AVR16K, AVR2K},
-+ 	{"atxmega192a3u", AVR200K, AVR16K, AVR2K},
-+ 	{"atxmega192c3",  AVR200K, AVR16K, AVR2K},
-+  	{"atxmega192d3",  AVR200K, AVR16K, AVR2K},
-+  
-+ 	{"atmega128rfr2", AVR128K, AVR16K, AVR4K},
-+ 	{"atmega1284rfr2",AVR128K, AVR16K, AVR4K},
-+ 
-+  	{"atxmega128a1",  AVR136K, AVR8K,  AVR2K},
-+  	{"atxmega128a1u", AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128a4u", AVR136K, AVR8K,  AVR2K},
-+  	{"atxmega128a3",  AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128a3u", AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128b1",  AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128b3",  AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128c3",  AVR136K, AVR8K,  AVR2K},
-+  	{"atxmega128d3",  AVR136K, AVR8K,  AVR2K},
-+ 	{"atxmega128d4",  AVR136K, AVR8K,  AVR2K},
-+  
-+  	{"at43usb320",    AVR128K, 608UL,  0UL},
-+  	{"at90can128",    AVR128K, AVR4K,  AVR4K},
-+  	{"at90usb1286",   AVR128K, AVR8K,  AVR4K},
-+  	{"at90usb1287",   AVR128K, AVR8K,  AVR4K},
-+  	{"atmega128",     AVR128K, AVR4K,  AVR4K},
-+ 	{"atmega128a",    AVR128K, AVR4K,  AVR4K},
-+  	{"atmega1280",    AVR128K, AVR8K,  AVR4K},
-+  	{"atmega1281",    AVR128K, AVR8K,  AVR4K},
-+ 	{"atmega1284",    AVR128K, AVR16K, AVR4K},
-+  	{"atmega1284p",   AVR128K, AVR16K, AVR4K},
-+  	{"atmega128rfa1", AVR128K, AVR16K, AVR4K},
-+  	{"atmega103",     AVR128K, 4000UL, AVR4K},
-+
-+	{"atxmega64a1",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64a1u",  AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64a3",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64a3u",  AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64a4u",  AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64b1",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64b3",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64c3",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64d3",   AVR68K,  AVR4K,  AVR2K},
-+	{"atxmega64d4",   AVR68K,  AVR4K,  AVR2K},
-+
-+	{"atmega64rfr2",  AVR64K,  AVR8K,  AVR2K},
-+	{"atmega644rfr2", AVR64K,  AVR8K,  AVR2K},
-+
-+	{"at90can64",     AVR64K,  AVR4K,  AVR2K},
-+	{"at90scr100",    AVR64K,  AVR4K,  AVR2K},
-+	{"at90usb646",    AVR64K,  AVR4K,  AVR2K},
-+	{"at90usb647",    AVR64K,  AVR4K,  AVR2K},
-+	{"ata5505",       AVR16K,  AVR512, AVR512},
-+	{"ata5790",       AVR16K,  AVR512, AVR2112},
-+	{"ata5795",       AVR8K,   AVR512, AVR2112},
-+	{"ata5272",       AVR8K,   AVR512, AVR512},
-+	{"atmega64",      AVR64K,  AVR4K,  AVR2K},
-+	{"atmega64a",     AVR64K,  AVR4K,  AVR2K},
-+	{"atmega640",     AVR64K,  AVR8K,  AVR4K},
-+	{"atmega644",     AVR64K,  AVR4K,  AVR2K},
-+	{"atmega644a",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega644p",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega644pa",   AVR64K,  AVR4K,  AVR2K},
-+	{"atmega645",     AVR64K,  AVR4K,  AVR2K},
-+	{"atmega645a",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega645p",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6450",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6450a",   AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6450p",   AVR64K,  AVR4K,  AVR2K},
-+	{"atmega649",     AVR64K,  AVR4K,  AVR2K},
-+	{"atmega649a",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega649p",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6490",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6490a",   AVR64K,  AVR4K,  AVR2K},
-+	{"atmega6490p",   AVR64K,  AVR4K,  AVR2K},
-+	{"atmega64c1",    AVR64K,  AVR4K,  AVR2K},
-+	{"atmega64hve",   AVR64K,  AVR4K,  AVR1K},
-+	{"atmega64m1",    AVR64K,  AVR4K,  AVR2K},
-+	{"m3000",         AVR64K,  AVR4K,  0UL},
-+
-+	{"atmega406",     AVR40K,  AVR2K,  AVR512},
-+
-+	{"atxmega32a4",   AVR36K,  AVR4K,  AVR1K},
-+	{"atxmega32a4u",  AVR36K,  AVR4K,  AVR1K},
-+	{"atxmega32c4",   AVR36K,  AVR4K,  AVR1K},
-+	{"atxmega32d4",   AVR36K,  AVR4K,  AVR1K},
-+	{"atxmega32e5",   AVR36K,  AVR4K,  AVR1K},
-+	{"atxmega16e5",   AVR20K,  AVR2K,  AVR512},
-+	{"atxmega8e5",	  AVR10K,  AVR1K,  AVR512},
-+
-+	{"at90can32",     AVR32K,  AVR2K,  AVR1K},
-+	{"at94k",         AVR32K,  AVR4K,  0UL},
-+	{"atmega32",      AVR32K,  AVR2K,  AVR1K},
-+	{"atmega32a",     AVR32K,  AVR2K,  AVR1K},
-+	{"atmega323",     AVR32K,  AVR2K,  AVR1K},
-+	{"atmega324a",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega324p",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega324pa",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega325",     AVR32K,  AVR2K,  AVR1K},
-+	{"atmega325a",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega325p",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega325pa",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3250",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3250a",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3250p",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3250pa",  AVR32K,  AVR2K,  AVR1K},
-+	{"atmega328",     AVR32K,  AVR2K,  AVR1K},
-+	{"atmega328p",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega329",     AVR32K,  AVR2K,  AVR1K},
-+	{"atmega329a",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega329p",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega329pa",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3290",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3290a",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3290p",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega3290pa",  AVR32K,  AVR2K,  AVR1K},
-+	{"atmega32hvb",   AVR32K,  AVR2K,  AVR1K},
-+	{"atmega32hvbrevb",AVR32K, AVR2K,  AVR1K},
-+	{"atmega32c1",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega32m1",    AVR32K,  AVR2K,  AVR1K},
-+	{"atmega32u2",    AVR32K,  AVR1K,  AVR1K},
-+	{"atmega32u4",    AVR32K,  2560UL, AVR1K},
-+	{"atmega32u6",    AVR32K,  2560UL, AVR1K},
-+
-+	{"at43usb355",    AVR24K,  1120UL,   0UL},
-+
-+	{"atxmega16a4",   AVR20K,  AVR2K,  AVR1K},
-+        {"atxmega16a4u",  AVR20K,  AVR2K,  AVR1K},
-+	{"atxmega16c4",   AVR20K,  AVR2K,  AVR1K},
-+	{"atxmega16d4",   AVR20K,  AVR2K,  AVR1K},
-+
-+	{"at76c711",      AVR16K,  AVR2K,  0UL},
-+	{"at90pwm161",    AVR16K,  AVR1K,  AVR512},
-+	{"at90pwm216",    AVR16K,  AVR1K,  AVR512},
-+	{"at90pwm316",    AVR16K,  AVR1K,  AVR512},
-+	{"at90usb162",    AVR16K,  AVR512, AVR512},
-+	{"atmega16",      AVR16K,  AVR1K,  AVR512},
-+	{"atmega16a",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega161",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega162",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega163",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega164",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega164a",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega164p",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega164pa",   AVR16K,  AVR1K,  AVR512},
-+	{"atmega165a",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega165",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega165p",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega165pa",   AVR16K,  AVR1K,  AVR512},
-+	{"atmega168",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega168a",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega168p",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega168pa",   AVR16K,  AVR1K,  AVR512},
-+	{"atmega169",     AVR16K,  AVR1K,  AVR512},
-+	{"atmega169a",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega169p",    AVR16K,  AVR1K,  AVR512},
-+	{"atmega169pa",   AVR16K,  AVR1K,  AVR512},
-+	{"atmega16hva",   AVR16K,  768UL,  AVR256},
-+	{"atmega16hva2",  AVR16K,  AVR1K,  AVR256},
-+        {"atmega16hvb",   AVR16K,  AVR1K,  AVR512},
-+        {"atmega16hvbrevb",AVR16K, AVR1K,  AVR512},
-+	{"atmega16m1",    AVR16K,  AVR1K,  AVR512},
-+	{"attiny1634",    AVR16K,  AVR1K,  AVR256},
-+	{"atmega16u2",    AVR16K,  AVR512, AVR512},
-+	{"atmega16u4",    AVR16K,  1280UL, AVR512},
-+	{"attiny167",     AVR16K,  AVR512, AVR512},
-+
-+	{"at90c8534",     AVR8K,   352UL,  AVR512},
-+	{"at90pwm1",      AVR8K,   AVR512, AVR512},
-+	{"at90pwm2",      AVR8K,   AVR512, AVR512},
-+	{"at90pwm2b",     AVR8K,   AVR512, AVR512},
-+	{"at90pwm3",      AVR8K,   AVR512, AVR512},
-+	{"at90pwm3b",     AVR8K,   AVR512, AVR512},
-+	{"at90pwm81",     AVR8K,   AVR256, AVR512},
-+	{"at90s8515",     AVR8K,   AVR512, AVR512},
-+	{"at90s8535",     AVR8K,   AVR512, AVR512},
-+	{"at90usb82",     AVR8K,   AVR512, AVR512},
-+	{"ata6285",       AVR8K,   AVR512, 320UL},
-+	{"ata6286",       AVR8K,   AVR512, 320UL},
-+	{"ata6289",       AVR8K,   AVR512, 320UL},
-+	{"atmega8",       AVR8K,   AVR1K,  AVR512},
-+	{"atmega8a",      AVR8K,   AVR1K,  AVR512},
-+	{"atmega8515",    AVR8K,   AVR512, AVR512},
-+	{"atmega8535",    AVR8K,   AVR512, AVR512},
-+	{"atmega88",      AVR8K,   AVR1K,  AVR512},
-+	{"atmega88a",     AVR8K,   AVR1K,  AVR512},
-+	{"atmega88p",     AVR8K,   AVR1K,  AVR512},
-+	{"atmega88pa",    AVR8K,   AVR1K,  AVR512},
-+	{"atmega8hva",    AVR8K,   768UL,  AVR256},
-+	{"atmega8u2",     AVR8K,   AVR512, AVR512},
-+	{"attiny84",      AVR8K,   AVR512, AVR512},
-+	{"attiny84a",     AVR8K,   AVR512, AVR512},
-+	{"attiny85",      AVR8K,   AVR512, AVR512},
-+	{"attiny861",     AVR8K,   AVR512, AVR512},
-+	{"attiny861a",    AVR8K,   AVR512, AVR512},
-+	{"attiny87",      AVR8K,   AVR512, AVR512},
-+	{"attiny88",      AVR8K,   AVR512, AVR64},
-+
-+	{"at90s4414",     AVR4K,   352UL,  AVR256},
-+	{"at90s4433",     AVR4K,   AVR128, AVR256},
-+	{"at90s4434",     AVR4K,   352UL,  AVR256},
-+	{"atmega48",      AVR4K,   AVR512, AVR256},
-+	{"atmega48a",     AVR4K,   AVR512, AVR256},
-+	{"atmega48pa",    AVR4K,   AVR512, AVR256},
-+	{"atmega48p",     AVR4K,   AVR512, AVR256},
-+	{"attiny4313",    AVR4K,   AVR256, AVR256},
-+	{"attiny43u",     AVR4K,   AVR256, AVR64},
-+	{"attiny44",      AVR4K,   AVR256, AVR256},
-+	{"attiny44a",     AVR4K,   AVR256, AVR256},
-+	{"attiny45",      AVR4K,   AVR256, AVR256},
-+	{"attiny461",     AVR4K,   AVR256, AVR256},
-+	{"attiny461a",    AVR4K,   AVR256, AVR256},
-+	{"attiny48",      AVR4K,   AVR256, AVR64},
-+	{"attiny828",     AVR8K,   AVR512, AVR256},
-+
-+	{"at86rf401",     AVR2K,   224UL,  AVR128},
-+	{"at90s2313",     AVR2K,   AVR128, AVR128},
-+	{"at90s2323",     AVR2K,   AVR128, AVR128},
-+	{"at90s2333",     AVR2K,   224UL,  AVR128},
-+	{"at90s2343",     AVR2K,   AVR128, AVR128},
-+	{"attiny20",      AVR2K,   AVR128, 0UL},
-+	{"attiny22",      AVR2K,   224UL,  AVR128},
-+	{"attiny2313",    AVR2K,   AVR128, AVR128},
-+	{"attiny2313a",   AVR2K,   AVR128, AVR128},
-+	{"attiny24",      AVR2K,   AVR128, AVR128},
-+	{"attiny24a",     AVR2K,   AVR128, AVR128},
-+	{"attiny25",      AVR2K,   AVR128, AVR128},
-+	{"attiny26",      AVR2K,   AVR128, AVR128},
-+	{"attiny261",     AVR2K,   AVR128, AVR128},
-+	{"attiny261a",    AVR2K,   AVR128, AVR128},
-+	{"attiny28",      AVR2K,   0UL,    0UL},
-+	{"attiny40",      AVR2K,   AVR256, 0UL},
-+
-+	{"at90s1200",     AVR1K,   0UL,    AVR64},
-+	{"attiny9",       AVR1K,   32UL,   0UL},
-+	{"attiny10",      AVR1K,   32UL,   0UL},
-+	{"attiny11",      AVR1K,   0UL,    AVR64},
-+	{"attiny12",      AVR1K,   0UL,    AVR64},
-+	{"attiny13",      AVR1K,   AVR64,  AVR64},
-+	{"attiny13a",     AVR1K,   AVR64,  AVR64},
-+	{"attiny15",      AVR1K,   0UL,    AVR64},
-+
-+	{"attiny4",       AVR512,  32UL,   0UL},
-+	{"attiny5",       AVR512,  32UL,   0UL},
-+};
-+
-+static char *avrmcu = NULL;
-+
-+
- static char *target = NULL;
- 
- /* Forward declarations.  */
-@@ -79,7 +401,9 @@ usage (FILE *stream, int status)
-   fprintf (stream, _(" Displays the sizes of sections inside binary files\n"));
-   fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n"));
-   fprintf (stream, _(" The options are:\n\
--  -A|-B     --format={sysv|berkeley}  Select output style (default is %s)\n\
-+  -A|-B|-C  --format={sysv|berkeley|avr}  Select output style (default is %s)\n\
-+            --mcu=<avrmcu>            MCU name for AVR format only\n\
-+            --mlist-devices           List all supported MCUs\n\
-   -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n\
-   -t        --totals                  Display the total sizes (Berkeley only)\n\
-             --common                  Display total size for *COM* syms\n\
-@@ -88,11 +412,7 @@ usage (FILE *stream, int status)
-   -h        --help                    Display this information\n\
-   -v        --version                 Display the program's version\n\
- \n"),
--#if BSD_DEFAULT
--  "berkeley"
--#else
--  "sysv"
--#endif
-+FORMAT_NAME
- );
-   list_supported_targets (program_name, stream);
-   if (REPORT_BUGS_TO[0] && status == 0)
-@@ -103,6 +423,8 @@ usage (FILE *stream, int status)
- #define OPTION_FORMAT (200)
- #define OPTION_RADIX (OPTION_FORMAT + 1)
- #define OPTION_TARGET (OPTION_RADIX + 1)
-+#define OPTION_MCU (OPTION_TARGET + 1) 
-+#define OPTION_MLIST_DEVICES (OPTION_MCU + 1)
- 
- static struct option long_options[] =
- {
-@@ -110,12 +432,38 @@ static struct option long_options[] =
-   {"format", required_argument, 0, OPTION_FORMAT},
-   {"radix", required_argument, 0, OPTION_RADIX},
-   {"target", required_argument, 0, OPTION_TARGET},
-+  {"mcu", required_argument, 0, 203},
-+  {"mlist-devices", no_argument, 0, OPTION_MLIST_DEVICES},
-   {"totals", no_argument, &show_totals, 1},
-   {"version", no_argument, &show_version, 1},
-   {"help", no_argument, &show_help, 1},
-   {0, no_argument, 0, 0}
- };
- 
-+static void list_supported_devices (FILE *stream, int status)
-+{
-+  unsigned int i ;
-+  int llen = 0;
-+  fprintf (stream, _("List of supported devices:\n"));
-+  for (i = 0; i < sizeof(avr) / sizeof(avr[0]); i++)
-+  {
-+    int slen = strlen(avr[i].name);
-+    llen += slen + 1 ;
-+    if (llen < 75)
-+    {
-+      fprintf (stream, _(" %s"), avr[i].name);
-+    }
-+    else
-+    {
-+      fprintf (stream, _("\n %s"), avr[i].name);
-+      llen = slen + 2 ;
-+    }
-+  }
-+  fprintf (stream, "\n");
-+
-+  exit (status);
-+}
-+
- int main (int, char **);
- 
- int
-@@ -141,7 +489,7 @@ main (int argc, char **argv)
-   bfd_init ();
-   set_default_bfd_target ();
- 
--  while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options,
-+  while ((c = getopt_long (argc, argv, "ABCHhVvdfotx", long_options,
- 			   (int *) 0)) != EOF)
-     switch (c)
-       {
-@@ -150,11 +498,15 @@ main (int argc, char **argv)
- 	  {
- 	  case 'B':
- 	  case 'b':
--	    berkeley_format = 1;
-+	    format = format_bsd;
- 	    break;
- 	  case 'S':
- 	  case 's':
--	    berkeley_format = 0;
-+	    format = format_sysv;
-+	    break;
-+	  case 'A':
-+	  case 'a':
-+	    format = format_avr;
- 	    break;
- 	  default:
- 	    non_fatal (_("invalid argument to --format: %s"), optarg);
-@@ -162,6 +514,14 @@ main (int argc, char **argv)
- 	  }
- 	break;
- 
-+      case OPTION_MCU:
-+	avrmcu = optarg;
-+	break;
-+
-+      case OPTION_MLIST_DEVICES:
-+	list_supported_devices (stdout, 1);
-+	break;
-+
-       case OPTION_TARGET:
- 	target = optarg;
- 	break;
-@@ -190,11 +550,14 @@ main (int argc, char **argv)
- 	break;
- 
-       case 'A':
--	berkeley_format = 0;
-+	format = format_sysv;
- 	break;
-       case 'B':
--	berkeley_format = 1;
-+	format = format_bsd;
- 	break;
-+      case 'C':
-+    format = format_avr;
-+    break;
-       case 'v':
-       case 'V':
- 	show_version = 1;
-@@ -240,7 +603,7 @@ main (int argc, char **argv)
-     for (; optind < argc;)
-       display_file (argv[optind++]);
- 
--  if (show_totals && berkeley_format)
-+  if (show_totals && format == format_bsd)
-     {
-       bfd_size_type total = total_textsize + total_datasize + total_bsssize;
- 
-@@ -599,13 +962,117 @@ print_sysv_format (bfd *file)
-   printf ("\n\n");
- }
- 
-+
-+static avr_device_t *
-+avr_find_device (void)
-+{
-+  unsigned int i;
-+  if (avrmcu != NULL)
-+  {
-+    for (i = 0; i < sizeof(avr) / sizeof(avr[0]); i++)
-+    {
-+      if (strcmp(avr[i].name, avrmcu) == 0)
-+      {
-+        /* Match found */
-+        return (&avr[i]);
-+      }
-+    }
-+  }
-+  return (NULL);
-+}
-+
-+
-+
-+static void
-+print_avr_format (bfd *file)
-+{
-+  char *avr_name = "Unknown";
-+  int flashmax = 0;
-+  int rammax = 0;
-+  int eeprommax = 0;
-+  asection *section; 
-+  bfd_size_type avr_datasize = 0;
-+  bfd_size_type avr_textsize = 0;
-+  bfd_size_type avr_bsssize = 0;
-+  bfd_size_type bootloadersize = 0;
-+  bfd_size_type noinitsize = 0;
-+  bfd_size_type eepromsize = 0;
-+
-+  avr_device_t *avrdevice = avr_find_device();
-+  if (avrdevice != NULL)
-+  {
-+    avr_name = avrdevice->name;
-+    flashmax = avrdevice->flash;
-+    rammax = avrdevice->ram;
-+    eeprommax = avrdevice->eeprom;
-+  }
-+
-+  if ((section = bfd_get_section_by_name (file, ".data")) != NULL)
-+    avr_datasize = bfd_section_size (file, section);
-+  if ((section = bfd_get_section_by_name (file, ".text")) != NULL)
-+    avr_textsize = bfd_section_size (file, section);
-+  if ((section = bfd_get_section_by_name (file, ".bss")) != NULL)
-+    avr_bsssize = bfd_section_size (file, section);
-+  if ((section = bfd_get_section_by_name (file, ".bootloader")) != NULL)
-+    bootloadersize = bfd_section_size (file, section);
-+  if ((section = bfd_get_section_by_name (file, ".noinit")) != NULL)
-+    noinitsize = bfd_section_size (file, section);
-+  if ((section = bfd_get_section_by_name (file, ".eeprom")) != NULL)
-+    eepromsize = bfd_section_size (file, section);
-+  
-+  bfd_size_type text = avr_textsize + avr_datasize + bootloadersize;
-+  bfd_size_type data = avr_datasize + avr_bsssize + noinitsize;
-+  bfd_size_type eeprom = eepromsize;
-+  
-+  printf ("AVR Memory Usage\n"
-+          "----------------\n"
-+          "Device: %s\n\n", avr_name);
-+  
-+  /* Text size */
-+  printf ("Program:%8ld bytes", text);
-+  if (flashmax > 0)
-+  {
-+    printf (" (%2.1f%% Full)", ((float)text / flashmax) * 100);
-+  }
-+  printf ("\n(.text + .data + .bootloader)\n\n");
-+  
-+  /* Data size */
-+  printf ("Data:   %8ld bytes", data);
-+  if (rammax > 0)
-+  {
-+    printf (" (%2.1f%% Full)", ((float)data / rammax) * 100);
-+  }
-+  printf ("\n(.data + .bss + .noinit)\n\n");
-+  
-+  /* EEPROM size */
-+  if (eeprom > 0) 
-+  { 
-+    printf ("EEPROM: %8ld bytes", eeprom);
-+    if (eeprommax > 0)
-+    {
-+      printf (" (%2.1f%% Full)", ((float)eeprom / eeprommax) * 100);
-+    }
-+    printf ("\n(.eeprom)\n\n");
-+  }
-+}
-+
-+
- static void
- print_sizes (bfd *file)
- {
-   if (show_common)
-     calculate_common_size (file);
--  if (berkeley_format)
--    print_berkeley_format (file);
--  else
--    print_sysv_format (file);
-+  switch (format)
-+  {
-+    case format_sysv:
-+      print_sysv_format (file);
-+      break;
-+    case format_bsd:
-+      print_berkeley_format (file);
-+      break;
-+    case format_avr:
-+    default:
-+      print_avr_format (file);
-+      break;
-+  }
- }
diff --git a/201-binutils-dwarf2-AVRStudio-workaround.patch b/201-binutils-dwarf2-AVRStudio-workaround.patch
deleted file mode 100644
index 2d541c0..0000000
--- a/201-binutils-dwarf2-AVRStudio-workaround.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -Naurp gas/dwarf2dbg.c gas/dwarf2dbg.c
---- gas/dwarf2dbg.c	2012-12-06 15:20:06.000000000 +0530
-+++ gas/dwarf2dbg.c	2012-12-06 15:06:44.000000000 +0530
-@@ -126,8 +126,11 @@
-    Note: If you want to change this, you'll have to update the
-    "standard_opcode_lengths" table that is emitted below in
-    out_debug_line().  */
-+#ifndef TC_AVR
- #define DWARF2_LINE_OPCODE_BASE		13
--
-+#else
-+#define DWARF2_LINE_OPCODE_BASE		10
-+#endif
- #ifndef DWARF2_LINE_BASE
-   /* Minimum line offset in a special line info. opcode.  This value
-      was chosen to give a reasonable range of values.  */
-@@ -1520,9 +1523,11 @@ out_debug_line (segT line_seg)
-   out_byte (0);			/* DW_LNS_set_basic_block */
-   out_byte (0);			/* DW_LNS_const_add_pc */
-   out_byte (1);			/* DW_LNS_fixed_advance_pc */
-+#ifndef TC_AVR
-   out_byte (0);			/* DW_LNS_set_prologue_end */
-   out_byte (0);			/* DW_LNS_set_epilogue_begin */
-   out_byte (1);			/* DW_LNS_set_isa */
-+#endif
- 
-   out_file_list ();
- 
diff --git a/202-binutils-bug13113.patch b/202-binutils-bug13113.patch
deleted file mode 100644
index ef59edd..0000000
--- a/202-binutils-bug13113.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2013-01-02 16:33:12.000000000 +0530
-+++ gas/config/tc-avr.c	2013-01-02 16:44:28.000000000 +0530
-@@ -404,7 +404,8 @@ static struct hash_control *avr_mod_hash
- #define OPTION_MMCU 'm'
- enum options
- {
--  OPTION_ALL_OPCODES = OPTION_MD_BASE + 1,
-+  OPTION_MLIST_DEVICES = OPTION_MD_BASE + 1,
-+  OPTION_ALL_OPCODES,
-   OPTION_NO_SKIP_BUG,
-   OPTION_NO_WRAP,
-   OPTION_LINK_RELAX
-@@ -413,6 +414,7 @@ enum options
- struct option md_longopts[] =
- {
-   { "mmcu",   required_argument, NULL, OPTION_MMCU        },
-+  { "mlist-devices", no_argument, NULL, OPTION_MLIST_DEVICES },
-   { "mall-opcodes", no_argument, NULL, OPTION_ALL_OPCODES },
-   { "mno-skip-bug", no_argument, NULL, OPTION_NO_SKIP_BUG },
-   { "mno-wrap",     no_argument, NULL, OPTION_NO_WRAP     },
-@@ -518,14 +520,14 @@ md_show_usage (FILE *stream)
- 	"                   avrtiny   - AVR Tiny core\n"
- 	"                   or immediate microcontroller name.\n"));
-   fprintf (stream,
--      _("  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
-+       _("  -mlist-devices   list all supported devices\n"
-+    "  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
- 	"  -mno-skip-bug    disable warnings for skipping two-word instructions\n"
- 	"                   (default for avr4, avr5)\n"
- 	"  -mno-wrap        reject rjmp/rcall instructions with 8K wrap-around\n"
- 	"                   (default for avr3, avr5)\n"
-     "  -mlink-relax     generate relocations for linker relaxation\n"
-     ));
--  show_mcu_list (stream);
- }
- 
- static void
-@@ -577,6 +579,9 @@ md_parse_option (int c, char *arg)
- 		    avr_mcu->name, mcu_types[i].name);
- 	return 1;
-       }
-+    case OPTION_MLIST_DEVICES:
-+      show_mcu_list(stdout);
-+      exit (EXIT_SUCCESS);
-     case OPTION_ALL_OPCODES:
-       avr_opt.all_opcodes = 1;
-       return 1;
diff --git a/400-binutils-atmxt336s.patch b/400-binutils-atmxt336s.patch
deleted file mode 100644
index 10615a6..0000000
--- a/400-binutils-atmxt336s.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 16:51:45.000000000 +0530
-+++ binutils/size.c	2012-12-17 16:53:47.000000000 +0530
-@@ -96,12 +96,14 @@ static int return_code = 0;
- #define AVR2K 2048UL
- #define AVR4K 4096UL
- #define AVR8K 8192UL
-+#define AVR14K 14336UL
- #define AVR16K 16384UL
- #define AVR20K 20480UL
- #define AVR24K 24576UL
- #define AVR32K 32768UL
- #define AVR36K 36864UL
- #define AVR40K 40960UL
-+#define AVR52K 53248UL
- #define AVR64K 65536UL
- #define AVR68K 69632UL
- #define AVR128K 131072UL
-@@ -216,6 +218,8 @@ avr_device_t avr[] =
- 	{"atmega64hve",   AVR64K,  AVR4K,  AVR1K},
- 	{"atmega64m1",    AVR64K,  AVR4K,  AVR2K},
- 	{"m3000",         AVR64K,  AVR4K,  0UL},
-+	
-+	{"atmxt336s",     AVR52K,  AVR14K, 0UL},
- 
- 	{"atmega406",     AVR40K,  AVR2K,  AVR512},
- 
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 16:53:23.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 16:53:47.000000000 +0530
-@@ -278,6 +278,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-+  {"atmxt336s",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16a4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-   {"atxmega16c4", AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 16:51:14.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 16:55:26.000000000 +0530
-@@ -94,7 +94,7 @@ atmega2560, atmega2561, atmega256rfr2).
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
--atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1).
-+atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1, atmxt336s).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
diff --git a/401-binutils-atmega48hvf.patch b/401-binutils-atmega48hvf.patch
deleted file mode 100644
index b60fce5..0000000
--- a/401-binutils-atmega48hvf.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 16:57:40.000000000 +0530
-+++ binutils/size.c	2012-12-17 16:58:00.000000000 +0530
-@@ -103,6 +103,7 @@ static int return_code = 0;
- #define AVR32K 32768UL
- #define AVR36K 36864UL
- #define AVR40K 40960UL
-+#define AVR48K 49152UL
- #define AVR52K 53248UL
- #define AVR64K 65536UL
- #define AVR68K 69632UL
-@@ -343,6 +344,7 @@ avr_device_t avr[] =
- 	{"at90s4433",     AVR4K,   AVR128, AVR256},
- 	{"at90s4434",     AVR4K,   352UL,  AVR256},
- 	{"atmega48",      AVR4K,   AVR512, AVR256},
-+	{"atmega48hvf",   AVR48K,  AVR2K,  AVR1K},
- 	{"atmega48a",     AVR4K,   AVR512, AVR256},
- 	{"atmega48pa",    AVR4K,   AVR512, AVR256},
- 	{"atmega48p",     AVR4K,   AVR512, AVR256},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 16:57:40.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 16:58:00.000000000 +0530
-@@ -243,6 +243,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-   {"atmega32hvb",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-+  {"atmega48hvf",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega64hve",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"at90can32" , AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"at90can64" , AVR_ISA_AVR5,    bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 16:57:40.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 16:58:00.000000000 +0530
-@@ -78,10 +78,10 @@ atmega64rfr2, atmega640, atmega644, atme
- atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
- atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
- atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
--atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161,
--at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
--atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
--at90scr100, ata5790, ata5795).
-+atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32, at90can64,
-+at90pwm161,at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
-+atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,
-+at90usb647, at94k, at90scr100, ata5790, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
diff --git a/402-binutils-atmega26hvg.patch b/402-binutils-atmega26hvg.patch
deleted file mode 100644
index 0f733d9..0000000
--- a/402-binutils-atmega26hvg.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 16:59:08.000000000 +0530
-+++ binutils/size.c	2012-12-17 16:59:24.000000000 +0530
-@@ -100,6 +100,7 @@ static int return_code = 0;
- #define AVR16K 16384UL
- #define AVR20K 20480UL
- #define AVR24K 24576UL
-+#define AVR26K 26624UL
- #define AVR32K 32768UL
- #define AVR36K 36864UL
- #define AVR40K 40960UL
-@@ -266,6 +267,8 @@ avr_device_t avr[] =
- 	{"atmega32u4",    AVR32K,  2560UL, AVR1K},
- 	{"atmega32u6",    AVR32K,  2560UL, AVR1K},
- 
-+	{"atmega26hvg",   AVR26K,  AVR1K,  AVR512},
-+
- 	{"at43usb355",    AVR24K,  1120UL,   0UL},
- 
- 	{"atxmega16a4",   AVR20K,  AVR2K,  AVR1K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 16:59:08.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 16:59:24.000000000 +0530
-@@ -241,6 +241,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega16hva2",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"atmega16hvb",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-+  {"atmega26hvg",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega32hvb",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-   {"atmega48hvf",AVR_ISA_AVR5,    bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 16:59:08.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 16:59:24.000000000 +0530
-@@ -78,10 +78,10 @@ atmega3290a, atmega3290p, atmega3290pa, 
- atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
- atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
- atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
--atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32, at90can64,
--at90pwm161,at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
--atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,
--at90usb647, at94k, at90scr100, ata5790, ata5795).
-+atmega26hvg, atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32,
-+at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
-+atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,at90usb647,
-+at94k, at90scr100, ata5790, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
diff --git a/403-binutils-atmxt224_224e.patch b/403-binutils-atmxt224_224e.patch
deleted file mode 100644
index 67a5bdd..0000000
--- a/403-binutils-atmxt224_224e.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 18:18:08.000000000 +0530
-+++ binutils/size.c	2012-12-17 18:14:56.000000000 +0530
-@@ -96,6 +96,7 @@ static int return_code = 0;
- #define AVR2K 2048UL
- #define AVR4K 4096UL
- #define AVR8K 8192UL
-+#define AVR9K 9216UL
- #define AVR14K 14336UL
- #define AVR16K 16384UL
- #define AVR20K 20480UL
-@@ -225,6 +226,8 @@ avr_device_t avr[] =
- 
- 	{"atmega406",     AVR40K,  AVR2K,  AVR512},
- 
-+	{"atmxt224",      AVR36K,  AVR9K,  0UL},
-+	{"atmxt224e",     AVR36K,  AVR9K,  0UL},
- 	{"atxmega32a4",   AVR36K,  AVR4K,  AVR1K},
- 	{"atxmega32a4u",  AVR36K,  AVR4K,  AVR1K},
- 	{"atxmega32c4",   AVR36K,  AVR4K,  AVR1K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 18:18:08.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 18:14:56.000000000 +0530
-@@ -280,6 +280,8 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-+  {"atmxt224",    AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atmxt224e",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt336s",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16a4", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega16a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega2},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 18:18:08.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 18:17:01.000000000 +0530
-@@ -94,7 +94,8 @@ atmega2560, atmega2561, atmega256rfr2).
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
--atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1, atmxt336s).
-+atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1, atmxt224,
-+atmxt224e, atmxt336s).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
diff --git a/404-binutils-atmxt112sl.patch b/404-binutils-atmxt112sl.patch
deleted file mode 100644
index 47b4259..0000000
--- a/404-binutils-atmxt112sl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 18:19:57.000000000 +0530
-+++ binutils/size.c	2012-12-17 18:21:14.000000000 +0530
-@@ -224,6 +224,8 @@ avr_device_t avr[] =
- 	
- 	{"atmxt336s",     AVR52K,  AVR14K, 0UL},
- 
-+	{"atmxt112sl",    AVR48K,  AVR8K,  0UL},
-+
- 	{"atmega406",     AVR40K,  AVR2K,  AVR512},
- 
- 	{"atmxt224",      AVR36K,  AVR9K,  0UL},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 18:19:57.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 18:21:14.000000000 +0530
-@@ -280,6 +280,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-+  {"atmxt112sl",  AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt224",    AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt224e",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt336s",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 18:19:57.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 18:21:58.000000000 +0530
-@@ -95,7 +95,7 @@ Instruction set avrxmega2 is for the XME
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
- atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1, atmxt224,
--atmxt224e, atmxt336s).
-+atmxt224e, atmxt336s, atmxt112sl).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
diff --git a/405-binutils-atmxt540s.patch b/405-binutils-atmxt540s.patch
deleted file mode 100644
index 89a3a86..0000000
--- a/405-binutils-atmxt540s.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 18:23:28.000000000 +0530
-+++ binutils/size.c	2012-12-17 18:23:52.000000000 +0530
-@@ -97,6 +97,7 @@ static int return_code = 0;
- #define AVR4K 4096UL
- #define AVR8K 8192UL
- #define AVR9K 9216UL
-+#define AVR10K 10240UL
- #define AVR14K 14336UL
- #define AVR16K 16384UL
- #define AVR20K 20480UL
-@@ -152,6 +153,9 @@ avr_device_t avr[] =
-  	{"atmega128rfr2", AVR128K, AVR16K, AVR4K},
-  	{"atmega1284rfr2",AVR128K, AVR16K, AVR4K},
-  
-+ 	{"atmxt540s",     AVR136K, AVR10K, 0UL},
-+ 	{"atmxt540sreva",AVR136K, AVR10K, 0UL},
-+
-   	{"atxmega128a1",  AVR136K, AVR8K,  AVR2K},
-   	{"atxmega128a1u", AVR136K, AVR8K,  AVR2K},
-  	{"atxmega128a4u", AVR136K, AVR8K,  AVR2K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 18:23:28.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 18:23:52.000000000 +0530
-@@ -314,6 +314,8 @@ static struct mcu_type_s mcu_types[] =
-   {"atxmega128c3", AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega128d3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega128d4", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atmxt540s",    AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-+  {"atmxt540sreva", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega192a3", AVR_ISA_XMEGA, bfd_mach_avrxmega6},
-   {"atxmega192a3u",AVR_ISA_XMEGAU,bfd_mach_avrxmega6},
-   {"atxmega192c3", AVR_ISA_XMEGAU, bfd_mach_avrxmega6},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 18:23:28.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 18:23:52.000000000 +0530
-@@ -110,10 +110,10 @@ atxmega64a1u).
- 
- Instruction set avrxmega6 is for the XMEGA AVR core with larger than 64K program
- memory space and less than 64K data space (MCU types: atxmega128a3, 
--atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, 
--atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192c3, atxmega192d3, 
--atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, 
--atxmega256d3, atxmega384c3, atxmega256d3).
-+atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4, atmxt540s, 
-+atmxt540sreva, atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, 
-+atxmega192c3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b,
-+atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3, atxmega256d3).
- 
- Instruction set avrxmega7 is for the XMEGA AVR core with larger than 64K program
- memory space and greater than 64K data space (MCU types: atxmega128a1,
diff --git a/406-binutils-ata5831.patch b/406-binutils-ata5831.patch
deleted file mode 100644
index 30b62f6..0000000
--- a/406-binutils-ata5831.patch
+++ /dev/null
@@ -1,444 +0,0 @@
-diff -Naurp bfd/archures.c bfd/archures.c
---- bfd/archures.c	2012-12-17 19:41:58.000000000 +0530
-+++ bfd/archures.c	2012-12-17 19:38:58.000000000 +0530
-@@ -391,6 +391,7 @@ DESCRIPTION
- .#define bfd_mach_avr5		5
- .#define bfd_mach_avr51		51
- .#define bfd_mach_avr6		6
-+.#define bfd_mach_avr7		7
- .#define bfd_mach_avrtiny   90
- .#define bfd_mach_avrxmega1 101
- .#define bfd_mach_avrxmega2 102
-diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
---- bfd/cpu-avr.c	2012-12-17 19:41:58.000000000 +0530
-+++ bfd/cpu-avr.c	2012-12-17 19:38:58.000000000 +0530
-@@ -135,7 +135,7 @@ static const bfd_arch_info_type arch_inf
- 
-   /* 3-Byte PC.  */
-   N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
--
-+    
-   /* Tiny core (ATTiny10 & similar) */
-   N (16, bfd_mach_avrtiny, "avr:90", FALSE, & arch_info_struct[11]),
- 
-@@ -156,6 +156,9 @@ static const bfd_arch_info_type arch_inf
-   
-   /* Xmega 6 */
-   N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[17]),
-+ 
-+  /* 20K flash. starts at 0x8000 */
-+  N (16, bfd_mach_avr7, "avr:7", FALSE, & arch_info_struct[18]),
-   
-   /* Xmega 7 */
-   N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL)
-diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
---- bfd/elf32-avr.c	2012-12-17 19:41:58.000000000 +0530
-+++ bfd/elf32-avr.c	2012-12-17 19:38:58.000000000 +0530
-@@ -1445,6 +1445,10 @@ bfd_elf_avr_final_write_processing (bfd 
-       val = E_AVR_MACH_AVR6;
-       break;
- 
-+    case bfd_mach_avr7:
-+      val = E_AVR_MACH_AVR7;
-+      break;
-+
-     case bfd_mach_avrxmega1:
-       val = E_AVR_MACH_XMEGA1;
-       break;
-@@ -1539,6 +1543,10 @@ elf32_avr_object_p (bfd *abfd)
- 	  e_set = bfd_mach_avr6;
- 	  break;
- 
-+	case E_AVR_MACH_AVR7:
-+	  e_set = bfd_mach_avr7;
-+	  break;
-+
- 	case E_AVR_MACH_XMEGA1:
- 	  e_set = bfd_mach_avrxmega1;
- 	  break;
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 19:42:20.000000000 +0530
-+++ binutils/size.c	2012-12-17 19:38:58.000000000 +0530
-@@ -285,6 +285,8 @@ avr_device_t avr[] =
- 	{"atxmega16c4",   AVR20K,  AVR2K,  AVR1K},
- 	{"atxmega16d4",   AVR20K,  AVR2K,  AVR1K},
- 
-+	{"ata5831",       AVR20K,  AVR1K,  AVR1K},
-+
- 	{"at76c711",      AVR16K,  AVR2K,  0UL},
- 	{"at90pwm161",    AVR16K,  AVR1K,  AVR512},
- 	{"at90pwm216",    AVR16K,  AVR1K,  AVR512},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 19:42:20.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 19:40:09.000000000 +0530
-@@ -82,6 +82,7 @@ static struct mcu_type_s mcu_types[] =
-   {"avr5",       AVR_ISA_AVR51,   bfd_mach_avr5},
-   {"avr51",      AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"avr6",       AVR_ISA_AVR6,    bfd_mach_avr6},
-+  {"avr7",       AVR_ISA_AVR7,    bfd_mach_avr7},
-   {"avrxmega1",  AVR_ISA_XMEGA,   bfd_mach_avrxmega1},
-   {"avrxmega2",  AVR_ISA_XMEGA,   bfd_mach_avrxmega2},
-   {"avrxmega3",  AVR_ISA_XMEGA,   bfd_mach_avrxmega3},
-@@ -280,6 +281,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-+  {"ata5831",    AVR_ISA_AVR7, bfd_mach_avr7},
-   {"atmxt112sl",  AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt224",    AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atmxt224e",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-@@ -519,6 +521,8 @@ md_show_usage (FILE *stream)
- 	"                   avr5  - enhanced AVR core with up to 64K program memory\n"
- 	"                   avr51 - enhanced AVR core with up to 128K program memory\n"
- 	"                   avr6  - enhanced AVR core with up to 256K program memory\n"
-+  	"                   avr7  - enhanced AVR core with up to 20K program memory\n"
-+  	"                           flash starting address is not zero\n"
- 	"                   avrxmega2 - XMEGA, > 8K, < 64K FLASH, < 64K RAM\n"
- 	"                   avrxmega3 - XMEGA, > 8K, <= 64K FLASH, > 64K RAM\n"
- 	"                   avrxmega4 - XMEGA, > 64K, <= 128K FLASH, <= 64K RAM\n"
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 19:42:20.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 19:38:58.000000000 +0530
-@@ -91,6 +91,9 @@ at90usb1287, m3000).
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
- atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
- 
-+Instruction set avr7 is for the enhanced AVR core with 20K flash which starts
-+from 0x8000 (MCU types: ata5831)
-+
- Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K program
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
-diff -Naurp include/elf/avr.h include/elf/avr.h
---- include/elf/avr.h	2012-12-17 19:41:58.000000000 +0530
-+++ include/elf/avr.h	2012-12-17 19:38:58.000000000 +0530
-@@ -41,6 +41,7 @@
- #define E_AVR_MACH_AVR5     5
- #define E_AVR_MACH_AVR51   51
- #define E_AVR_MACH_AVR6     6 
-+#define E_AVR_MACH_AVR7     7 
- #define E_AVR_MACH_AVRTINY 90
- #define E_AVR_MACH_XMEGA1  101
- #define E_AVR_MACH_XMEGA2  102
-diff -Naurp include/opcode/avr.h include/opcode/avr.h
---- include/opcode/avr.h	2012-12-17 19:41:58.000000000 +0530
-+++ include/opcode/avr.h	2012-12-17 19:38:58.000000000 +0530
-@@ -74,6 +74,8 @@
-                         AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \
-                         AVR_ISA_BRK | AVR_ISA_EIND | AVR_ISA_MOVW)
- 
-+#define AVR_ISA_AVR7   (AVR_ISA_M8 | AVR_ISA_MEGA | AVR_ISA_BRK )
-+ 
- #define AVR_ISA_AVRTINY (AVR_ISA_1200 | AVR_ISA_BRK | AVR_ISA_SRAM | \
-                          AVR_ISA_TINY)
- 
-diff -Naurp ld/configure.tgt ld/configure.tgt
---- ld/configure.tgt	2012-12-17 19:41:58.000000000 +0530
-+++ ld/configure.tgt	2012-12-17 19:38:58.000000000 +0530
-@@ -118,7 +118,7 @@ arm*-*-uclinux*)	targ_emul=armelf_linux
- arm-*-vxworks)		targ_emul=armelf_vxworks ;;
- arm*-*-conix*)		targ_emul=armelf ;;
- avr-*-*)		targ_emul=avr2
--			targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny"
-+			targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avr7 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny"
- 			;;
- bfin-*-elf)		targ_emul=elf32bfin;
- 			targ_extra_emuls="elf32bfinfd"
-diff -Naurp ld/emulparams/avr7.sh ld/emulparams/avr7.sh
---- ld/emulparams/avr7.sh	1970-01-01 05:30:00.000000000 +0530
-+++ ld/emulparams/avr7.sh	2012-12-17 19:38:58.000000000 +0530
-@@ -0,0 +1,13 @@
-+ARCH=avr:7
-+MACHINE=
-+SCRIPT_NAME=avr7
-+OUTPUT_FORMAT="elf32-avr"
-+MAXPAGESIZE=1
-+EMBEDDED=yes
-+TEMPLATE_NAME=elf32
-+
-+TEXT_ORIGIN=0x8000
-+TEXT_LENGTH=20K
-+DATA_ORIGIN=0x800200
-+DATA_LENGTH=0x400
-+EXTRA_EM_FILE=avrelf
-diff -Naurp ld/Makefile.am ld/Makefile.am
---- ld/Makefile.am	2012-12-17 19:41:58.000000000 +0530
-+++ ld/Makefile.am	2012-12-17 19:38:58.000000000 +0530
-@@ -165,6 +165,7 @@ ALL_EMULATION_SOURCES = \
- 	eavr5.c \
- 	eavr51.c \
- 	eavr6.c \
-+	eavr7.c \
- 	eavrxmega1.c \
- 	eavrxmega2.c \
- 	eavrxmega3.c \
-@@ -820,6 +821,10 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
-   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-   ${GEN_DEPENDS}
- 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
-+eavr7.c: $(srcdir)/emulparams/avr7.sh $(srcdir)/emultempl/avrelf.em \
-+  $(ELF_DEPS) $(srcdir)/scripttempl/avr7.sc \
-+  ${GEN_DEPENDS}
-+	${GENSCRIPTS} avr7 "$(tdir_avr2)"
- eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
-   $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-   ${GEN_DEPENDS}
-diff -Naurp ld/scripttempl/avr7.sc ld/scripttempl/avr7.sc
---- ld/scripttempl/avr7.sc	1970-01-01 05:30:00.000000000 +0530
-+++ ld/scripttempl/avr7.sc	2012-12-17 19:38:58.000000000 +0530
-@@ -0,0 +1,255 @@
-+cat <<EOF
-+OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
-+OUTPUT_ARCH(${ARCH})
-+
-+MEMORY
-+{
-+  text   (rx)   : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH
-+  data   (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
-+  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 1K
-+  fuse      (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
-+  lock      (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
-+  signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
-+}
-+
-+SECTIONS
-+{
-+  /* Read-only sections, merged into text segment: */
-+  ${TEXT_DYNAMIC+${DYNAMIC}}
-+  .hash        ${RELOCATING-0} : { *(.hash)		}
-+  .dynsym      ${RELOCATING-0} : { *(.dynsym)		}
-+  .dynstr      ${RELOCATING-0} : { *(.dynstr)		}
-+  .gnu.version ${RELOCATING-0} : { *(.gnu.version)	}
-+  .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d)	}
-+  .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r)	}
-+
-+  .rel.init    ${RELOCATING-0} : { *(.rel.init)		}
-+  .rela.init   ${RELOCATING-0} : { *(.rela.init)	}
-+  .rel.text    ${RELOCATING-0} :
-+    {
-+      *(.rel.text)
-+      ${RELOCATING+*(.rel.text.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.t*)}
-+    }
-+  .rela.text   ${RELOCATING-0} :
-+    {
-+      *(.rela.text)
-+      ${RELOCATING+*(.rela.text.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.t*)}
-+    }
-+  .rel.fini    ${RELOCATING-0} : { *(.rel.fini)		}
-+  .rela.fini   ${RELOCATING-0} : { *(.rela.fini)	}
-+  .rel.rodata  ${RELOCATING-0} :
-+    {
-+      *(.rel.rodata)
-+      ${RELOCATING+*(.rel.rodata.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.r*)}
-+    }
-+  .rela.rodata ${RELOCATING-0} :
-+    {
-+      *(.rela.rodata)
-+      ${RELOCATING+*(.rela.rodata.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.r*)}
-+    }
-+  .rel.data    ${RELOCATING-0} :
-+    {
-+      *(.rel.data)
-+      ${RELOCATING+*(.rel.data.*)}
-+      ${RELOCATING+*(.rel.gnu.linkonce.d*)}
-+    }
-+  .rela.data   ${RELOCATING-0} :
-+    {
-+      *(.rela.data)
-+      ${RELOCATING+*(.rela.data.*)}
-+      ${RELOCATING+*(.rela.gnu.linkonce.d*)}
-+    }
-+  .rel.ctors   ${RELOCATING-0} : { *(.rel.ctors)	}
-+  .rela.ctors  ${RELOCATING-0} : { *(.rela.ctors)	}
-+  .rel.dtors   ${RELOCATING-0} : { *(.rel.dtors)	}
-+  .rela.dtors  ${RELOCATING-0} : { *(.rela.dtors)	}
-+  .rel.got     ${RELOCATING-0} : { *(.rel.got)		}
-+  .rela.got    ${RELOCATING-0} : { *(.rela.got)		}
-+  .rel.bss     ${RELOCATING-0} : { *(.rel.bss)		}
-+  .rela.bss    ${RELOCATING-0} : { *(.rela.bss)		}
-+  .rel.plt     ${RELOCATING-0} : { *(.rel.plt)		}
-+  .rela.plt    ${RELOCATING-0} : { *(.rela.plt)		}
-+
-+  /* Internal text space or external memory.  */
-+  .text ${RELOCATING-0} :
-+  {
-+    *(.vectors)
-+    KEEP(*(.vectors))
-+
-+    /* For data that needs to reside in the lower 64k of progmem.  */
-+    *(.progmem.gcc*)
-+    *(.progmem*)
-+    ${RELOCATING+. = ALIGN(2);}
-+
-+    ${CONSTRUCTING+ __trampolines_start = . ; }
-+    /* The jump trampolines for the 16-bit limited relocs will reside here.  */
-+    *(.trampolines)
-+    *(.trampolines*)
-+    ${CONSTRUCTING+ __trampolines_end = . ; }
-+
-+    /* For future tablejump instruction arrays for 3 byte pc devices.
-+       We don't relax jump/call instructions within these sections.  */
-+    *(.jumptables) 
-+    *(.jumptables*) 
-+
-+    /* For code that needs to reside in the lower 128k progmem.  */
-+    *(.lowtext)
-+    *(.lowtext*)
-+
-+    ${CONSTRUCTING+ __ctors_start = . ; }
-+    ${CONSTRUCTING+ *(.ctors) }
-+    ${CONSTRUCTING+ __ctors_end = . ; }
-+    ${CONSTRUCTING+ __dtors_start = . ; }
-+    ${CONSTRUCTING+ *(.dtors) }
-+    ${CONSTRUCTING+ __dtors_end = . ; }
-+    KEEP(SORT(*)(.ctors))
-+    KEEP(SORT(*)(.dtors))
-+
-+    /* From this point on, we don't bother about wether the insns are
-+       below or above the 16 bits boundary.  */
-+    *(.init0)  /* Start here after reset.  */
-+    KEEP (*(.init0))
-+    *(.init1)
-+    KEEP (*(.init1))
-+    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
-+    KEEP (*(.init2))
-+    *(.init3)
-+    KEEP (*(.init3))
-+    *(.init4)  /* Initialize data and BSS.  */
-+    KEEP (*(.init4))
-+    *(.init5)
-+    KEEP (*(.init5))
-+    *(.init6)  /* C++ constructors.  */
-+    KEEP (*(.init6))
-+    *(.init7)
-+    KEEP (*(.init7))
-+    *(.init8)
-+    KEEP (*(.init8))
-+    *(.init9)  /* Call main().  */
-+    KEEP (*(.init9))
-+    *(.text)
-+    ${RELOCATING+. = ALIGN(2);}
-+    *(.text.*)
-+    ${RELOCATING+. = ALIGN(2);}
-+    *(.fini9)  /* _exit() starts here.  */
-+    KEEP (*(.fini9))
-+    *(.fini8)
-+    KEEP (*(.fini8))
-+    *(.fini7)
-+    KEEP (*(.fini7))
-+    *(.fini6)  /* C++ destructors.  */
-+    KEEP (*(.fini6))
-+    *(.fini5)
-+    KEEP (*(.fini5))
-+    *(.fini4)
-+    KEEP (*(.fini4))
-+    *(.fini3)
-+    KEEP (*(.fini3))
-+    *(.fini2)
-+    KEEP (*(.fini2))
-+    *(.fini1)
-+    KEEP (*(.fini1))
-+    *(.fini0)  /* Infinite loop after program termination.  */
-+    KEEP (*(.fini0))
-+    ${RELOCATING+ _etext = . ; }
-+  } ${RELOCATING+ > text}
-+
-+  .data	${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
-+  {
-+    ${RELOCATING+ PROVIDE (__data_start = .) ; }
-+    *(.data)
-+    *(.data*)
-+    *(.rodata)  /* We need to include .rodata here if gcc is used */
-+    *(.rodata*) /* with -fdata-sections.  */
-+    *(.gnu.linkonce.d*)
-+    ${RELOCATING+. = ALIGN(2);}
-+    ${RELOCATING+ _edata = . ; }
-+    ${RELOCATING+ PROVIDE (__data_end = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))}
-+  {
-+    ${RELOCATING+ PROVIDE (__bss_start = .) ; }
-+    *(.bss)
-+    *(.bss*)
-+    *(COMMON)
-+    ${RELOCATING+ PROVIDE (__bss_end = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  ${RELOCATING+ __data_load_start = LOADADDR(.data); }
-+  ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); }
-+
-+  /* Global data not cleared after reset.  */
-+  .noinit ${RELOCATING-0}:
-+  {
-+    ${RELOCATING+ PROVIDE (__noinit_start = .) ; }
-+    *(.noinit*)
-+    ${RELOCATING+ PROVIDE (__noinit_end = .) ; }
-+    ${RELOCATING+ _end = . ;  }
-+    ${RELOCATING+ PROVIDE (__heap_start = .) ; }
-+  } ${RELOCATING+ > data}
-+
-+  .eeprom ${RELOCATING-0}:
-+  {
-+    *(.eeprom*)
-+    ${RELOCATING+ __eeprom_end = . ; }
-+  } ${RELOCATING+ > eeprom}
-+
-+  .fuse ${RELOCATING-0}:
-+  {
-+    KEEP(*(.fuse))
-+    KEEP(*(.lfuse))
-+    KEEP(*(.hfuse))
-+    KEEP(*(.efuse))
-+  } ${RELOCATING+ > fuse}
-+
-+  .lock ${RELOCATING-0}:
-+  {
-+    KEEP(*(.lock*))
-+  } ${RELOCATING+ > lock}
-+
-+  .signature ${RELOCATING-0}:
-+  {
-+    KEEP(*(.signature*))
-+  } ${RELOCATING+ > signature}
-+
-+  /* Stabs debugging sections.  */
-+  .stab 0 : { *(.stab) }
-+  .stabstr 0 : { *(.stabstr) }
-+  .stab.excl 0 : { *(.stab.excl) }
-+  .stab.exclstr 0 : { *(.stab.exclstr) }
-+  .stab.index 0 : { *(.stab.index) }
-+  .stab.indexstr 0 : { *(.stab.indexstr) }
-+  .comment 0 : { *(.comment) }
-+ 
-+  /* DWARF debug sections.
-+     Symbols in the DWARF debugging sections are relative to the beginning
-+     of the section so we begin them at 0.  */
-+
-+  /* DWARF 1 */
-+  .debug          0 : { *(.debug) }
-+  .line           0 : { *(.line) }
-+
-+  /* GNU DWARF 1 extensions */
-+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-+  .debug_sfnames  0 : { *(.debug_sfnames) }
-+
-+  /* DWARF 1.1 and DWARF 2 */
-+  .debug_aranges  0 : { *(.debug_aranges) }
-+  .debug_pubnames 0 : { *(.debug_pubnames) }
-+
-+  /* DWARF 2 */
-+  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
-+  .debug_abbrev   0 : { *(.debug_abbrev) }
-+  .debug_line     0 : { *(.debug_line) }
-+  .debug_frame    0 : { *(.debug_frame) }
-+  .debug_str      0 : { *(.debug_str) }
-+  .debug_loc      0 : { *(.debug_loc) }
-+  .debug_macinfo  0 : { *(.debug_macinfo) }
-+}
-+EOF
-+
diff --git a/407-binutils-attiny841.patch b/407-binutils-attiny841.patch
deleted file mode 100644
index 65b49e8..0000000
--- a/407-binutils-attiny841.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-17 18:26:59.000000000 +0530
-+++ binutils/size.c	2012-12-17 18:27:19.000000000 +0530
-@@ -348,6 +348,7 @@ avr_device_t avr[] =
- 	{"atmega8u2",     AVR8K,   AVR512, AVR512},
- 	{"attiny84",      AVR8K,   AVR512, AVR512},
- 	{"attiny84a",     AVR8K,   AVR512, AVR512},
-+	{"attiny841",	  AVR8K,   AVR512, AVR512},	
- 	{"attiny85",      AVR8K,   AVR512, AVR512},
- 	{"attiny861",     AVR8K,   AVR512, AVR512},
- 	{"attiny861a",    AVR8K,   AVR512, AVR512},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-17 18:26:59.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-17 18:27:19.000000000 +0530
-@@ -123,6 +123,7 @@ static struct mcu_type_s mcu_types[] =
-   {"attiny25",   AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny45",   AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny85",   AVR_ISA_AVR25,   bfd_mach_avr25},
-+  {"attiny841",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny261",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny261a", AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny461",  AVR_ISA_AVR25,   bfd_mach_avr25},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-17 18:26:59.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-17 18:27:19.000000000 +0530
-@@ -46,7 +46,7 @@ space plus the MOVW instruction (MCU typ
- attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
- attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
- attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
--attiny828, at86rf401, ata5272).
-+attiny828, attiny841, at86rf401, ata5272).
- 
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
diff --git a/408-binutils-atmegarfa2.patch b/408-binutils-atmegarfa2.patch
deleted file mode 100644
index 750966d..0000000
--- a/408-binutils-atmegarfa2.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-10 14:52:39.000000000 +0530
-+++ binutils/size.c	2012-12-10 16:33:08.000000000 +0530
-@@ -132,6 +132,7 @@ avr_device_t avr[] =
-  
-  	{"atxmega384d3",  AVR384K, AVR16K, AVR4K},
-   
-+ 	{"atmega256rfa2", AVR256K, AVR32K, AVR8K},
-  	{"atmega256rfr2", AVR256K, AVR32K, AVR8K},
-  	{"atmega2564rfr2",AVR256K, AVR32K, AVR8K},
-  
-@@ -150,6 +151,7 @@ avr_device_t avr[] =
-  	{"atxmega192c3",  AVR200K, AVR16K, AVR2K},
-   	{"atxmega192d3",  AVR200K, AVR16K, AVR2K},
-   
-+ 	{"atmega128rfa2", AVR128K, AVR16K, AVR4K},
-  	{"atmega128rfr2", AVR128K, AVR16K, AVR4K},
-  	{"atmega1284rfr2",AVR128K, AVR16K, AVR4K},
-  
-@@ -191,6 +193,7 @@ avr_device_t avr[] =
- 	{"atxmega64d3",   AVR68K,  AVR4K,  AVR2K},
- 	{"atxmega64d4",   AVR68K,  AVR4K,  AVR2K},
- 
-+ 	{"atmega64rfa2",  AVR64K,  AVR8K,  AVR2K},
- 	{"atmega64rfr2",  AVR64K,  AVR8K,  AVR2K},
- 	{"atmega644rfr2", AVR64K,  AVR8K,  AVR2K},
- 
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-10 14:52:39.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-10 16:35:12.000000000 +0530
-@@ -218,6 +218,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega3290p",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega3290pa",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"atmega406",  AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega64rfa2", AVR_ISA_AVR5,  bfd_mach_avr5},
-   {"atmega64rfr2", AVR_ISA_AVR5,  bfd_mach_avr5},
-   {"atmega644rfr2",AVR_ISA_AVR5,  bfd_mach_avr5},
-   {"atmega64",   AVR_ISA_AVR5,    bfd_mach_avr5},
-@@ -273,13 +274,15 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega1284", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega1284p",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega128rfa1",AVR_ISA_AVR51, bfd_mach_avr51},
-+  {"atmega128rfa2",AVR_ISA_AVR51, bfd_mach_avr51},
-   {"atmega128rfr2",AVR_ISA_AVR51, bfd_mach_avr51},
-   {"atmega1284rfr2",AVR_ISA_AVR51, bfd_mach_avr51},
-   {"at90can128", AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"at90usb1286",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"at90usb1287",AVR_ISA_AVR51,   bfd_mach_avr51},
-   {"atmega2560", AVR_ISA_AVR6,    bfd_mach_avr6},
-   {"atmega2561", AVR_ISA_AVR6,    bfd_mach_avr6},
-+  {"atmega256rfa2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega256rfr2", AVR_ISA_AVR6, bfd_mach_avr6},
-   {"atmega2564rfr2",AVR_ISA_AVR6, bfd_mach_avr6},
-   {"ata5831",    AVR_ISA_AVR7, bfd_mach_avr7},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-10 14:52:39.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-10 16:39:55.000000000 +0530
-@@ -74,22 +74,22 @@ atmega324a, atmega324p, atmega324pa, atm
- atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, 
- atmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa, 
- atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, 
--atmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a, atmega644p,
--atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
--atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
--atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
-+atmega64rfa2, atmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a,
-+atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega6450,
-+atmega6450a, atmega6450p, atmega649, atmega649a, atmega649p, atmega6490,
-+atmega6490a, atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
- atmega26hvg, atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32,
- at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
- atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,at90usb647,
- at94k, at90scr100, ata5790, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
--atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2,
--at90can128, at90usb1286, at90usb1287, m3000).
-+atmega1284, atmega1284p, atmega128rfa1, atmega128rfa2, atmega128rfr2,
-+atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000).
- 
- Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
--atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
-+atmega2560, atmega2561, atmega256rfa2, atmega256rfr2, atmega2564rfr2).
- 
- Instruction set avr7 is for the enhanced AVR core with 20K flash which starts
- from 0x8000 (MCU types: ata5831)
diff --git a/409-binutils-ata5790n.patch b/409-binutils-ata5790n.patch
deleted file mode 100644
index 6414ff7..0000000
--- a/409-binutils-ata5790n.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-10 16:44:06.000000000 +0530
-+++ binutils/size.c	2012-12-10 16:59:46.000000000 +0530
-@@ -203,6 +203,7 @@ avr_device_t avr[] =
- 	{"at90usb647",    AVR64K,  AVR4K,  AVR2K},
- 	{"ata5505",       AVR16K,  AVR512, AVR512},
- 	{"ata5790",       AVR16K,  AVR512, AVR2112},
-+	{"ata5790n",      AVR16K,  AVR512, AVR2112},
- 	{"ata5795",       AVR8K,   AVR512, AVR2112},
- 	{"ata5272",       AVR8K,   AVR512, AVR512},
- 	{"atmega64",      AVR64K,  AVR4K,  AVR2K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-10 16:44:06.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-10 17:00:23.000000000 +0530
-@@ -172,6 +172,7 @@ static struct mcu_type_s mcu_types[] =
-   {"at90pwm81",  AVR_ISA_AVR4,    bfd_mach_avr4},
-   {"at90pwm161", AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"ata5790",    AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"ata5790n",   AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"ata5795",    AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16",   AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega16a",  AVR_ISA_AVR5,    bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-10 16:44:06.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-10 17:01:20.000000000 +0530
-@@ -81,7 +81,7 @@ atmega6490p, atmega16hva, atmega16hva2, 
- atmega26hvg, atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32,
- at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
- atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,at90usb647,
--at94k, at90scr100, ata5790, ata5795).
-+at94k, at90scr100, ata5790, ata5790n, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
diff --git a/410-binutils-atmega64hve2.patch b/410-binutils-atmega64hve2.patch
deleted file mode 100644
index 868affc..0000000
--- a/410-binutils-atmega64hve2.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2012-12-19 14:34:56.000000000 +0530
-+++ binutils/size.c	2012-12-19 14:35:04.000000000 +0530
-@@ -227,6 +227,7 @@ avr_device_t avr[] =
- 	{"atmega6490p",   AVR64K,  AVR4K,  AVR2K},
- 	{"atmega64c1",    AVR64K,  AVR4K,  AVR2K},
- 	{"atmega64hve",   AVR64K,  AVR4K,  AVR1K},
-+	{"atmega64hve2",  AVR64K,  AVR4K,  AVR1K},
- 	{"atmega64m1",    AVR64K,  AVR4K,  AVR2K},
- 	{"m3000",         AVR64K,  AVR4K,  0UL},
- 	
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2012-12-19 14:34:56.000000000 +0530
-+++ gas/config/tc-avr.c	2012-12-19 14:35:04.000000000 +0530
-@@ -250,6 +250,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atmega32hvbrevb",AVR_ISA_AVR5,bfd_mach_avr5},
-   {"atmega48hvf",AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"atmega64hve",AVR_ISA_AVR5,    bfd_mach_avr5},
-+  {"atmega64hve2",AVR_ISA_AVR5,   bfd_mach_avr5},
-   {"at90can32" , AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"at90can64" , AVR_ISA_AVR5,    bfd_mach_avr5},
-   {"at90pwm161", AVR_ISA_AVR5,    bfd_mach_avr5},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2012-12-19 14:31:25.000000000 +0530
-+++ gas/doc/c-avr.texi	2012-12-19 14:32:18.000000000 +0530
-@@ -78,10 +78,10 @@ atmega64rfa2,atmega64rfr2, atmega640, at
- atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega6450,
- atmega6450a, atmega6450p, atmega649, atmega649a, atmega649p, atmega6490,
- atmega6490a, atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, 
--atmega26hvg, atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, at90can32,
--at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1,
--atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,at90usb647,
--at94k, at90scr100, ata5790, ata5790n, ata5795).
-+atmega26hvg, atmega32hvb, atmega48hvf, atmega32hvbrevb, atmega64hve, atmega64hve2,
-+at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1,
-+atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646,
-+at90usb647, at94k, at90scr100, ata5790, ata5790n, ata5795).
- 
- Instruction set avr51 is for the enhanced AVR core with exactly 128K program
- memory space (MCU types: atmega128, atmega128a, atmega1280, atmega1281, 
diff --git a/411-binutils-attiny474.patch b/411-binutils-attiny474.patch
deleted file mode 100644
index b9da2db..0000000
--- a/411-binutils-attiny474.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2013-01-28 11:54:59.000000000 +0530
-+++ binutils/size.c	2013-01-28 11:58:55.000000000 +0530
-@@ -393,6 +393,7 @@ avr_device_t avr[] =
- 	{"attiny26",      AVR2K,   AVR128, AVR128},
- 	{"attiny261",     AVR2K,   AVR128, AVR128},
- 	{"attiny261a",    AVR2K,   AVR128, AVR128},
-+	{"attiny474",	  AVR4K,   AVR256, AVR64},
- 	{"attiny28",      AVR2K,   0UL,    0UL},
- 	{"attiny40",      AVR2K,   AVR256, 0UL},
- 
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2013-01-28 11:54:58.000000000 +0530
-+++ gas/config/tc-avr.c	2013-01-28 11:57:57.000000000 +0530
-@@ -126,6 +126,7 @@ static struct mcu_type_s mcu_types[] =
-   {"attiny841",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny261",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny261a", AVR_ISA_AVR25,   bfd_mach_avr25},
-+  {"attiny474",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny461",  AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny461a", AVR_ISA_AVR25,   bfd_mach_avr25},
-   {"attiny861",  AVR_ISA_AVR25,   bfd_mach_avr25},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2013-01-28 11:54:58.000000000 +0530
-+++ gas/doc/c-avr.texi	2013-01-28 11:59:46.000000000 +0530
-@@ -44,9 +44,9 @@ at90s8535).
- Instruction set avr25 is for the classic AVR core with up to 8K program memory
- space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
- attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
--attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
--attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
--attiny828, attiny841, at86rf401, ata5272).
-+attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny474, 
-+attiny461, attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48,
-+attiny88,attiny828, attiny841, at86rf401, ata5272).
- 
- Instruction set avr3 is for the classic AVR core with up to 128K program
- memory space (MCU types: at43usb355, at76c711).
diff --git a/412-binutils-atmxts200.patch b/412-binutils-atmxts200.patch
deleted file mode 100644
index 513d560..0000000
--- a/412-binutils-atmxts200.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -Naurp binutils/size.c binutils/size.c
---- binutils/size.c	2013-03-25 10:48:20.000000000 +0530
-+++ binutils/size.c	2013-03-25 11:17:54.000000000 +0530
-@@ -239,6 +239,7 @@ avr_device_t avr[] =
- 
- 	{"atmxt224",      AVR36K,  AVR9K,  0UL},
- 	{"atmxt224e",     AVR36K,  AVR9K,  0UL},
-+	{"atmxts200",	  AVR16K,  AVR1K,  0UL},
- 	{"atxmega32a4",   AVR36K,  AVR4K,  AVR1K},
- 	{"atxmega32a4u",  AVR36K,  AVR4K,  AVR1K},
- 	{"atxmega32c4",   AVR36K,  AVR4K,  AVR1K},
-diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
---- gas/config/tc-avr.c	2013-03-25 10:48:19.000000000 +0530
-+++ gas/config/tc-avr.c	2013-03-25 11:49:54.000000000 +0530
-@@ -306,6 +306,7 @@ static struct mcu_type_s mcu_types[] =
-   {"atxmega16e5", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega8e5",  AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega32x1", AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-+  {"atmxts200",   AVR_ISA_XMEGA,  bfd_mach_avrxmega2},
-   {"atxmega64a3", AVR_ISA_XMEGA,  bfd_mach_avrxmega4},
-   {"atxmega64a3u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-   {"atxmega64a4u",AVR_ISA_XMEGAU, bfd_mach_avrxmega4},
-diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
---- gas/doc/c-avr.texi	2013-03-25 10:48:19.000000000 +0530
-+++ gas/doc/c-avr.texi	2013-03-25 11:49:16.000000000 +0530
-@@ -98,7 +98,7 @@ Instruction set avrxmega2 is for the XME
- memory space and less than 64K data space (MCU types: atxmega16a4, atxmega16a4u,
- atxmega16c4, atxmega16d4, atxmega16x1, atxmega32a4, atxmega32a4u, atxmega32c4, 
- atxmega32d4, atxmega16e5, atxmega8e5, atxmega32e5, atxmega32x1, atmxt224,
--atmxt224e, atmxt336s, atmxt112sl).
-+atmxt224e, atmxt336s, atmxt112sl, atmxts200).
- 
- Instruction set avrxmega3 is for the XMEGA AVR core with 8K to 64K program
- memory space and greater than 64K data space (MCU types: none).
diff --git a/500-binutils-avrtc530-backported.patch b/500-binutils-avrtc530-backported.patch
deleted file mode 100644
index 8ee28a9..0000000
--- a/500-binutils-avrtc530-backported.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -Naurp ld/scripttempl/avr7.sc ld/scripttempl/avr7.sc
---- ld/scripttempl/avr7.sc	2013-03-22 16:10:14.000000000 +0530
-+++ ld/scripttempl/avr7.sc	2013-03-22 16:19:16.000000000 +0530
-@@ -161,7 +161,7 @@ SECTIONS
-   .data	${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
-   {
-     ${RELOCATING+ PROVIDE (__data_start = .) ; }
--    *(.data)
-+    KEEP (*(.data))
-     *(.data*)
-     *(.rodata)  /* We need to include .rodata here if gcc is used */
-     *(.rodata*) /* with -fdata-sections.  */
-@@ -195,7 +195,7 @@ SECTIONS
- 
-   .eeprom ${RELOCATING-0}:
-   {
--    *(.eeprom*)
-+    KEEP (*(.eeprom*))
-     ${RELOCATING+ __eeprom_end = . ; }
-   } ${RELOCATING+ > eeprom}
- 
-diff -Naurp ld/scripttempl/avr.sc ld/scripttempl/avr.sc
---- ld/scripttempl/avr.sc	2013-03-22 16:10:00.000000000 +0530
-+++ ld/scripttempl/avr.sc	2013-03-22 16:19:13.000000000 +0530
-@@ -199,7 +199,7 @@ SECTIONS
- 
-   .eeprom ${RELOCATING-0}:
-   {
--    *(.eeprom*)
-+    KEEP (*(.eeprom*))
-     ${RELOCATING+ __eeprom_end = . ; }
-   } ${RELOCATING+ > eeprom}
- 
diff --git a/am.patch b/am.patch
deleted file mode 100644
index 7f45dd9..0000000
--- a/am.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- binutils-2.22/bfd/doc/Makefile.am~	2009-08-22 21:02:56.000000000 +0200
-+++ binutils-2.22/bfd/doc/Makefile.am	2013-06-05 20:00:58.095271800 +0200
-@@ -1,6 +1,6 @@
- ## Process this file with automake to generate Makefile.in
- 
--AUTOMAKE_OPTIONS = 1.9 cygnus
-+AUTOMAKE_OPTIONS = 1.9
- 
- DOCFILES = aoutx.texi  archive.texi archures.texi \
- 	bfdt.texi  cache.texi coffcode.texi \
---- binutils-2.22/binutils/doc/Makefile.am~	2013-06-05 19:59:40.011253542 +0200
-+++ binutils-2.22/binutils/doc/Makefile.am	2013-06-05 20:00:23.501635175 +0200
-@@ -1,7 +1,5 @@
- ## Process this file with automake to generate Makefile.in
- 
--AUTOMAKE_OPTIONS = cygnus
--
- # What version of the manual you want; "all" includes everything
- CONFIG=all
- 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/crossavr-binutils.git/commitdiff/19c02fec30be8e8d90232030cabfb1d02ee0c76c



More information about the pld-cvs-commit mailing list