diff options
author | Andreas Arnez <arnez@linux.vnet.ibm.com> | 2015-03-02 10:57:39 +0100 |
---|---|---|
committer | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2015-03-02 10:57:39 +0100 |
commit | 550bdf96cae94bc3e6c0f7e7e9a6793399dd8fe6 (patch) | |
tree | 68d72370537e2550d65ea73e88dff90020414d82 /gdb/ChangeLog | |
parent | 446899e472025a04017064f5172105cec70eb357 (diff) | |
download | gdb-550bdf96cae94bc3e6c0f7e7e9a6793399dd8fe6.zip gdb-550bdf96cae94bc3e6c0f7e7e9a6793399dd8fe6.tar.gz gdb-550bdf96cae94bc3e6c0f7e7e9a6793399dd8fe6.tar.bz2 |
S390: Add vector register support to gdb
Recognize S/390 targets with the new vector feature and present their
vector registers appropriately: as 32 new 128-bit wide registers
v0-v31, where the first 16 embed the floating point registers f0-f15.
Each of the full registers v0-v15 is modelled as a pseudo register.
gdb/ChangeLog:
* s390-linux-nat.c (have_regset_vxrs): New static variable.
(s390_linux_fetch_inferior_registers): Handle vector registers, if
present.
(s390_linux_store_inferior_registers): Likewise.
(s390_get_hwcap): Remove function. Embed its logic...
(s390_read_description): ...here. Yield a target description with
vector registers if applicable.
* s390-linux-tdep.c: Include "features/s390-vx-linux64.c",
"features/s390-tevx-linux64.c", "features/s390x-vx-linux64.c", and
"features/s390x-tevx-linux64.c".
(struct gdbarch_tdep) <v0_full_regnum>: New field.
(s390_dwarf_regmap): Add vector registers. Remove bogus entries
for "GNU/Linux-specific registers".
(s390_dwarf_reg_r0l): New enum value.
(s390_dwarf_reg_to_regnum): Support vector registers.
(s390_adjust_frame_regnum): Adjust pseudo DWARF register numbers
of GPR lower halves.
(regnum_is_vxr_full): New function.
(s390_register_name): New function.
(s390_pseudo_register_name): Handle v0-v15, which are composed of
f0-f15 and v0l-v15l.
(s390_pseudo_register_type): Likewise.
(s390_pseudo_register_read): Likewise.
(s390_pseudo_register_write): Likewise.
(s390_value_from_register): Account for the fact that values are
placed left-justified in vector registers.
(s390_pseudo_register_reggroup_p): Add pseudo registers v0-v15 to
the vector reggroup and omit them from the general reggroup.
(s390_regmap_vxrs_low, s390_regmap_vxrs_high): New register maps.
(s390_vxrs_low_regset, s390_vxrs_high_regset): New regsets.
(s390_iterate_over_regset_sections): Add iterations for the two
new vector regsets.
(s390_core_read_description): Yield a target description with
vector registers if applicable.
(s390_gdbarch_init): Handle target descriptions with vector
registers. Add "register_name" gdbarch method.
(_initialize_s390_tdep): Call new tdesc initialization functions.
* s390-linux-tdep.h (HWCAP_S390_VX): New macro.
(S390_V0_LOWER_REGNUM, S390_V1_LOWER_REGNUM, S390_V2_LOWER_REGNUM)
(S390_V3_LOWER_REGNUM, S390_V4_LOWER_REGNUM, S390_V5_LOWER_REGNUM)
(S390_V6_LOWER_REGNUM, S390_V7_LOWER_REGNUM, S390_V8_LOWER_REGNUM)
(S390_V9_LOWER_REGNUM, S390_V10_LOWER_REGNUM)
(S390_V11_LOWER_REGNUM, S390_V12_LOWER_REGNUM)
(S390_V13_LOWER_REGNUM, S390_V14_LOWER_REGNUM)
(S390_V15_LOWER_REGNUM, S390_V16_REGNUM, S390_V17_REGNUM)
(S390_V18_REGNUM, S390_V19_REGNUM, S390_V20_REGNUM)
(S390_V21_REGNUM, S390_V22_REGNUM, S390_V23_REGNUM)
(S390_V24_REGNUM, S390_V25_REGNUM, S390_V26_REGNUM)
(S390_V27_REGNUM, S390_V28_REGNUM, S390_V29_REGNUM)
(S390_V30_REGNUM, S390_V31_REGNUM): New macros.
(S390_NUM_REGS): Adjust value.
(s390_vxrs_low_regset, s390_vxrs_high_regset): Declare.
(tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64)
(tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): Likewise.
* NEWS: Announce S/390 vector register support.
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r-- | gdb/ChangeLog | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2defa0c..232b90b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,63 @@ 2015-03-02 Andreas Arnez <arnez@linux.vnet.ibm.com> + * s390-linux-nat.c (have_regset_vxrs): New static variable. + (s390_linux_fetch_inferior_registers): Handle vector registers, if + present. + (s390_linux_store_inferior_registers): Likewise. + (s390_get_hwcap): Remove function. Embed its logic... + (s390_read_description): ...here. Yield a target description with + vector registers if applicable. + * s390-linux-tdep.c: Include "features/s390-vx-linux64.c", + "features/s390-tevx-linux64.c", "features/s390x-vx-linux64.c", and + "features/s390x-tevx-linux64.c". + (struct gdbarch_tdep) <v0_full_regnum>: New field. + (s390_dwarf_regmap): Add vector registers. Remove bogus entries + for "GNU/Linux-specific registers". + (s390_dwarf_reg_r0l): New enum value. + (s390_dwarf_reg_to_regnum): Support vector registers. + (s390_adjust_frame_regnum): Adjust pseudo DWARF register numbers + of GPR lower halves. + (regnum_is_vxr_full): New function. + (s390_register_name): New function. + (s390_pseudo_register_name): Handle v0-v15, which are composed of + f0-f15 and v0l-v15l. + (s390_pseudo_register_type): Likewise. + (s390_pseudo_register_read): Likewise. + (s390_pseudo_register_write): Likewise. + (s390_value_from_register): Account for the fact that values are + placed left-justified in vector registers. + (s390_pseudo_register_reggroup_p): Add pseudo registers v0-v15 to + the vector reggroup and omit them from the general reggroup. + (s390_regmap_vxrs_low, s390_regmap_vxrs_high): New register maps. + (s390_vxrs_low_regset, s390_vxrs_high_regset): New regsets. + (s390_iterate_over_regset_sections): Add iterations for the two + new vector regsets. + (s390_core_read_description): Yield a target description with + vector registers if applicable. + (s390_gdbarch_init): Handle target descriptions with vector + registers. Add "register_name" gdbarch method. + (_initialize_s390_tdep): Call new tdesc initialization functions. + * s390-linux-tdep.h (HWCAP_S390_VX): New macro. + (S390_V0_LOWER_REGNUM, S390_V1_LOWER_REGNUM, S390_V2_LOWER_REGNUM) + (S390_V3_LOWER_REGNUM, S390_V4_LOWER_REGNUM, S390_V5_LOWER_REGNUM) + (S390_V6_LOWER_REGNUM, S390_V7_LOWER_REGNUM, S390_V8_LOWER_REGNUM) + (S390_V9_LOWER_REGNUM, S390_V10_LOWER_REGNUM) + (S390_V11_LOWER_REGNUM, S390_V12_LOWER_REGNUM) + (S390_V13_LOWER_REGNUM, S390_V14_LOWER_REGNUM) + (S390_V15_LOWER_REGNUM, S390_V16_REGNUM, S390_V17_REGNUM) + (S390_V18_REGNUM, S390_V19_REGNUM, S390_V20_REGNUM) + (S390_V21_REGNUM, S390_V22_REGNUM, S390_V23_REGNUM) + (S390_V24_REGNUM, S390_V25_REGNUM, S390_V26_REGNUM) + (S390_V27_REGNUM, S390_V28_REGNUM, S390_V29_REGNUM) + (S390_V30_REGNUM, S390_V31_REGNUM): New macros. + (S390_NUM_REGS): Adjust value. + (s390_vxrs_low_regset, s390_vxrs_high_regset): Declare. + (tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64) + (tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): Likewise. + * NEWS: Announce S/390 vector register support. + +2015-03-02 Andreas Arnez <arnez@linux.vnet.ibm.com> + * features/s390-tevx-linux64.xml: New file. * features/s390-vx-linux64.xml: New file. * features/s390-vx.xml: New file. |