-diff -uNdr binutils-2.21-orig.2/bfd/archures.c binutils-2.21/bfd/archures.c
---- binutils-2.21-orig.2/bfd/archures.c 2010-07-23 16:52:46.000000000 +0200
-+++ binutils-2.21/bfd/archures.c 2011-06-17 18:29:41.000000000 +0200
-@@ -373,6 +373,13 @@
+avrxmega1
+avrxmega2
+avrxmega3
+avrxmega4
+avrxmega5
+avrxmega6
+avrxmega7
+atxmega16a4
+atxmega16d4
+atxmega32d4
+atxmega32a4
+atxmega64a3
+atxmega64d3
+atxmega64a1
+atxmega128a3
+atxmega128d3
+atxmega192a3
+atxmega192d3
+atxmega256a3
+atxmega256a3b
+atxmega256d3
+atxmega128a1
+=======================================================
+diff -Naurp bfd/archures.c bfd/archures.c
+--- bfd/archures.c 2009-09-10 06:47:11.000000000 -0500
++++ bfd/archures.c 2011-06-07 11:44:52.000000000 -0500
+@@ -368,6 +368,13 @@ DESCRIPTION
.#define bfd_mach_avr5 5
.#define bfd_mach_avr51 51
.#define bfd_mach_avr6 6
. bfd_arch_bfin, {* ADI Blackfin *}
.#define bfd_mach_bfin 1
. bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
-diff -uNdr binutils-2.21-orig.2/bfd/bfd-in2.h binutils-2.21/bfd/bfd-in2.h
---- binutils-2.21-orig.2/bfd/bfd-in2.h 2010-11-03 03:31:02.000000000 +0100
-+++ binutils-2.21/bfd/bfd-in2.h 2011-06-17 18:29:41.000000000 +0200
-@@ -2053,6 +2053,13 @@
+diff -Naurp bfd/bfd-in2.h bfd/bfd-in2.h
+--- bfd/bfd-in2.h 2010-02-03 07:28:24.000000000 -0600
++++ bfd/bfd-in2.h 2011-06-07 11:44:52.000000000 -0500
+@@ -2042,6 +2042,13 @@ enum bfd_architecture
#define bfd_mach_avr5 5
#define bfd_mach_avr51 51
#define bfd_mach_avr6 6
bfd_arch_bfin, /* ADI Blackfin */
#define bfd_mach_bfin 1
bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
-diff -uNdr binutils-2.21-orig.2/bfd/cpu-avr.c binutils-2.21/bfd/cpu-avr.c
---- binutils-2.21-orig.2/bfd/cpu-avr.c 2009-09-02 09:18:36.000000000 +0200
-+++ binutils-2.21/bfd/cpu-avr.c 2011-06-17 18:29:41.000000000 +0200
-@@ -133,7 +133,29 @@
+diff -Naurp bfd/cpu-avr.c bfd/cpu-avr.c
+--- bfd/cpu-avr.c 2009-09-02 02:18:36.000000000 -0500
++++ bfd/cpu-avr.c 2011-06-07 11:44:52.000000000 -0500
+@@ -133,7 +133,29 @@ static const bfd_arch_info_type arch_inf
N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]),
/* 3-Byte PC. */
};
const bfd_arch_info_type bfd_avr_arch =
-diff -uNdr binutils-2.21-orig.2/bfd/elf32-avr.c binutils-2.21/bfd/elf32-avr.c
---- binutils-2.21-orig.2/bfd/elf32-avr.c 2010-10-25 17:54:13.000000000 +0200
-+++ binutils-2.21/bfd/elf32-avr.c 2011-06-17 18:29:41.000000000 +0200
-@@ -1340,6 +1340,34 @@
+diff -Naurp bfd/elf32-avr.c bfd/elf32-avr.c
+--- bfd/elf32-avr.c 2009-09-02 02:18:36.000000000 -0500
++++ bfd/elf32-avr.c 2011-06-07 11:44:52.000000000 -0500
+@@ -1328,6 +1328,34 @@ bfd_elf_avr_final_write_processing (bfd
case bfd_mach_avr6:
val = E_AVR_MACH_AVR6;
break;
}
elf_elfheader (abfd)->e_machine = EM_AVR;
-@@ -1402,6 +1430,34 @@
+@@ -1390,6 +1418,34 @@ elf32_avr_object_p (bfd *abfd)
case E_AVR_MACH_AVR6:
e_set = bfd_mach_avr6;
break;
}
}
return bfd_default_set_arch_mach (abfd, bfd_arch_avr,
-diff -uNdr binutils-2.21-orig.2/gas/config/tc-avr.c binutils-2.21/gas/config/tc-avr.c
---- binutils-2.21-orig.2/gas/config/tc-avr.c 2010-06-28 16:06:57.000000000 +0200
-+++ binutils-2.21/gas/config/tc-avr.c 2011-06-17 18:29:41.000000000 +0200
-@@ -27,20 +27,21 @@
-
- struct avr_opcodes_s
+diff -Naurp gas/config/tc-avr.c gas/config/tc-avr.c
+--- gas/config/tc-avr.c 2011-06-07 11:47:11.000000000 -0500
++++ gas/config/tc-avr.c 2011-06-07 11:44:52.000000000 -0500
+@@ -30,18 +30,19 @@ struct avr_opcodes_s
{
-- char * name;
-- char * constraints;
-- int insn_size; /* In words. */
-- int isa;
-+ char *name;
-+ char *constraints;
+ char * name;
+ char * constraints;
+ char *opcode;
-+ int insn_size; /* In words. */
-+ int isa;
+ int insn_size; /* In words. */
+ int isa;
unsigned int bin_opcode;
};
};
const char comment_chars[] = ";";
-@@ -79,6 +80,13 @@
+@@ -80,6 +81,13 @@ 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},
{"at90s1200", AVR_ISA_1200, bfd_mach_avr1},
{"attiny11", AVR_ISA_AVR1, bfd_mach_avr1},
{"attiny12", AVR_ISA_AVR1, bfd_mach_avr1},
-@@ -237,6 +245,21 @@
- {"at90usb1287",AVR_ISA_AVR51, bfd_mach_avr51},
+@@ -216,6 +224,21 @@ static struct mcu_type_s mcu_types[] =
+ {"m3001b", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega2560", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
+ {"atxmega16a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega16d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
++ {"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
+ {"atxmega32d4", AVR_ISA_XMEGA, bfd_mach_avrxmega2},
-+ {"atxmega32a4", AVR_ISA_XMEGA, bfd_mach_avrxmega3},
+ {"atxmega64a3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64d3", AVR_ISA_XMEGA, bfd_mach_avrxmega4},
+ {"atxmega64a1", AVR_ISA_XMEGA, bfd_mach_avrxmega5},
{NULL, 0, 0}
};
-@@ -413,6 +436,11 @@
+@@ -393,6 +416,11 @@ 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"
" or immediate microcontroller name.\n"));
fprintf (stream,
_(" -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n"
-@@ -840,7 +868,12 @@
+@@ -820,7 +848,12 @@ avr_operand (struct avr_opcodes_s *opcod
if (*str == '+')
{
++str;
}
/* attiny26 can do "lpm" and "lpm r,Z" but not "lpm r,Z+". */
-@@ -957,6 +990,16 @@
+@@ -937,6 +970,16 @@ avr_operand (struct avr_opcodes_s *opcod
}
break;
case '?':
break;
-diff -uNdr binutils-2.21-orig.2/gas/doc/c-avr.texi binutils-2.21/gas/doc/c-avr.texi
---- binutils-2.21-orig.2/gas/doc/c-avr.texi 2010-04-09 05:48:54.000000000 +0200
-+++ binutils-2.21/gas/doc/c-avr.texi 2011-06-17 18:29:41.000000000 +0200
-@@ -85,6 +85,27 @@
+diff -Naurp gas/doc/c-avr.texi gas/doc/c-avr.texi
+--- gas/doc/c-avr.texi 2009-09-02 02:24:21.000000000 -0500
++++ gas/doc/c-avr.texi 2011-06-07 11:44:52.000000000 -0500
+@@ -80,6 +80,27 @@ atmega128rfa1, at90can128, at90usb1286,
Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
atmega2560, atmega2561).
@cindex @code{-mall-opcodes} command line option, AVR
@item -mall-opcodes
Accept all AVR opcodes, even if not supported by @code{-mmcu}.
-diff -uNdr binutils-2.21-orig.2/include/elf/avr.h binutils-2.21/include/elf/avr.h
---- binutils-2.21-orig.2/include/elf/avr.h 2010-04-15 12:26:08.000000000 +0200
-+++ binutils-2.21/include/elf/avr.h 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp include/elf/avr.h include/elf/avr.h
+--- include/elf/avr.h 2008-08-09 00:35:13.000000000 -0500
++++ include/elf/avr.h 2011-06-07 11:44:52.000000000 -0500
@@ -40,6 +40,13 @@
#define E_AVR_MACH_AVR5 5
#define E_AVR_MACH_AVR51 51
/* Relocations. */
START_RELOC_NUMBERS (elf_avr_reloc_type)
-diff -uNdr binutils-2.21-orig.2/include/opcode/avr.h binutils-2.21/include/opcode/avr.h
---- binutils-2.21-orig.2/include/opcode/avr.h 2010-04-15 12:26:09.000000000 +0200
-+++ binutils-2.21/include/opcode/avr.h 2011-06-17 18:29:41.000000000 +0200
-@@ -31,6 +31,8 @@
+diff -Naurp include/opcode/avr.h include/opcode/avr.h
+--- include/opcode/avr.h 2008-08-09 00:35:13.000000000 -0500
++++ include/opcode/avr.h 2011-06-07 11:44:52.000000000 -0500
+@@ -30,6 +30,8 @@
#define AVR_ISA_BRK 0x0400 /* device has BREAK (on-chip debug) */
#define AVR_ISA_EIND 0x0800 /* device has >128K program memory (none yet) */
#define AVR_ISA_MOVW 0x1000 /* device has MOVW */
#define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
#define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM)
-@@ -49,6 +51,8 @@
+@@ -48,6 +50,8 @@
#define AVR_ISA_94K (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX)
#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_AVR1 AVR_ISA_TINY1
#define AVR_ISA_AVR2 AVR_ISA_2xxx
-@@ -109,6 +113,7 @@
+@@ -108,6 +112,7 @@
L - signed pc relative offset from -2048 to 2047
h - absolute code address (call, jmp)
S - immediate value from 0 to 7 (S = s << 4)
? - use this opcode entry if no parameters, else use next opcode entry
Order is important - some binary opcodes have more than one name,
-@@ -169,7 +174,8 @@
+@@ -168,7 +173,8 @@ AVR_INSN (reti, "", "1001010100011000
AVR_INSN (sleep,"", "1001010110001000", 1, AVR_ISA_1200, 0x9588)
AVR_INSN (break,"", "1001010110011000", 1, AVR_ISA_BRK, 0x9598)
AVR_INSN (wdr, "", "1001010110101000", 1, AVR_ISA_1200, 0x95a8)
AVR_INSN (adc, "r,r", "000111rdddddrrrr", 1, AVR_ISA_1200, 0x1c00)
AVR_INSN (add, "r,r", "000011rdddddrrrr", 1, AVR_ISA_1200, 0x0c00)
-@@ -283,3 +289,6 @@
+@@ -282,3 +288,6 @@ AVR_INSN (st, "e,r", "100!001rrrrree-+
AVR_INSN (eicall, "", "1001010100011001", 1, AVR_ISA_EIND, 0x9519)
AVR_INSN (eijmp, "", "1001010000011001", 1, AVR_ISA_EIND, 0x9419)
+/* DES instruction for encryption and decryption */
+AVR_INSN (des, "E", "10010100EEEE1011", 1, AVR_ISA_DES, 0x940B)
+
-diff -uNdr binutils-2.21-orig.2/ld/Makefile.am binutils-2.21/ld/Makefile.am
---- binutils-2.21-orig.2/ld/Makefile.am 2010-11-03 04:22:01.000000000 +0100
-+++ binutils-2.21/ld/Makefile.am 2011-06-17 18:32:58.000000000 +0200
-@@ -162,6 +162,13 @@
- eavr5.c \
- eavr51.c \
- eavr6.c \
-+ eavrxmega1.o \
-+ eavrxmega2.o \
-+ eavrxmega3.o \
-+ eavrxmega4.o \
-+ eavrxmega5.o \
-+ eavrxmega6.o \
-+ eavrxmega7.o \
- ecoff_i860.c \
- ecoff_sparc.c \
- eelf32_spu.c \
-@@ -760,6 +767,34 @@
- $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
- ${GEN_DEPENDS}
- ${GENSCRIPTS} avr6 "$(tdir_avr2)"
-+eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
-+eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
-+eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
-+eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
-+eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
-+eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
-+eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega7 "$(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 -uNdr binutils-2.21-orig.2/ld/Makefile.in binutils-2.21/ld/Makefile.in
---- binutils-2.21-orig.2/ld/Makefile.in 2010-11-05 11:34:22.000000000 +0100
-+++ binutils-2.21/ld/Makefile.in 2011-06-17 18:33:50.000000000 +0200
-@@ -462,6 +462,13 @@
- eavr5.c \
- eavr51.c \
- eavr6.c \
-+ eavrxmega1.o \
-+ eavrxmega2.o \
-+ eavrxmega3.o \
-+ eavrxmega4.o \
-+ eavrxmega5.o \
-+ eavrxmega6.o \
-+ eavrxmega7.o \
- ecoff_i860.c \
- ecoff_sparc.c \
- eelf32_spu.c \
-@@ -2183,6 +2190,34 @@
- $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
- ${GEN_DEPENDS}
- ${GENSCRIPTS} avr6 "$(tdir_avr2)"
-+eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
-+eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
-+eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
-+eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
-+eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
-+eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
-+eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
-+ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
-+ ${GEN_DEPENDS}
-+ ${GENSCRIPTS} avrxmega7 "$(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 -uNdr binutils-2.21-orig.2/ld/configure.tgt binutils-2.21/ld/configure.tgt
---- binutils-2.21-orig.2/ld/configure.tgt 2010-12-01 12:03:47.000000000 +0100
-+++ binutils-2.21/ld/configure.tgt 2011-06-17 18:29:41.000000000 +0200
-@@ -111,7 +111,7 @@
+diff -Naurp ld/configure.tgt ld/configure.tgt
+--- ld/configure.tgt 2009-08-06 12:38:03.000000000 -0500
++++ ld/configure.tgt 2011-06-07 11:44:52.000000000 -0500
+@@ -110,7 +110,7 @@ xscale-*-coff) targ_emul=armcoff ;;
xscale-*-elf) targ_emul=armelf
;;
avr-*-*) targ_emul=avr2
;;
bfin-*-elf) targ_emul=elf32bfin;
targ_extra_emuls="elf32bfinfd"
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega1.sh binutils-2.21/ld/emulparams/avrxmega1.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega1.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega1.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega1.sh ld/emulparams/avrxmega1.sh
+--- ld/emulparams/avrxmega1.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega1.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:101
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega2.sh binutils-2.21/ld/emulparams/avrxmega2.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega2.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega2.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega2.sh ld/emulparams/avrxmega2.sh
+--- ld/emulparams/avrxmega2.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega2.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:102
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega3.sh binutils-2.21/ld/emulparams/avrxmega3.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega3.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega3.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega3.sh ld/emulparams/avrxmega3.sh
+--- ld/emulparams/avrxmega3.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega3.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:103
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega4.sh binutils-2.21/ld/emulparams/avrxmega4.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega4.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega4.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega4.sh ld/emulparams/avrxmega4.sh
+--- ld/emulparams/avrxmega4.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega4.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:104
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega5.sh binutils-2.21/ld/emulparams/avrxmega5.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega5.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega5.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega5.sh ld/emulparams/avrxmega5.sh
+--- ld/emulparams/avrxmega5.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega5.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:105
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega6.sh binutils-2.21/ld/emulparams/avrxmega6.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega6.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega6.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega6.sh ld/emulparams/avrxmega6.sh
+--- ld/emulparams/avrxmega6.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega6.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:106
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emulparams/avrxmega7.sh binutils-2.21/ld/emulparams/avrxmega7.sh
---- binutils-2.21-orig.2/ld/emulparams/avrxmega7.sh 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.21/ld/emulparams/avrxmega7.sh 2011-06-17 18:29:41.000000000 +0200
+diff -Naurp ld/emulparams/avrxmega7.sh ld/emulparams/avrxmega7.sh
+--- ld/emulparams/avrxmega7.sh 1969-12-31 18:00:00.000000000 -0600
++++ ld/emulparams/avrxmega7.sh 2011-06-07 11:44:52.000000000 -0500
@@ -0,0 +1,12 @@
+ARCH=avr:107
+MACHINE=
+DATA_ORIGIN=0x802000
+DATA_LENGTH=0xffa0
+EXTRA_EM_FILE=avrelf
-diff -uNdr binutils-2.21-orig.2/ld/emultempl/avrelf.em binutils-2.21/ld/emultempl/avrelf.em
---- binutils-2.21-orig.2/ld/emultempl/avrelf.em 2009-11-26 14:45:25.000000000 +0100
-+++ binutils-2.21/ld/emultempl/avrelf.em 2011-06-17 18:29:41.000000000 +0200
-@@ -71,8 +71,10 @@
+diff -Naurp ld/emultempl/avrelf.em ld/emultempl/avrelf.em
+--- ld/emultempl/avrelf.em 2009-09-02 02:25:35.000000000 -0500
++++ ld/emultempl/avrelf.em 2011-06-07 11:44:52.000000000 -0500
+@@ -71,8 +71,10 @@ avr_elf_${EMULATION_NAME}_before_allocat
gld${EMULATION_NAME}_before_allocation ();
avr_no_stubs = TRUE;
avr_elf_set_global_bfd_parameters ();
-diff -uNdr binutils-2.21-orig.2/opcodes/avr-dis.c binutils-2.21/opcodes/avr-dis.c
---- binutils-2.21-orig.2/opcodes/avr-dis.c 2008-11-06 13:03:24.000000000 +0100
-+++ binutils-2.21/opcodes/avr-dis.c 2011-06-17 18:29:41.000000000 +0200
-@@ -50,7 +50,7 @@
+diff -Naurp ld/Makefile.am ld/Makefile.am
+--- ld/Makefile.am 2010-02-22 02:07:01.000000000 -0600
++++ ld/Makefile.am 2011-06-07 11:44:52.000000000 -0500
+@@ -148,6 +148,13 @@ ALL_EMULATIONS = \
+ eavr5.o \
+ eavr51.o \
+ eavr6.o \
++ eavrxmega1.o \
++ eavrxmega2.o \
++ eavrxmega3.o \
++ eavrxmega4.o \
++ eavrxmega5.o \
++ eavrxmega6.o \
++ eavrxmega7.o \
+ ecoff_i860.o \
+ ecoff_sparc.o \
+ eelf32_spu.o \
+@@ -727,6 +734,34 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
+ ${GEN_DEPENDS}
+ ${GENSCRIPTS} avr6 "$(tdir_avr2)"
++eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
++eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
++eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
++eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
++eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
++eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
++eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega7 "$(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/Makefile.in ld/Makefile.in
+--- ld/Makefile.in 2010-03-03 08:06:21.000000000 -0600
++++ ld/Makefile.in 2011-06-07 11:44:52.000000000 -0500
+@@ -434,6 +434,13 @@ ALL_EMULATIONS = \
+ eavr5.o \
+ eavr51.o \
+ eavr6.o \
++ eavrxmega1.o \
++ eavrxmega2.o \
++ eavrxmega3.o \
++ eavrxmega4.o \
++ eavrxmega5.o \
++ eavrxmega6.o \
++ eavrxmega7.o \
+ ecoff_i860.o \
+ ecoff_sparc.o \
+ eelf32_spu.o \
+@@ -2069,6 +2076,34 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
+ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
+ ${GEN_DEPENDS}
+ ${GENSCRIPTS} avr6 "$(tdir_avr2)"
++eavrxmega1.c: $(srcdir)/emulparams/avrxmega1.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega1 "$(tdir_avr2)"
++eavrxmega2.c: $(srcdir)/emulparams/avrxmega2.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega2 "$(tdir_avr2)"
++eavrxmega3.c: $(srcdir)/emulparams/avrxmega3.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega3 "$(tdir_avr2)"
++eavrxmega4.c: $(srcdir)/emulparams/avrxmega4.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega4 "$(tdir_avr2)"
++eavrxmega5.c: $(srcdir)/emulparams/avrxmega5.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega5 "$(tdir_avr2)"
++eavrxmega6.c: $(srcdir)/emulparams/avrxmega6.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega6 "$(tdir_avr2)"
++eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
++ $(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
++ ${GEN_DEPENDS}
++ ${GENSCRIPTS} avrxmega7 "$(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 opcodes/avr-dis.c opcodes/avr-dis.c
+--- opcodes/avr-dis.c 2008-11-06 06:03:24.000000000 -0600
++++ opcodes/avr-dis.c 2011-06-07 11:44:52.000000000 -0500
+@@ -50,7 +50,7 @@ static const char * comment_start = "0x"
static int
avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constraint,
{
int ok = 1;
*sym = 0;
-@@ -118,8 +118,18 @@
+@@ -118,8 +118,18 @@ avr_operand (unsigned int insn, unsigned
case 'z':
*buf++ = 'Z';
- if (insn & 0x1)
-- *buf++ = '+';
+
+ /* Check for post-increment. */
+ char *s;
+ {
+ if (*s == '+')
+ {
-+ *buf++ = '+';
+ *buf++ = '+';
+ break;
+ }
+ }
*buf = '\0';
if (AVR_UNDEF_P (insn))
sprintf (comment, _("undefined"));
-@@ -226,6 +236,10 @@
- sprintf (comment, "%d", x);
+@@ -227,6 +237,10 @@ avr_operand (unsigned int insn, unsigned
}
break;
-+
+
+ case 'E':
+ sprintf (buf, "%d", (insn >> 4) & 15);
+ break;
-
++
case '?':
*buf = '\0';
-@@ -331,7 +345,8 @@
+ break;
+@@ -331,7 +345,8 @@ print_insn_avr (bfd_vma addr, disassembl
if (opcode->name)
{
insn2 = 0;
ok = 1;
-@@ -342,14 +357,14 @@
+@@ -342,14 +357,14 @@ print_insn_avr (bfd_vma addr, disassembl
cmd_len = 4;
}