From f7241d4f27cd59357a75bf802e9ffa7d95036deb Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Tue, 18 Apr 2017 10:49:44 -0700 Subject: [PATCH] Use mips_regnum instead of constants for FreeBSD/mips register operations. 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 a271021..c8bd6fd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 2017-05-23 John Baldwin + * 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 + * 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 00fae0e..d5bec3c 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 . 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.7.4