Use mips_regnum instead of constants for FreeBSD/mips register operations.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 18 Apr 2017 17:49:44 +0000 (10:49 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 23 May 2017 19:03:16 +0000 (12:03 -0700)
gdb/ChangeLog:

* mips-fbsd-tdep.c (MIPS_PC_REGNUM): Remove.
(MIPS_FP0_REGNUM): Remove.
(MIPS_FSR_REGNUM): Remove.
(mips_fbsd_supply_fpregs): Use mips_regnum.
(mips_fbsd_supply_gregs): Likewise.
(mips_fbsd_collect_fpregs): Likewise.
(mips_fbsd_collect_gregs): Likewise.

gdb/ChangeLog
gdb/mips-fbsd-tdep.c

index a271021a5dcb30213772107513249dfb6a60d860..c8bd6fd783e98736a15c418ddb113af0d5425b01 100644 (file)
@@ -1,3 +1,13 @@
+2017-05-23  John Baldwin  <jhb@FreeBSD.org>
+
+       * mips-fbsd-tdep.c (MIPS_PC_REGNUM): Remove.
+       (MIPS_FP0_REGNUM): Remove.
+       (MIPS_FSR_REGNUM): Remove.
+       (mips_fbsd_supply_fpregs): Use mips_regnum.
+       (mips_fbsd_supply_gregs): Likewise.
+       (mips_fbsd_collect_fpregs): Likewise.
+       (mips_fbsd_collect_gregs): Likewise.
+
 2017-05-23  John Baldwin  <jhb@FreeBSD.org>
 
        * mips-fbsd-nat.c (getregs_supplies): Fix upper bound comparison.
index 00fae0ec60ddc9e645d3236efe29f2f9e9ceab5c..d5bec3c1571931d1fde57e51fbe77bfa31454259 100644 (file)
 
 #include "solib-svr4.h"
 
-/* Shorthand for some register numbers used below.  */
-#define MIPS_PC_REGNUM  MIPS_EMBED_PC_REGNUM
-#define MIPS_FP0_REGNUM MIPS_EMBED_FP0_REGNUM
-#define MIPS_FSR_REGNUM MIPS_EMBED_FP0_REGNUM + 32
-
 /* Core file support. */
 
 /* Number of registers in `struct reg' from <machine/reg.h>.  The
@@ -108,13 +103,16 @@ void
 mips_fbsd_supply_fpregs (struct regcache *regcache, int regnum,
                         const void *fpregs, size_t regsize)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   const gdb_byte *regs = (const gdb_byte *) fpregs;
-  int i;
+  int i, fp0num, fsrnum;
 
-  for (i = MIPS_FP0_REGNUM; i <= MIPS_FSR_REGNUM; i++)
+  fp0num = mips_regnum (gdbarch)->fp0;
+  fsrnum = mips_regnum (gdbarch)->fp_control_status;
+  for (i = fp0num; i <= fsrnum; i++)
     if (regnum == i || regnum == -1)
       mips_fbsd_supply_reg (regcache, i,
-                           regs + (i - MIPS_FP0_REGNUM) * regsize, regsize);
+                           regs + (i - fp0num) * regsize, regsize);
 }
 
 /* Supply the general-purpose registers stored in GREGS to REGCACHE.
@@ -125,10 +123,11 @@ void
 mips_fbsd_supply_gregs (struct regcache *regcache, int regnum,
                        const void *gregs, size_t regsize)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   const gdb_byte *regs = (const gdb_byte *) gregs;
   int i;
 
-  for (i = 0; i <= MIPS_PC_REGNUM; i++)
+  for (i = 0; i <= mips_regnum (gdbarch)->pc; i++)
     if (regnum == i || regnum == -1)
       mips_fbsd_supply_reg (regcache, i, regs + i * regsize, regsize);
 }
@@ -141,13 +140,16 @@ void
 mips_fbsd_collect_fpregs (const struct regcache *regcache, int regnum,
                          void *fpregs, size_t regsize)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   gdb_byte *regs = (gdb_byte *) fpregs;
-  int i;
+  int i, fp0num, fsrnum;
 
-  for (i = MIPS_FP0_REGNUM; i <= MIPS_FSR_REGNUM; i++)
+  fp0num = mips_regnum (gdbarch)->fp0;
+  fsrnum = mips_regnum (gdbarch)->fp_control_status;
+  for (i = fp0num; i <= fsrnum; i++)
     if (regnum == i || regnum == -1)
       mips_fbsd_collect_reg (regcache, i,
-                            regs + (i - MIPS_FP0_REGNUM) * regsize, regsize);
+                            regs + (i - fp0num) * regsize, regsize);
 }
 
 /* Collect the general-purpose registers from REGCACHE and store them
@@ -158,10 +160,11 @@ void
 mips_fbsd_collect_gregs (const struct regcache *regcache, int regnum,
                         void *gregs, size_t regsize)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   gdb_byte *regs = (gdb_byte *) gregs;
   int i;
 
-  for (i = 0; i <= MIPS_PC_REGNUM; i++)
+  for (i = 0; i <= mips_regnum (gdbarch)->pc; i++)
     if (regnum == i || regnum == -1)
       mips_fbsd_collect_reg (regcache, i, regs + i * regsize, regsize);
 }