This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v2 2/4] Use mips_regnum instead of constants for FreeBSD/mips register operations.
- From: John Baldwin <jhb at FreeBSD dot org>
- To: gdb-patches at sourceware dot org
- Date: Tue, 25 Apr 2017 13:59:43 -0700
- Subject: [PATCH v2 2/4] Use mips_regnum instead of constants for FreeBSD/mips register operations.
- Authentication-results: sourceware.org; auth=none
- References: <20170425205945.81845-1-jhb@FreeBSD.org>
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 | 10 ++++++++++
gdb/mips-fbsd-tdep.c | 29 ++++++++++++++++-------------
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eb26e8a7dc..10023d20ae 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,15 @@
2017-04-25 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-04-25 John Baldwin <jhb@FreeBSD.org>
+
* mips-fbsd-nat.c (getregs_supplies): Fix upper bound comparison.
(getpfpregs_supplies): New function.
(mips_fbsd_fetch_inferior_registers): Remove early exit and use
diff --git a/gdb/mips-fbsd-tdep.c b/gdb/mips-fbsd-tdep.c
index 00fae0ec60..d5bec3c157 100644
--- a/gdb/mips-fbsd-tdep.c
+++ b/gdb/mips-fbsd-tdep.c
@@ -29,11 +29,6 @@
#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);
}
--
2.11.0