From patchwork Wed Apr 12 18:37:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Baldwin X-Patchwork-Id: 20001 Received: (qmail 101041 invoked by alias); 12 Apr 2017 18:37:45 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 100175 invoked by uid 89); 12 Apr 2017 18:37:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-23.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_PASS, SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy=Supply X-HELO: mail.baldwin.cx Received: from bigwig.baldwin.cx (HELO mail.baldwin.cx) (96.47.65.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 12 Apr 2017 18:37:42 +0000 Received: from ralph.baldwin.cx.net (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 53EFA10A82D for ; Wed, 12 Apr 2017 14:37:42 -0400 (EDT) From: John Baldwin To: gdb-patches@sourceware.org Subject: [PATCH 2/4] Use mips_regnum instead of constants for FreeBSD/mips register operations. Date: Wed, 12 Apr 2017 11:37:25 -0700 Message-Id: <20170412183727.22483-3-jhb@FreeBSD.org> In-Reply-To: <20170412183727.22483-1-jhb@FreeBSD.org> References: <20170412183727.22483-1-jhb@FreeBSD.org> X-IsSubscribed: yes 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 69c3efa317..73d24d2c9d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 2017-04-11 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-04-11 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 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 . 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); }