From patchwork Thu Mar 9 22:19:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivo Raisr X-Patchwork-Id: 19503 Received: (qmail 15074 invoked by alias); 9 Mar 2017 22:19:20 -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 15058 invoked by uid 89); 9 Mar 2017 22:19:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-23.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_SORBS_SPAM, RP_MATCHES_RCVD, SPF_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy=ccr, UD:v, xccz, nxm X-HELO: userp1040.oracle.com Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 09 Mar 2017 22:19:18 +0000 Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v29MJGcG015409 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 9 Mar 2017 22:19:16 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v29MJFX9006398 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 9 Mar 2017 22:19:16 GMT Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v29MJFMh029040 for ; Thu, 9 Mar 2017 22:19:15 GMT Received: from [192.168.168.173] (/95.85.233.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 09 Mar 2017 14:19:15 -0800 Subject: Re: [PATCH] [PR tdep/20928] Decode properly flags of %ccr register on sparc64 To: gdb-patches@sourceware.org References: <37ce765b-9064-a766-c843-a25b69030528@oracle.com> <705eae25-cf4e-fc81-dd8e-1e622b340486@oracle.com> From: Ivo Raisr Message-ID: Date: Thu, 9 Mar 2017 23:19:12 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <705eae25-cf4e-fc81-dd8e-1e622b340486@oracle.com> X-IsSubscribed: yes Ping. Can I get +1 for this small patch? I. On 7.3.2017 14:05, Ivo Raisr wrote: > Decode properly flags of %ccr register on sparc64. > While at it, decode also properly one-bit flags for %fsr (accrued > and current exception flags were mixed up). > > Tested successfully on sparc64-linux-gnu. > > ChangeLog entry: > 2017-03-07 Ivo Raisr > > PR tdep/20928 > * gdb/sparc-tdep.h (gdbarch_tdep) : New field. > * gdb/sparc64-tdep.c (sparc64_ccr_type): New function. > (sparc64_fsr_type): Fix %fsr decoding. > > > The patch and ChangeLog entry are attached. > I. 2017-03-07 Ivo Raisr PR tdep/20928 * gdb/sparc-tdep.h (gdbarch_tdep) : New field. * gdb/sparc64-tdep.c (sparc64_ccr_type): New function. (sparc64_fsr_type): Fix %fsr decoding. commit 45deb2dd37000fc4f51529e0fc5d206cbbeba983 Author: Ivo Raisr Date: Tue Mar 7 10:21:02 2017 +0100 Decode properly flags of %ccr register on sparc64. While at it, decode also properly one-bit flags for %fsr (accrued and current exception flags were mixed up). Tested successfully on sparc64-linux-gnu. ChangeLog entry: 2017-03-07 Ivo Raisr PR tdep/20928 * gdb/sparc-tdep.h (gdbarch_tdep) : New field. * gdb/sparc64-tdep.c (sparc64_ccr_type): New function. (sparc64_fsr_type): Fix %fsr decoding. diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 268272e..d51802d 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -88,6 +88,7 @@ struct gdbarch_tdep /* ISA-specific data types. */ struct type *sparc_psr_type; struct type *sparc_fsr_type; + struct type *sparc64_ccr_type; struct type *sparc64_pstate_type; struct type *sparc64_fsr_type; struct type *sparc64_fprs_type; diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c index 43beffb..4c70177 100644 --- a/gdb/sparc64-tdep.c +++ b/gdb/sparc64-tdep.c @@ -173,6 +173,31 @@ sparc64_pstate_type (struct gdbarch *gdbarch) } static struct type * +sparc64_ccr_type (struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (tdep->sparc64_ccr_type == NULL) + { + struct type *type; + + type = arch_flags_type (gdbarch, "builtin_type_sparc64_ccr", 8); + append_flags_type_flag (type, 0, "icc.c"); + append_flags_type_flag (type, 1, "icc.v"); + append_flags_type_flag (type, 2, "icc.z"); + append_flags_type_flag (type, 3, "icc.n"); + append_flags_type_flag (type, 4, "xcc.c"); + append_flags_type_flag (type, 5, "xcc.v"); + append_flags_type_flag (type, 6, "xcc.z"); + append_flags_type_flag (type, 7, "xcc.n"); + + tdep->sparc64_ccr_type = type; + } + + return tdep->sparc64_ccr_type; +} + +static struct type * sparc64_fsr_type (struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); @@ -182,16 +207,16 @@ sparc64_fsr_type (struct gdbarch *gdbarch) struct type *type; type = arch_flags_type (gdbarch, "builtin_type_sparc64_fsr", 8); - append_flags_type_flag (type, 0, "NXA"); - append_flags_type_flag (type, 1, "DZA"); - append_flags_type_flag (type, 2, "UFA"); - append_flags_type_flag (type, 3, "OFA"); - append_flags_type_flag (type, 4, "NVA"); - append_flags_type_flag (type, 5, "NXC"); - append_flags_type_flag (type, 6, "DZC"); - append_flags_type_flag (type, 7, "UFC"); - append_flags_type_flag (type, 8, "OFC"); - append_flags_type_flag (type, 9, "NVC"); + append_flags_type_flag (type, 0, "NXC"); + append_flags_type_flag (type, 1, "DZC"); + append_flags_type_flag (type, 2, "UFC"); + append_flags_type_flag (type, 3, "OFC"); + append_flags_type_flag (type, 4, "NVC"); + append_flags_type_flag (type, 5, "NXA"); + append_flags_type_flag (type, 6, "DZA"); + append_flags_type_flag (type, 7, "UFA"); + append_flags_type_flag (type, 8, "OFA"); + append_flags_type_flag (type, 9, "NVA"); append_flags_type_flag (type, 22, "NS"); append_flags_type_flag (type, 23, "NXM"); append_flags_type_flag (type, 24, "DZM"); @@ -318,7 +343,7 @@ sparc64_pseudo_register_type (struct gdbarch *gdbarch, int regnum) if (regnum == SPARC64_ASI_REGNUM) return builtin_type (gdbarch)->builtin_int64; if (regnum == SPARC64_CCR_REGNUM) - return builtin_type (gdbarch)->builtin_int64; + return sparc64_ccr_type (gdbarch); if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D62_REGNUM) return builtin_type (gdbarch)->builtin_double; if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q60_REGNUM)