Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: pedromfc@linux.vnet.ibm.com (Pedro Franco de Carvalho)
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 5/8] [PowerPC] Fix access to VSCR in linux targets
Date: Wed, 16 May 2018 14:06:00 -0000	[thread overview]
Message-ID: <20180516140403.C603FD80322@oc3748833570.ibm.com> (raw)
In-Reply-To: <20180510195840.17734-6-pedromfc@linux.vnet.ibm.com> from "Pedro Franco de Carvalho" at May 10, 2018 04:58:37 PM

Pedro Franco de Carvalho wrote:

> gdb/ChangeLog:
> yyyy-mm-dd  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
> 
> 	* ppc-linux-tdep.c (ppc_linux_collect_vrregset): New function.
> 	(ppc_linux_vrregset) : New function.
> 	(ppc32_le_linux_vrregmap, ppc32_be_linux_vrregmap)
> 	(ppc32_le_linux_vrregset, ppc32_be_linux_vrregset): New globals.
> 	(ppc32_linux_vrregset): Remove.
> 	(ppc_linux_iterate_over_regset_sections): Call ppc_linux_vrregset
> 	and use result instead of ppc32_linux_vrregset.
> 	* ppc-linux-tdep.h (ppc_linux_vrregset): New declaration.
> 	* ppc-linux-nat.c: Include regset.h.
> 	(gdb_vrregset_t): Adjust comment to account for little-endian
> 	mode.
> 	(supply_vrregset, fill_vrregset): Remove.
> 	(fetch_altivec_register, store_altivec_register): Remove.
> 	(fetch_altivec_registers): Add regno parameter. Get regset using
> 	ppc_linux_vrregset. Use regset to supply registers.
> 	(store_altivec_registers): Add regno parameter. Get regset using
> 	ppc_linux_vrregset. Use regset to collect registers.
> 	(fetch_register): Call fetch_altivec_registers instead of
> 	fetch_altivec_register.
> 	(store_register): Call store_altivec_registers instead of
> 	store_altivec_register.
> 	(fetch_ppc_registers): Call fetch_altivec_registers with -1 for
> 	the new regno parameter.
> 	(store_ppc_registers): Call store_altivec_registers with -1 for
> 	the new regno parameter.
> 
> gdb/gdbserver/ChangeLog:
> yyyy-mm-dd  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
> 
> 	* linux-ppc-low.c (ppc_fill_vrregset): Add vscr_offset variable.
> 	Set vscr_offset to 0 in little-endian mode and 12 in big-endian
> 	mode. Call collect_register_by_name with vscr using
> 	vscr_offset. Zero-pad vscr and vrsave fields in collector buffer.
> 	(ppc_store_vrregset): Add and set vscr_offset variable as in
> 	ppc_fill_vrregset. Call supply_register_by_name with vscr using
> 	vscr_offset.

I agree with the general direction of this patch.  A few comments:

> +  vrregset->supply_regset(vrregset, regcache, regno, &regs,
> +			  PPC_LINUX_SIZEOF_VRREGSET);

Formatting (space before '(').

> +static void
> +ppc_linux_collect_vrregset (const struct regset *regset,
> +			    const struct regcache *regcache,
> +			    int regnum, void *buf, size_t len)
> +{
> +  gdb_byte *vrregs = (gdb_byte *) buf;
> +
> +  /* Zero-pad the unused bytes in the fields for vscr and vrsave
> +     in case they get displayed somewhere (e.g. in core files).  */
> +  if (regnum == PPC_VSCR_REGNUM || regnum == -1)
> +    memset (&vrregs[32 * 16], 0, 16);
> +
> +  if (regnum == PPC_VRSAVE_REGNUM || regnum == -1)
> +    memset (&vrregs[33 * 16], 0, 16);
> +
> +  regcache_collect_regset (regset, regcache, regnum, buf, len);
> +}

I'm wondering if we shouldn't have the common regcache_collect_regset
routine zero out areas covered by REGCACHE_MAP_SKIP?  Then we wouldn't
need this extra routine here.

> -static const struct regset ppc32_linux_vrregset = {
> -  &ppc32_linux_reg_offsets,
> -  ppc_supply_vrregset,
> -  ppc_collect_vrregset

This removes all users of ppc_supply_vrregset / ppc_collect_vrregset,
right?  Then those functions should go away as well, together with
all their associates data, in particular the v*_offset fields in
struct ppc_reg_offsets ...

> +static const struct regcache_map_entry ppc32_le_linux_vrregmap[] =
> +  {
> +      { 32, PPC_VR0_REGNUM, 16 },
> +      { 1, PPC_VSCR_REGNUM, 16 },
> +      { 1, PPC_VRSAVE_REGNUM, 16 },
> +      { 0 }
> +  };
> +
> +static const struct regcache_map_entry ppc32_be_linux_vrregmap[] =
> +  {
> +      { 32, PPC_VR0_REGNUM, 16 },
> +      { 1, REGCACHE_MAP_SKIP, 12},
> +      { 1, PPC_VSCR_REGNUM, 4 },
> +      { 1, PPC_VRSAVE_REGNUM, 16 },
> +      { 0 }
> +  };

This looks weirdly asymmetric ... shouldn't we then use
REGCACHE_MAP_SKIP for both LE and BE cases?  In fact, it would
probably make sense to make VRSAVE also a 4-byte field + skip.

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  Ulrich.Weigand@de.ibm.com


  reply	other threads:[~2018-05-16 14:04 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-10 19:59 [PATCH 0/8] [PowerPC] Miscellaneous fixes for register access Pedro Franco de Carvalho
2018-05-10 19:59 ` [PATCH 3/8] [PowerPC] Disable regsets using zero sizes in gdbserver Pedro Franco de Carvalho
2018-05-16 16:17   ` Ulrich Weigand
2018-05-10 19:59 ` [PATCH 4/8] [PowerPC] Consolidate linux vector regset sizes Pedro Franco de Carvalho
2018-05-16 16:35   ` Ulrich Weigand
2018-05-10 19:59 ` [PATCH 1/8] [PowerPC] Consolidate linux target description selection Pedro Franco de Carvalho
2018-05-16 14:05   ` Ulrich Weigand
2018-05-16 22:50     ` Pedro Franco de Carvalho
2018-05-17  8:28       ` Ulrich Weigand
2018-05-10 20:00 ` [PATCH 8/8] [PowerPC] Recognize isa205 in linux core files Pedro Franco de Carvalho
2018-05-16 15:53   ` Ulrich Weigand
2018-05-16 23:32     ` Pedro Franco de Carvalho
2018-05-17 10:22       ` Ulrich Weigand
2018-05-21 20:46         ` Pedro Franco de Carvalho
2018-05-22 12:48           ` Ulrich Weigand
2018-05-22 14:33             ` Pedro Franco de Carvalho
2018-05-10 20:33 ` [PATCH 6/8] [PowerPC] Fix VSX registers " Pedro Franco de Carvalho
2018-05-16 14:18   ` Ulrich Weigand
2018-05-10 20:33 ` [PATCH 2/8] [PowerPC] Consolidate wordsize getter between native and gdbserver Pedro Franco de Carvalho
2018-05-16 15:54   ` Ulrich Weigand
2018-05-10 21:46 ` [PATCH 5/8] [PowerPC] Fix access to VSCR in linux targets Pedro Franco de Carvalho
2018-05-16 14:06   ` Ulrich Weigand [this message]
2018-05-17 21:25     ` Pedro Franco de Carvalho
2018-05-18 15:37       ` Ulrich Weigand
2018-05-21 20:46     ` Pedro Franco de Carvalho
2018-05-22 12:56       ` Ulrich Weigand
2018-05-10 22:25 ` [PATCH 7/8] [PowerPC] Fix inclusion of dfp pseudoregs in tdep Pedro Franco de Carvalho
2018-05-16 14:18   ` Ulrich Weigand
2018-05-21 20:46 ` [PATCH v2 1/8] [PowerPC] Consolidate linux target description selection Pedro Franco de Carvalho
2018-05-21 20:46   ` [PATCH v2 4/8] [PowerPC] Consolidate linux vector regset sizes Pedro Franco de Carvalho
2018-05-22 12:48     ` Ulrich Weigand
2018-05-21 20:46   ` [PATCH v2 2/8] [PowerPC] Consolidate wordsize getter between native and gdbserver Pedro Franco de Carvalho
2018-05-22 12:56     ` Ulrich Weigand
2018-05-21 20:46   ` [PATCH v2 3/8] [PowerPC] Disable regsets using zero sizes in gdbserver Pedro Franco de Carvalho
2018-05-22 12:48     ` Ulrich Weigand
2018-05-21 23:45   ` [PATCH v2 5/8] [PowerPC] Fix access to VSCR in linux targets Pedro Franco de Carvalho
2018-05-22 12:56     ` Ulrich Weigand
2018-05-21 23:55   ` [PATCH v2 8/8] [PowerPC] Recognize isa205 in linux core files Pedro Franco de Carvalho
2018-05-22 13:34     ` Ulrich Weigand
2018-05-21 23:56   ` [PATCH v2 7/8] [PowerPC] Fix inclusion of dfp pseudoregs in tdep Pedro Franco de Carvalho
2018-05-22 12:56     ` Ulrich Weigand
2018-05-22  0:54   ` [PATCH v2 6/8] [PowerPC] Fix VSX registers in linux core files Pedro Franco de Carvalho
2018-05-22 13:46     ` Ulrich Weigand
2018-05-22 12:48   ` [PATCH v2 1/8] [PowerPC] Consolidate linux target description selection 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=20180516140403.C603FD80322@oc3748833570.ibm.com \
    --to=uweigand@de.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedromfc@linux.vnet.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