From patchwork Wed Feb 6 18:24:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Wilson X-Patchwork-Id: 31335 Received: (qmail 9940 invoked by alias); 6 Feb 2019 18:24:51 -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 9932 invoked by uid 89); 6 Feb 2019 18:24:51 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=H*RU:209.85.210.194, Hx-spam-relays-external:209.85.210.194, regs X-HELO: mail-pf1-f194.google.com Received: from mail-pf1-f194.google.com (HELO mail-pf1-f194.google.com) (209.85.210.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 06 Feb 2019 18:24:50 +0000 Received: by mail-pf1-f194.google.com with SMTP id h3so3465375pfg.1 for ; Wed, 06 Feb 2019 10:24:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id; bh=yzJVuNXB3VUqKyH9ajcMIT7Nrz+rRao5OPs8u8rcDwA=; b=HVsqFqsaidAyNnbbyA8o4DgYwFEFREx1dNMmVsaIq5FqgjYI6Ay5+3/aYVkMJb0cYM OyilDTCVdvE9pARpYVfYuYCu7Ie1UR8+iOR+NSkWTx+ZOC/pSxeYIEP39s5Z1asPTe7y IeL18bvX1dkQsqlvI+Wm0BahHOKirrYIRGZSMFvywRlOca24lsXEV2stQFmAQbimqwWe TO4+JI5gJu5HGbY7Y3R84SZOgDrg5utrWI0sU5ZgAJ0Gf+Be5d3hVLeSZpTi13OvnraG owQIIAEYibDAr8fgglJ4FxVEcRBRUy+45XWo4zOEmHid1xMol7sCeDHnuWGQH7fy3gpO oRTw== Return-Path: Received: from rohan.sifive.com ([12.206.222.5]) by smtp.gmail.com with ESMTPSA id l8sm13056711pfb.68.2019.02.06.10.24.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 10:24:48 -0800 (PST) From: Jim Wilson To: gdb-patches@sourceware.org Cc: Jim Wilson Subject: [PATCH] RISC-V: Add FP register core file support. Date: Wed, 6 Feb 2019 10:24:24 -0800 Message-Id: <20190206182424.2868-1-jimw@sifive.com> This adds fp reg support similar to the existing general reg support. This fixes one gdb testsuite failure FAIL: gdb.base/gcore.exp: corefile restored system registers which fails without the patch because fcsr was missing. Otherwise, no regressions with riscv64-linux native testsuite run. gdb/ * riscv-linux-tdep.c (riscv_linux_fregmap): New. (riscv_linux_fregset): New. (riscv_linux_iterate_over_regset_sections): Call cb for .reg2 section. --- gdb/riscv-linux-tdep.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/gdb/riscv-linux-tdep.c b/gdb/riscv-linux-tdep.c index e1f8e76567..91061c5b3e 100644 --- a/gdb/riscv-linux-tdep.c +++ b/gdb/riscv-linux-tdep.c @@ -37,6 +37,16 @@ static const struct regcache_map_entry riscv_linux_gregmap[] = { 0 } }; +/* Define the FP register mapping. The kernel puts the 32 FP regs first, and + then FCSR. */ + +static const struct regcache_map_entry riscv_linux_fregmap[] = +{ + { 32, RISCV_FIRST_FP_REGNUM, 0 }, + { 1, RISCV_CSR_FCSR_REGNUM, 0 }, + { 0 } +}; + /* Define the general register regset. */ static const struct regset riscv_linux_gregset = @@ -44,6 +54,13 @@ static const struct regset riscv_linux_gregset = riscv_linux_gregmap, regcache_supply_regset, regcache_collect_regset }; +/* Define the FP register regset. */ + +static const struct regset riscv_linux_fregset = +{ + riscv_linux_fregmap, regcache_supply_regset, regcache_collect_regset +}; + /* Define hook for core file support. */ static void @@ -54,8 +71,10 @@ riscv_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, { cb (".reg", (32 * riscv_isa_xlen (gdbarch)), (32 * riscv_isa_xlen (gdbarch)), &riscv_linux_gregset, NULL, cb_data); - - /* TODO: Add FP register support. */ + /* The kernel is adding 8 bytes for FCSR. */ + cb (".reg2", (32 * riscv_isa_flen (gdbarch)) + 8, + (32 * riscv_isa_flen (gdbarch)) + 8, + &riscv_linux_fregset, NULL, cb_data); } /* Signal trampoline support. */