This commit was manufactured by cvs2svn to create branch 'gdb_7_0-branch'.
[external/binutils.git] / gdb / m32r-rom.c
index efed449..78ce499 100644 (file)
@@ -1,8 +1,8 @@
 /* Remote debugging interface to m32r and mon2000 ROM monitors for GDB, 
    the GNU debugger.
 
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007, 2008,
+   2009 Free Software Foundation, Inc.
 
    Adapted by Michael Snyder of Cygnus Support.
 
@@ -10,7 +10,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -19,9 +19,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This module defines communication with the Renesas m32r monitor */
 
@@ -39,7 +37,7 @@
 #include <time.h>              /* for time_t */
 #include "gdb_string.h"
 #include "objfiles.h"          /* for ALL_OBJFILES etc. */
-#include "inferior.h"          /* for write_pc() */
+#include "inferior.h"
 #include <ctype.h>
 #include "regcache.h"
 
@@ -80,6 +78,7 @@ m32r_load_section (bfd *abfd, asection *s, void *obj)
   unsigned int *data_count = obj;
   if (s->flags & SEC_LOAD)
     {
+      int addr_size = gdbarch_addr_bit (target_gdbarch) / 8;
       bfd_size_type section_size = bfd_section_size (abfd, s);
       bfd_vma section_base = bfd_section_lma (abfd, s);
       unsigned int buffer, i;
@@ -87,11 +86,12 @@ m32r_load_section (bfd *abfd, asection *s, void *obj)
       *data_count += section_size;
 
       printf_filtered ("Loading section %s, size 0x%lx lma ",
-                      bfd_section_name (abfd, s), section_size);
-      deprecated_print_address_numeric (section_base, 1, gdb_stdout);
+                      bfd_section_name (abfd, s),
+                      (unsigned long) section_size);
+      fputs_filtered (paddress (target_gdbarch, section_base), gdb_stdout);
       printf_filtered ("\n");
       gdb_flush (gdb_stdout);
-      monitor_printf ("%s mw\r", paddr_nz (section_base));
+      monitor_printf ("%s mw\r", phex_nz (section_base, addr_size));
       for (i = 0; i < section_size; i += 4)
        {
          QUIT;
@@ -147,7 +147,7 @@ m32r_load (char *filename, int from_tty)
 
        printf_filtered ("Loading section %s, size 0x%lx vma ",
                         bfd_section_name (abfd, s), section_size);
-       deprecated_print_address_numeric (section_base, 1, gdb_stdout);
+       fputs_filtered (paddress (target_gdbarch, section_base), gdb_stdout);
        printf_filtered ("\n");
        gdb_flush (gdb_stdout);
        monitor_printf ("%x mw\r", section_base);
@@ -169,13 +169,15 @@ m32r_load (char *filename, int from_tty)
     }
 #endif
   gettimeofday (&end_time, NULL);
-  printf_filtered ("Start address 0x%lx\n", bfd_get_start_address (abfd));
+  printf_filtered ("Start address 0x%lx\n",
+                  (unsigned long) bfd_get_start_address (abfd));
   print_transfer_performance (gdb_stdout, data_count, 0, &start_time,
                              &end_time);
 
   /* Finally, make the PC point at the start address */
   if (exec_bfd)
-    write_pc (bfd_get_start_address (exec_bfd));
+    regcache_write_pc (get_current_regcache (),
+                      bfd_get_start_address (exec_bfd));
 
   inferior_ptid = null_ptid;   /* No process now */
 
@@ -215,6 +217,7 @@ m32r_supply_register (struct regcache *regcache, char *regname,
 {
   int regno;
   int num_regs = sizeof (m32r_regnames) / sizeof (m32r_regnames[0]);
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
 
   for (regno = 0; regno < num_regs; regno++)
     if (strncmp (regname, m32r_regnames[regno], regnamelen) == 0)
@@ -277,10 +280,10 @@ m32r_supply_register (struct regcache *regcache, char *regname,
 
          if (regno == SPI_REGNUM && !stackmode)        /* SP == SPI */
            monitor_supply_register (regcache,
-                                    gdbarch_sp_regnum (current_gdbarch), val);
+                                    gdbarch_sp_regnum (gdbarch), val);
          else if (regno == SPU_REGNUM && stackmode)    /* SP == SPU */
            monitor_supply_register (regcache,
-                                    gdbarch_sp_regnum (current_gdbarch), val);
+                                    gdbarch_sp_regnum (gdbarch), val);
        }
     }
 }
@@ -524,14 +527,18 @@ m32r_upload_command (char *args, int from_tty)
            data_count += section_size;
 
            printf_filtered ("Loading section %s, size 0x%lx lma ",
-                            bfd_section_name (abfd, s), section_size);
-           deprecated_print_address_numeric (section_base, 1, gdb_stdout);
+                            bfd_section_name (abfd, s),
+                            (unsigned long) section_size);
+           fputs_filtered (paddress (target_gdbarch, section_base),
+                           gdb_stdout);
            printf_filtered ("\n");
            gdb_flush (gdb_stdout);
          }
       /* Finally, make the PC point at the start address */
-      write_pc (bfd_get_start_address (abfd));
-      printf_filtered ("Start address 0x%lx\n", bfd_get_start_address (abfd));
+      regcache_write_pc (get_current_regcache (),
+                        bfd_get_start_address (abfd));
+      printf_filtered ("Start address 0x%lx\n", 
+                      (unsigned long) bfd_get_start_address (abfd));
       print_transfer_performance (gdb_stdout, data_count, 0, &start_time,
                                  &end_time);
     }
@@ -547,6 +554,9 @@ m32r_upload_command (char *args, int from_tty)
   clear_symtab_users ();
 }
 
+/* Provide a prototype to silence -Wmissing-prototypes.  */
+extern initialize_file_ftype _initialize_m32r_rom;
+
 void
 _initialize_m32r_rom (void)
 {