PR gas/15282
authorNick Clifton <nickc@redhat.com>
Thu, 21 Mar 2013 14:47:34 +0000 (14:47 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 21 Mar 2013 14:47:34 +0000 (14:47 +0000)
* tc-avr.c (mcu_has_3_byte_pc): New function.
(tc_cfi_frame_initial_instructions): Call it to find return
address size.

gas/ChangeLog
gas/config/tc-avr.c

index bbc5774005bf5a2a3acf3825c38556476efd755e..4e09946371df970bd6113357c79011a7dfcaf6ab 100644 (file)
@@ -1,3 +1,10 @@
+2013-03-21  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       PR gas/15282
+       * tc-avr.c (mcu_has_3_byte_pc): New function.
+       (tc_cfi_frame_initial_instructions): Call it to find return
+       address size.
+
 2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
 
        PR gas/15095
index 0bc972e4b02e761102e3bff747a2a56dabc242cd..e47741777eb7c0d990bfc6a229941dcdb4c49a40 100644 (file)
@@ -1,7 +1,6 @@
 /* tc-avr.c -- Assembler code for the ATMEL AVR
 
-   Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009,
-   2010, 2012, 2013  Free Software Foundation, Inc.
+   Copyright 1999-2013 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
    This file is part of GAS, the GNU Assembler.
@@ -1587,11 +1586,21 @@ avr_cons_fix_new (fragS *frag,
   pexp_mod_data = &exp_mod_data[0];
 }
 
+static bfd_boolean
+mcu_has_3_byte_pc (void)
+{
+  int mach = avr_mcu->mach; 
+
+  return mach == bfd_mach_avr6 
+    || mach == bfd_mach_avrxmega6 
+    || mach == bfd_mach_avrxmega7;
+}
+
 void
 tc_cfi_frame_initial_instructions (void)
 {
   /* AVR6 pushes 3 bytes for calls.  */
-  int return_size = (avr_mcu->mach == bfd_mach_avr6 ? 3 : 2);
+  int return_size = (mcu_has_3_byte_pc () ? 3 : 2);
 
   /* The CFA is the caller's stack location before the call insn.  */
   /* Note that the stack pointer is dwarf register number 32.  */