From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 83358 invoked by alias); 10 Aug 2018 14:54:49 -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 83343 invoked by uid 89); 10 Aug 2018 14:54:48 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 10 Aug 2018 14:54:46 +0000 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w7AEnp4O052960 for ; Fri, 10 Aug 2018 10:54:44 -0400 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0b-001b2d01.pphosted.com with ESMTP id 2kscfs96yg-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 10 Aug 2018 10:54:44 -0400 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 10 Aug 2018 15:54:42 +0100 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 10 Aug 2018 15:54:39 +0100 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w7AEscI629098062 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 10 Aug 2018 14:54:38 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C5855AE057; Fri, 10 Aug 2018 17:54:28 +0100 (BST) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B2524AE063; Fri, 10 Aug 2018 17:54:28 +0100 (BST) Received: from oc3748833570.ibm.com (unknown [9.145.37.152]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 10 Aug 2018 17:54:28 +0100 (BST) Received: by oc3748833570.ibm.com (Postfix, from userid 1000) id 4042AD802AC; Fri, 10 Aug 2018 16:54:37 +0200 (CEST) Subject: Re: [PATCH v2 12/12] [PowerPC] Add support for HTM registers To: pedromfc@linux.ibm.com (Pedro Franco de Carvalho) Date: Fri, 10 Aug 2018 14:54:00 -0000 From: "Ulrich Weigand" Cc: gdb-patches@sourceware.org, edjunior@gmail.com In-Reply-To: <20180810025210.6942-13-pedromfc@linux.ibm.com> from "Pedro Franco de Carvalho" at Aug 09, 2018 11:52:10 PM MIME-Version: 1.0 x-cbid: 18081014-4275-0000-0000-000002A7F32F X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18081014-4276-0000-0000-000037B10557 Message-Id: <20180810145437.4042AD802AC@oc3748833570.ibm.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit X-SW-Source: 2018-08/txt/msg00281.txt.bz2 Pedro Franco de Carvalho wrote: > gdb/ChangeLog: > YYYY-MM-DD Edjunior Barbosa Machado > Pedro Franco de Carvalho > > * arch/ppc-linux-tdesc.h (tdesc_powerpc_isa207_htm_vsx32l) > (tdesc_powerpc_isa207_htm_vsx64l): Declare. > * arch/ppc-linux-common.h (PPC_LINUX_SIZEOF_TM_SPRREGSET) > (PPC32_LINUX_SIZEOF_CGPRREGSET, PPC64_LINUX_SIZEOF_CGPRREGSET) > (PPC_LINUX_SIZEOF_CFPRREGSET, PPC_LINUX_SIZEOF_CVMXREGSET) > (PPC_LINUX_SIZEOF_CVSXREGSET, PPC_LINUX_SIZEOF_CPPRREGSET) > (PPC_LINUX_SIZEOF_CDSCRREGSET, PPC_LINUX_SIZEOF_CTARREGSET): > Define. > (struct ppc_linux_features) : New field. > (ppc_linux_no_features): Add initializer for htm field. > * arch/ppc-linux-common.c (ppc_linux_match_description): Return > new tdescs. > * nat/ppc-linux.h (PPC_FEATURE2_HTM, NT_PPC_TM_CGPR) > (NT_PPC_TM_CFPR, NT_PPC_TM_CVMX, NT_PPC_TM_CVSX) > (NT_PPC_TM_SPR, NT_PPC_TM_CTAR, NT_PPC_TM_CPPR, NT_PPC_TM_CDSCR): > Define if not already defined. > * features/Makefile (WHICH): Add rs6000/powerpc-isa207-htm-vsx32l > and rs6000/powerpc-isa207-htm-vsx64l. > (XMLTOC): Add rs6000/powerpc-isa207-htm-vsx32l.xml and > rs6000/powerpc-isa207-htm-vsx64l.xml. > * features/rs6000/power-htm-spr.xml: New file. > * features/rs6000/power-htm-core.xml: New file. > * features/rs6000/power64-htm-core.xml: New file. > * features/rs6000/power-htm-fpu.xml: New file. > * features/rs6000/power-htm-altivec.xml: New file. > * features/rs6000/power-htm-vsx.xml: New file. > * features/rs6000/power-htm-ppr.xml: New file. > * features/rs6000/power-htm-dscr.xml: New file. > * features/rs6000/power-htm-tar.xml: New file. > * features/rs6000/powerpc-isa207-htm-vsx32l.xml: New file. > * features/rs6000/powerpc-isa207-htm-vsx64l.xml: New file. > * features/rs6000/powerpc-isa207-htm-vsx32l.c: Generate. > * features/rs6000/powerpc-isa207-htm-vsx64l.c: Generate. > * regformats/rs6000/powerpc-isa207-htm-vsx32l.dat: Generate. > * regformats/rs6000/powerpc-isa207-htm-vsx64l.dat: Generate. > * ppc-linux-nat.c (fetch_register, fetch_ppc_registers): Call > fetch_regset with HTM regsets. > (store_register, store_ppc_registers): Call store_regset with HTM > regsets. > (ppc_linux_nat_target::read_description): Set htm field in the > features struct if needed. > * ppc-linux-tdep.c: Include > features/rs6000/powerpc-isa207-htm-vsx32l.c and > features/rs6000/powerpc-isa207-htm-vsx64l.c. > (ppc32_regmap_tm_spr, ppc32_regmap_cgpr, ppc64_le_regmap_cgpr) > (ppc64_be_regmap_cgpr, ppc32_regmap_cfpr, ppc32_le_regmap_cvmx) > (ppc32_be_regmap_cvmx, ppc32_regmap_cvsx, ppc32_regmap_cppr) > (ppc32_regmap_cdscr, ppc32_regmap_ctar): New globals. > (ppc32_linux_tm_sprregset, ppc32_linux_cgprregset) > (ppc64_be_linux_cgprregset, ppc64_le_linux_cgprregset) > (ppc32_linux_cfprregset, ppc32_le_linux_cvmxregset) > (ppc32_be_linux_cvmxregset, ppc32_linux_cvsxregset) > (ppc32_linux_cpprregset, ppc32_linux_cdscrregset) > (ppc32_linux_ctarregset): New globals. > (ppc_linux_cgprregset, ppc_linux_cvmxregset): New functions. > (ppc_linux_iterate_over_regset_sections): Call back with the htm > regsets. > (ppc_linux_core_read_description): Check if the tm spr section is > present and set htm in the features struct. > (_initialize_ppc_linux_tdep): Call > initialize_tdesc_powerpc_isa207_htm_vsx32l and > initialize_tdesc_powerpc_isa207_htm_vsx64l. > * ppc-linux-tdep.h (ppc_linux_cgprregset, ppc_linux_cvmxregset): > Declare. > (ppc32_linux_tm_sprregset, ppc32_linux_cfprregset) > (ppc32_linux_cvsxregset, ppc32_linux_cpprregset) > (ppc32_linux_cdscrregset, ppc32_linux_ctarregset): Declare. > * ppc-tdep.h (struct gdbarch_tdep) : > New fields. > : > Likewise. > : Likewise. > : Likewise. > (enum) : > New enum fields. > : Likewise. > : Likewise. > : Likewise. > : Likewise. > : Likewise. > : Likewise. > (PPC_IS_TMSPR_REGNUM, PPC_IS_CKPTGP_REGNUM, PPC_IS_CKPTFP_REGNUM) > (PPC_IS_CKPTVMX_REGNUM, PPC_IS_CKPTVSX_REGNUM): Define. > * rs6000-tdep.c (IS_CDFP_PSEUDOREG, IS_CVSX_PSEUDOREG) > (IS_CEFP_PSEUDOREG): Define. > (rs6000_register_name): Hide the upper halves of checkpointed VSX > registers. Return names for the checkpointed DFP, VSX, and EFP > pseudo registers. > (rs6000_pseudo_register_type): Remove initial assert and raise an > internal error in the else clause instead. Return types for the > checkpointed DFP, VSX, and EFP pseudo registers. > (dfp_pseudo_register_read, dfp_pseudo_register_write): Handle > checkpointed DFP pseudo registers. > (vsx_pseudo_register_read, vsx_pseudo_register_write): Handle > checkpointed VSX pseudo registers. > (efp_pseudo_register_read, efp_pseudo_register_write): Rename > from efpr_pseudo_register_read and > efpr_pseudo_register_write. Handle checkpointed EFP pseudo > registers. > (rs6000_pseudo_register_read, rs6000_pseudo_register_write): > Handle checkpointed DFP, VSX, and EFP registers. > (dfp_ax_pseudo_register_collect, vsx_ax_pseudo_register_collect) > (efp_ax_pseudo_register_collect): New functions. > (rs6000_ax_pseudo_register_collect): Move DFP, VSX and EFP pseudo > register logic to new functions. Handle checkpointed DFP, VSX, > and EFP pseudo registers. > (rs6000_gdbarch_init): Look for and validate the htm features. > Include checkpointed DFP, VSX and EFP pseudo-registers. > > gdb/gdbserver/ChangeLog: > YYYY-MM-DD Pedro Franco de Carvalho > > * configure.srv (ipa_ppc_linux_regobj): Add > powerpc-isa207-htm-vsx32l-ipa.o and > powerpc-isa207-htm-vsx64l-ipa.o. > (powerpc*-*-linux*): Add powerpc-isa207-htm-vsx32l.o and > powerpc-isa207-htm-vsx64l.o to srv_regobj. Add > rs6000/power-htm-spr.xml, rs6000/power-htm-core.xml, > rs6000/power64-htm-core.xml, rs6000/power-htm-fpu.xml, > rs6000/power-htm-altivec.xml, rs6000/power-htm-vsx.xml, > rs6000/power-htm-ppr.xml, rs6000/power-htm-dscr.xml, > rs6000/power-htm-tar.xml, rs6000/powerpc-isa207-htm-vsx32l.xml, > and rs6000/powerpc-isa207-htm-vsx64l.xml to srv_xmlfiles. > * linux-ppc-tdesc-init.h (enum ppc_linux_tdesc) > : New enum value. > (init_registers_powerpc_isa207_htm_vsx32l) > (init_registers_powerpc_isa207_htm_vsx64l): Declare. > * linux-ppc-low.c (ppc_fill_tm_sprregset, ppc_store_tm_sprregset) > (ppc_store_tm_cgprregset, ppc_store_tm_cfprregset) > (ppc_store_tm_cvrregset, ppc_store_tm_cvsxregset) > (ppc_store_tm_cpprregset, ppc_store_tm_cdscrregset) > (ppc_store_tm_ctarregset): New functions. > (ppc_regsets): Add entries for HTM regsets. > (ppc_arch_setup): Set htm in features struct when needed. Set > sizes for the HTM regsets. > (ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA207_HTM_VSX. > (initialize_low_arch): Call > init_registers_powerpc_isa207_htm_vsx32l and > init_registers_powerpc_isa207_htm_vsx64l. > * linux-ppc-ipa.c (get_ipa_tdesc): Handle > PPC_TDESC_ISA207_HTM_VSX. > (initialize_low_tracepoint): Call > init_registers_powerpc_isa207_htm_vsx32l and > init_registers_powerpc_isa207_htm_vsx64l. > > gdb/testsuite/ChangeLog: > YYYY-MM-DD Pedro Franco de Carvalho > > * gdb.arch/powerpc-htm-regs.c: New file. > * gdb.arch/powerpc-htm-regs.exp: New file. > > gdb/doc/ChangeLog: > YYYY-MM-DD Pedro Franco de Carvalho > > * gdb.texinfo (PowerPC Features): Describe new features > "org.gnu.gdb.power.htm.spr", "org.gnu.gdb.power.htm.core", > "org.gnu.gdb.power.htm.fpu", "org.gnu.gdb.power.htm.altivec", > "org.gnu.gdb.power.htm.vsx", "org.gnu.gdb.power.htm.ppr", > "org.gnu.gdb.power.htm.dscr", "org.gnu.gdb.power.htm.tar". This is OK, with a few minor changes listed below. > static void > +ppc_fill_tm_sprregset (struct regcache *regcache, void *buf) > +{ > + int i, base; > + char *regset = (char *) buf; > + > + base = find_regno (regcache->tdesc, "tfhar"); > + for (i = 0; i < 3; i++) > + collect_register (regcache, base + i, ®set[i*8]); Formatting: should be "i * 8" (also a few more instances below). > +static void > +ppc_store_tm_sprregset (struct regcache *regcache, const void *buf) > +{ > + int i, base; > + char *regset = (char *) buf; Should be "const char *" to avoid casting const away. > +ppc_store_tm_cgprregset (struct regcache *regcache, const void *buf) > +{ > + int i, base, size, endian_offset; > + char *regset = (char *) buf; Likewise. > +ppc_store_tm_cfprregset (struct regcache *regcache, const void *buf) > +{ > + int i, base; > + char *regset = (char *) buf; Likewise. > +ppc_store_tm_cvrregset (struct regcache *regcache, const void *buf) > +{ > + int i, base; > + char *regset = (char *) buf; Likewise. Thanks, Ulrich -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain Ulrich.Weigand@de.ibm.com