Add FR450 support.
authorKevin Buettner <kevinb@redhat.com>
Sat, 13 Mar 2004 01:24:20 +0000 (01:24 +0000)
committerKevin Buettner <kevinb@redhat.com>
Sat, 13 Mar 2004 01:24:20 +0000 (01:24 +0000)
gdb/ChangeLog
gdb/frv-tdep.c
gdb/frv-tdep.h

index 8627e404a7e264467a3e3731943044efd0aa5b67..22d2d9c48d3c71d7b8ddf4f56ce3f22c6f8ea243 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-12  Kevin Buettner  <kevinb@redhat.com>
+
+       * frv-tdep.c (set_variant_scratch_registers): New function.
+       (frv_gdbarch_init): Add FR450 support.
+       * frv-tdep.h (scr0_regnum, scr1_regnum, scr2_regnum, scr3_regnum):
+       New constants.
+
 2004-03-12  Kevin Buettner  <kevinb@redhat.com>
 
        * frv-tdep.c, frv-tdep.h  (first_gpr_regnum, sp_regnum, fp_regnum)
index 6fd82f9406ed909459d6648d5fad7c55c4f910fd..3b0fc1ac23b5dc90ccb377250cbb1c5494d8fb8f 100644 (file)
@@ -239,6 +239,15 @@ set_variant_abi_fdpic (struct gdbarch_tdep *var)
   var->register_names[fdpic_loadmap_interp_regnum] = xstrdup ("loadmap_interp");
 }
 
+static void
+set_variant_scratch_registers (struct gdbarch_tdep *var)
+{
+  var->register_names[scr0_regnum] = xstrdup ("scr0");
+  var->register_names[scr1_regnum] = xstrdup ("scr1");
+  var->register_names[scr2_regnum] = xstrdup ("scr2");
+  var->register_names[scr3_regnum] = xstrdup ("scr3");
+}
+
 static const char *
 frv_register_name (int reg)
 {
@@ -1362,6 +1371,7 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       break;
 
     case bfd_mach_fr400:
+    case bfd_mach_fr450:
       set_variant_num_gprs (var, 32);
       set_variant_num_fprs (var, 32);
       break;
@@ -1378,6 +1388,9 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   if (elf_flags & EF_FRV_FDPIC)
     set_variant_abi_fdpic (var);
 
+  if (elf_flags & EF_FRV_CPU_FR450)
+    set_variant_scratch_registers (var);
+
   gdbarch = gdbarch_alloc (&info, var);
 
   set_gdbarch_short_bit (gdbarch, 16);
@@ -1448,6 +1461,7 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       break;
 
     case bfd_mach_fr400:
+    case bfd_mach_fr450:
       /* fr400-style hardware debugging support.  */
       var->num_hw_watchpoints = 2;
       var->num_hw_breakpoints = 4;
index 691d7a547cdbc6f25f72f94cb7c9ad0deb1658f3..e33fb117cf5925692ece94a37ae4c0735d5d0c7a 100644 (file)
@@ -58,6 +58,10 @@ enum {
   dbar1_regnum = 138,
   dbar2_regnum = 139,
   dbar3_regnum = 140,
+  scr0_regnum = 141,
+  scr1_regnum = 142,
+  scr2_regnum = 143,
+  scr3_regnum = 144,
   lr_regnum = 145,
   lcr_regnum = 146,
   iacc0h_regnum = 147,