2004-04-29 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / mipsnbsd-tdep.c
index 7776d465ad1cdaad41ae4e90ca941ef8ecc4f0aa..18147dc858b31dc7effc90e491e4febc64997646 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for MIPS systems running NetBSD.
-   Copyright 2002 Free Software Foundation, Inc.
+   Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
    Contributed by Wasabi Systems, Inc.
 
    This file is part of GDB.
@@ -28,6 +28,7 @@
 
 #include "nbsd-tdep.h"
 #include "mipsnbsd-tdep.h"
+#include "mips-tdep.h"
 
 #include "solib-svr4.h"
 
@@ -46,7 +47,7 @@ mipsnbsd_supply_reg (char *regs, int regno)
          if (CANNOT_FETCH_REGISTER (i))
            supply_register (i, NULL);
          else
-            supply_register (i, regs + (i * MIPS_REGSIZE));
+            supply_register (i, regs + (i * mips_isa_regsize (current_gdbarch)));
         }
     }
 }
@@ -58,7 +59,7 @@ mipsnbsd_fill_reg (char *regs, int regno)
 
   for (i = 0; i <= PC_REGNUM; i++)
     if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
-      regcache_collect (i, regs + (i * MIPS_REGSIZE));
+      regcache_collect (i, regs + (i * mips_isa_regsize (current_gdbarch)));
 }
 
 void
@@ -66,14 +67,16 @@ mipsnbsd_supply_fpreg (char *fpregs, int regno)
 {
   int i;
 
-  for (i = FP0_REGNUM; i <= FCRIR_REGNUM; i++)
+  for (i = FP0_REGNUM;
+       i <= mips_regnum (current_gdbarch)->fp_implementation_revision;
+       i++)
     {
       if (regno == i || regno == -1)
        {
          if (CANNOT_FETCH_REGISTER (i))
            supply_register (i, NULL);
          else
-            supply_register (i, fpregs + ((i - FP0_REGNUM) * MIPS_REGSIZE));
+            supply_register (i, fpregs + ((i - FP0_REGNUM) * mips_isa_regsize (current_gdbarch)));
        }
     }
 }
@@ -83,9 +86,10 @@ mipsnbsd_fill_fpreg (char *fpregs, int regno)
 {
   int i;
 
-  for (i = FP0_REGNUM; i <= FCRCS_REGNUM; i++)
+  for (i = FP0_REGNUM; i <= mips_regnum (current_gdbarch)->fp_control_status;
+       i++)
     if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
-      regcache_collect (i, fpregs + ((i - FP0_REGNUM) * MIPS_REGSIZE));
+      regcache_collect (i, fpregs + ((i - FP0_REGNUM) * mips_isa_regsize (current_gdbarch)));
 }
 
 static void
@@ -105,7 +109,7 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
   mipsnbsd_supply_reg (regs, -1);
 
   /* Floating point registers.  */
-  mipsnbsd_supply_fpreg (regs, -1);
+  mipsnbsd_supply_fpreg (fpregs, -1);
 }
 
 static void
@@ -232,7 +236,7 @@ mipsnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
    success.  */
 
 #define NBSD_MIPS_JB_PC                        (2 * 4)
-#define NBSD_MIPS_JB_ELEMENT_SIZE      MIPS_REGSIZE
+#define NBSD_MIPS_JB_ELEMENT_SIZE      mips_isa_regsize (current_gdbarch)
 #define NBSD_MIPS_JB_OFFSET            (NBSD_MIPS_JB_PC * \
                                         NBSD_MIPS_JB_ELEMENT_SIZE)
 
@@ -250,7 +254,7 @@ mipsnbsd_get_longjmp_target (CORE_ADDR *pc)
                          NBSD_MIPS_JB_ELEMENT_SIZE))
     return 0;
 
-  *pc = extract_address (buf, NBSD_MIPS_JB_ELEMENT_SIZE);
+  *pc = extract_unsigned_integer (buf, NBSD_MIPS_JB_ELEMENT_SIZE);
 
   return 1;
 }
@@ -259,14 +263,14 @@ static int
 mipsnbsd_cannot_fetch_register (int regno)
 {
   return (regno == ZERO_REGNUM
-         || regno == FCRIR_REGNUM);
+         || regno == mips_regnum (current_gdbarch)->fp_implementation_revision);
 }
 
 static int
 mipsnbsd_cannot_store_register (int regno)
 {
   return (regno == ZERO_REGNUM
-         || regno == FCRIR_REGNUM);
+         || regno == mips_regnum (current_gdbarch)->fp_implementation_revision);
 }
 
 /* NetBSD/mips uses a slightly different link_map structure from the
@@ -341,7 +345,7 @@ static void
 mipsnbsd_init_abi (struct gdbarch_info info,
                    struct gdbarch *gdbarch)
 {
-  set_gdbarch_pc_in_sigtramp (gdbarch, mipsnbsd_pc_in_sigtramp);
+  set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, mipsnbsd_pc_in_sigtramp);
 
   set_gdbarch_get_longjmp_target (gdbarch, mipsnbsd_get_longjmp_target);
 
@@ -362,6 +366,6 @@ _initialize_mipsnbsd_tdep (void)
   gdbarch_register_osabi (bfd_arch_mips, 0, GDB_OSABI_NETBSD_ELF,
                          mipsnbsd_init_abi);
 
-  add_core_fns (&mipsnbsd_core_fns);
-  add_core_fns (&mipsnbsd_elfcore_fns);
+  deprecated_add_core_fns (&mipsnbsd_core_fns);
+  deprecated_add_core_fns (&mipsnbsd_elfcore_fns);
 }
This page took 0.026367 seconds and 4 git commands to generate.