[PATCH v2 5/8] [PowerPC] Fix access to VSCR in linux targets

Ulrich Weigand uweigand@de.ibm.com
Tue May 22 12:56:00 GMT 2018


Pedro Franco de Carvalho wrote:

> gdb/ChangeLog:
> yyyy-mm-dd  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
> 
> 	* ppc-tdep.h (struct ppc_reg_offsets): Remove vector register
> 	offset fields.
> 	* ppc-fbsd-tdep.c (ppc32_fbsd_reg_offsets): Remove initializers
> 	for vector register offset fields.
> 	(ppc64_fbsd_reg_offsets): Likewise.
> 	* ppc-nbsd-tdep.c (_initialize_ppcnbsd_tdep): Remove assignment
> 	to vector register offset fields.
> 	* ppc-obsd-tdep.c (_initialize_ppcnbsd_tdep): Remove assignment
> 	to vector register offset fields.
> 	* ppc-obsd-nat.c (_initialize_ppcobsd_nat): Remove assignment to
> 	vector register offset fields.
> 	* rs6000-aix-tdep.c (rs6000_aix32_reg_offsets): Remove
> 	initializers for vector register offset fields.
> 	(rs6000_aix64_reg_offsets): Likewise.
> 	* rs6000-tdep.c (ppc_vrreg_offset): Remove.
> 	(ppc_supply_vrregset): Remove.
> 	(ppc_collect_vrregset): Remove.
> 	* 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.
> 	(ppc32_linux_reg_offsets): Remove initializers for vector register
> 	offset fields.
> 	(ppc64_linux_reg_offsets): Likewise.
> 	* 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.

This is OK.

Thanks,
Ulrich

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



More information about the Gdb-patches mailing list