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, ®s,
> + 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
next prev parent 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