From d669d37f8d626f00e8b815527f35017e93a0c00b Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 14 Feb 2008 13:04:29 +0000 Subject: [PATCH] PR gas/2626 * avr.h (AVR_ISA_2xxe): Define. * config/tc-avr.c (mcu_types): Change the ISA tyoe of the attiny26 to AVR_ISA_2xxe. (avr_operand): Disallow post-increment addressing in the lpm instruction for the attiny26. --- gas/ChangeLog | 8 ++++++++ gas/config/tc-avr.c | 10 ++++++++-- include/opcode/ChangeLog | 5 +++++ include/opcode/avr.h | 4 +++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index cd82737ca0e..38ae551a665 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2008-02-14 Hakan Ardo + + PR gas/2626 + * config/tc-avr.c (mcu_types): Change the ISA tyoe of the attiny26 + to AVR_ISA_2xxe. + (avr_operand): Disallow post-increment addressing in the lpm + instruction for the attiny26. + 2008-02-13 Jan Beulich * config/tc-i386.c (parse_real_register): Don't return 'FLAT' diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c index 1e6f7e693de..678160dbd37 100644 --- a/gas/config/tc-avr.c +++ b/gas/config/tc-avr.c @@ -1,6 +1,6 @@ /* tc-avr.c -- Assembler code for the ATMEL AVR - Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 + Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Contributed by Denis Chertykov @@ -77,7 +77,7 @@ static struct mcu_type_s mcu_types[] = {"at90s2333", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 4433 */ {"at90s2343", AVR_ISA_2xxx, bfd_mach_avr2}, {"attiny22", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 2343 */ - {"attiny26", AVR_ISA_2xxx, bfd_mach_avr2}, + {"attiny26", AVR_ISA_2xxe, bfd_mach_avr2}, {"at90s4433", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s4414", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8515 */ {"at90s4434", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8535 */ @@ -765,6 +765,12 @@ avr_operand (struct avr_opcodes_s *opcode, ++str; op_mask |= 1; } + + /* attiny26 can do "lpm" and "lpm r,Z" but not "lpm r,Z+". */ + if (!avr_opt.all_opcodes + && (op_mask & 0x0001) + && !(avr_mcu->isa & AVR_ISA_MOVW)) + as_bad (_("postincrement not supported")); break; case 'b': diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 9edf24ce84d..b5e77b852ad 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,8 @@ +2008-02-14 Hakan Ardo + + PR gas/2626 + * avr.h (AVR_ISA_2xxe): Define. + 2008-02-04 Adam Nemet * mips.h: Update copyright. diff --git a/include/opcode/avr.h b/include/opcode/avr.h index 7f7ee0c35ab..8038b4f7f89 100644 --- a/include/opcode/avr.h +++ b/include/opcode/avr.h @@ -1,6 +1,6 @@ /* Opcode table for the Atmel AVR micro controllers. - Copyright 2000, 2001, 2004, 2006 Free Software Foundation, Inc. + Copyright 2000, 2001, 2004, 2006, 2008 Free Software Foundation, Inc. Contributed by Denis Chertykov This program is free software; you can redistribute it and/or modify @@ -34,6 +34,8 @@ #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM) #define AVR_ISA_PWMx (AVR_ISA_M8 | AVR_ISA_BRK) #define AVR_ISA_2xxx (AVR_ISA_TINY1 | 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) #define AVR_ISA_TINY2 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX | \ AVR_ISA_SPM | AVR_ISA_BRK) -- 2.30.2