From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@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, 09 Mar 2017 22:19:00 -0000 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> Content-Type: multipart/mixed; boundary="------------9616FE0DA56BE41F4D1F055F" X-IsSubscribed: yes X-SW-Source: 2017-03/txt/msg00125.txt.bz2 This is a multi-part message in MIME format. --------------9616FE0DA56BE41F4D1F055F Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 617 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. --------------9616FE0DA56BE41F4D1F055F Content-Type: text/x-patch; name="ccr_decoding.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ccr_decoding.patch" Content-length: 3880 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) --------------9616FE0DA56BE41F4D1F055F Content-Type: text/plain; charset=UTF-8; name="ChangeLog.entry" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ChangeLog.entry" Content-length: 305 MjAxNy0wMy0wNyAgSXZvIFJhaXNyICA8aXZvLnJhaXNyQG9yYWNsZS5jb20+ CgoJUFIgdGRlcC8yMDkyOAoJKiBnZGIvc3BhcmMtdGRlcC5oIChnZGJhcmNo X3RkZXApIDxzcGFyYzY0X2Njcl90eXBlPjogTmV3IGZpZWxkLgoJKiBnZGIv c3BhcmM2NC10ZGVwLmMgKHNwYXJjNjRfY2NyX3R5cGUpOiBOZXcgZnVuY3Rp b24uCgkoc3BhcmM2NF9mc3JfdHlwZSk6IEZpeCAlZnNyIGRlY29kaW5nLgo= --------------9616FE0DA56BE41F4D1F055F--