Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: pedromfc@linux.ibm.com (Pedro Franco de Carvalho)
Cc: gdb-patches@sourceware.org, edjunior@gmail.com
Subject: Re: [PATCH v2 12/12] [PowerPC] Add support for HTM registers
Date: Fri, 10 Aug 2018 14:54:00 -0000	[thread overview]
Message-ID: <20180810145437.4042AD802AC@oc3748833570.ibm.com> (raw)
In-Reply-To: <20180810025210.6942-13-pedromfc@linux.ibm.com> from "Pedro Franco de Carvalho" at Aug 09, 2018 11:52:10 PM

Pedro Franco de Carvalho wrote:

> gdb/ChangeLog:
> YYYY-MM-DD  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
> 	    Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
> 
> 	* 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) <htm>: 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) <have_htm_spr, have_htm_core>:
> 	New fields.
> 	<have_htm_fpu, have_htm_altivec, have_htm_vsx>:
> 	Likewise.
> 	<ppc_cppr_regnum, ppc_cdscr_regnum, ppc_ctar_regnum>: Likewise.
> 	<ppc_cdl0_regnum, ppc_cvsr0_regnum, ppc_cefpr0_regnum>: Likewise.
> 	(enum) <PPC_TFHAR_REGNUM, PPC_TEXASR_REGNUM, PPC_TFIAR_REGNUM>:
> 	New enum fields.
> 	<PPC_CR0_REGNUM, PPC_CCR_REGNUM, PPC_CXER_REGNUM>: Likewise.
> 	<PPC_CLR_REGNUM, PPC_CCTR_REGNUM, PPC_CF0_REGNUM>: Likewise.
> 	<PPC_CFPSCR_REGNUM, PPC_CVR0_REGNUM, PPC_CVSCR_REGNUM>: Likewise.
> 	<PPC_CVRSAVE_REGNUM, PPC_CVSR0_UPPER_REGNUM>: Likewise.
> 	<PPC_CPPR_REGNUM, PPC_CDSCR_REGNUM>: Likewise.
> 	<PPC_CTAR_REGNUM>: 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  <pedromfc@linux.ibm.com>
> 
> 	* 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)
> 	<PPC_TDESC_ISA207_HTM_VSX>: 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  <pedromfc@linux.ibm.com>
> 
> 	* 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  <pedromfc@linux.ibm.com>
> 
> 	* 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, &regset[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


  parent reply	other threads:[~2018-08-10 14:54 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-10  2:52 [PATCH v2 00/12] GDB support for more powerpc registers on linux Pedro Franco de Carvalho
2018-08-10  2:52 ` [PATCH v2 08/12] [PowerPC] Add support for PPR and DSCR Pedro Franco de Carvalho
2018-08-10 14:39   ` Ulrich Weigand
2018-08-10 19:38   ` Pedro Alves
2018-08-10 20:09     ` Pedro Franco de Carvalho
2018-08-13 16:30       ` Pedro Alves
2018-08-14 20:15         ` Pedro Franco de Carvalho
2018-08-10  2:52 ` [PATCH v2 04/12] [PowerPC] Remove rs6000_pseudo_register_reggroup_p Pedro Franco de Carvalho
2018-08-10 14:33   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 05/12] [PowerPC] Fix two if statements in gdb/ppc-linux-nat.c Pedro Franco de Carvalho
2018-08-10 14:33   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 01/12] Zero-initialize linux note sections Pedro Franco de Carvalho
2018-08-10 14:27   ` Ulrich Weigand
2018-08-10 16:13   ` Tom Tromey
2018-08-10 18:11     ` Pedro Franco de Carvalho
2018-08-10 20:50       ` Tom Tromey
2018-08-10  2:52 ` [PATCH v2 11/12] [PowerPC] Reject tdescs with VSX and no FPU or Altivec Pedro Franco de Carvalho
2018-08-10 14:44   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 06/12] [PowerPC] Fix indentation in arch/ppc-linux-common.c Pedro Franco de Carvalho
2018-08-10 14:34   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 12/12] [PowerPC] Add support for HTM registers Pedro Franco de Carvalho
2018-08-10  7:34   ` Eli Zaretskii
2018-08-10 14:54   ` Ulrich Weigand [this message]
2018-08-10 15:12     ` [PATCH v2] " Pedro Franco de Carvalho
2018-08-10  2:52 ` [PATCH v2 09/12] [PowerPC] Add support for TAR Pedro Franco de Carvalho
2018-08-10  7:32   ` Eli Zaretskii
2018-08-10 18:12     ` Pedro Franco de Carvalho
2018-08-10 14:41   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 03/12] Add decfloat registers to float reggroup Pedro Franco de Carvalho
2018-08-10 14:35   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 02/12] [PowerPC] Don't zero-initialize vector register buffers Pedro Franco de Carvalho
2018-08-10 14:30   ` Ulrich Weigand
2018-08-10  2:52 ` [PATCH v2 07/12] [PowerPC] Refactor have_ initializers in rs6000-tdep.c Pedro Franco de Carvalho
2018-08-10 14:34   ` Ulrich Weigand
2018-08-10  3:19 ` [PATCH v2 10/12] [PowerPC] Add support for EBB and PMU registers Pedro Franco de Carvalho
2018-08-10  7:35   ` Eli Zaretskii
2018-08-10 14:44   ` Ulrich Weigand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180810145437.4042AD802AC@oc3748833570.ibm.com \
    --to=uweigand@de.ibm.com \
    --cc=edjunior@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedromfc@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox