Blame SOURCES/gdb-rhbz1182151-ibm-z13-07of22.patch

0b42f8
commit 446899e472025a04017064f5172105cec70eb357
0b42f8
Author: Andreas Arnez <arnez@linux.vnet.ibm.com>
0b42f8
Date:   Mon Mar 2 10:57:39 2015 +0100
0b42f8
0b42f8
    S390: Add target descriptions for vector register sets
0b42f8
    
0b42f8
    The IBM z13 has new vector registers v0-v31 which are presented by the
0b42f8
    Linux kernel as two additional register sets.  This patch adds XML
0b42f8
    descriptions and the respective autogenerated .c and .dat files for
0b42f8
    S390 targets with this feature.  Note that supported combinations
0b42f8
    include targets with and without a transactional execution facility.
0b42f8
    
0b42f8
    gdb/ChangeLog:
0b42f8
    
0b42f8
    	* features/s390-tevx-linux64.xml: New file.
0b42f8
    	* features/s390-vx-linux64.xml: New file.
0b42f8
    	* features/s390-vx.xml: New file.
0b42f8
    	* features/s390x-tevx-linux64.xml: New file.
0b42f8
    	* features/s390x-vx-linux64.xml: New file.
0b42f8
    	* features/Makefile (WHICH): Add s390-vx-linux64,
0b42f8
    	s390x-vx-linux64, s390-tevx-linux64, and s390x-tevx-linux64.
0b42f8
    	(s390-vx-linux64-expedite, s390-tevx-linux64-expedite)
0b42f8
    	(s390x-vx-linux64-expedite, s390x-tevx-linux64-expedite): New
0b42f8
    	macros.
0b42f8
    	* features/s390-tevx-linux64.c: New generated file.
0b42f8
    	* features/s390-vx-linux64.c: Likewise.
0b42f8
    	* features/s390x-tevx-linux64.c: Likewise.
0b42f8
    	* features/s390x-vx-linux64.c: Likewise.
0b42f8
    	* regformats/s390-tevx-linux64.dat: Likewise.
0b42f8
    	* regformats/s390-vx-linux64.dat: Likewise.
0b42f8
    	* regformats/s390x-tevx-linux64.dat: Likewise.
0b42f8
    	* regformats/s390x-vx-linux64.dat: Likewise.
0b42f8
    
0b42f8
    gdb/doc/ChangeLog:
0b42f8
    
0b42f8
    	* gdb.texinfo (S/390 and System z Features): Describe new feature
0b42f8
    	"org.gnu.gdb.s390.vx".
0b42f8
0b42f8
### a/gdb/ChangeLog
0b42f8
### b/gdb/ChangeLog
0b42f8
## -1,3 +1,24 @@
0b42f8
+2015-03-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
0b42f8
+
0b42f8
+	* features/s390-tevx-linux64.xml: New file.
0b42f8
+	* features/s390-vx-linux64.xml: New file.
0b42f8
+	* features/s390-vx.xml: New file.
0b42f8
+	* features/s390x-tevx-linux64.xml: New file.
0b42f8
+	* features/s390x-vx-linux64.xml: New file.
0b42f8
+	* features/Makefile (WHICH): Add s390-vx-linux64,
0b42f8
+	s390x-vx-linux64, s390-tevx-linux64, and s390x-tevx-linux64.
0b42f8
+	(s390-vx-linux64-expedite, s390-tevx-linux64-expedite)
0b42f8
+	(s390x-vx-linux64-expedite, s390x-tevx-linux64-expedite): New
0b42f8
+	macros.
0b42f8
+	* features/s390-tevx-linux64.c: New generated file.
0b42f8
+	* features/s390-vx-linux64.c: Likewise.
0b42f8
+	* features/s390x-tevx-linux64.c: Likewise.
0b42f8
+	* features/s390x-vx-linux64.c: Likewise.
0b42f8
+	* regformats/s390-tevx-linux64.dat: Likewise.
0b42f8
+	* regformats/s390-vx-linux64.dat: Likewise.
0b42f8
+	* regformats/s390x-tevx-linux64.dat: Likewise.
0b42f8
+	* regformats/s390x-vx-linux64.dat: Likewise.
0b42f8
+
0b42f8
 2015-02-28  Doug Evans  <xdje42@gmail.com>
0b42f8
 
0b42f8
 	* symtab.h (struct symtab) <next>: Fix comment.
0b42f8
### a/gdb/doc/ChangeLog
0b42f8
### b/gdb/doc/ChangeLog
0b42f8
## -1,3 +1,8 @@
0b42f8
+2015-03-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
0b42f8
+
0b42f8
+	* gdb.texinfo (S/390 and System z Features): Describe new feature
0b42f8
+	"org.gnu.gdb.s390.vx".
0b42f8
+
0b42f8
 2015-02-23  Sergio Durigan Junior  <sergiodj@redhat.com>
0b42f8
 
0b42f8
 	PR gdb/18008
0b42f8
--- a/gdb/doc/gdb.texinfo
0b42f8
+++ b/gdb/doc/gdb.texinfo
0b42f8
@@ -39933,6 +39933,14 @@ The @samp{org.gnu.gdb.s390.tdb} feature is optional.  It should
0b42f8
 contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct},
0b42f8
 @samp{atia}, and @samp{tr0} through @samp{tr15}.
0b42f8
 
0b42f8
+The @samp{org.gnu.gdb.s390.vx} feature is optional.  It should contain
0b42f8
+64-bit wide registers @samp{v0l} through @samp{v15l}, which will be
0b42f8
+combined by @value{GDBN} with the floating point registers @samp{f0}
0b42f8
+through @samp{f15} to present the 128-bit wide vector registers
0b42f8
+@samp{v0} through @samp{v15}.  In addition, this feature should
0b42f8
+contain the 128-bit wide vector registers @samp{v16} through
0b42f8
+@samp{v31}.
0b42f8
+
0b42f8
 @node TIC6x Features
0b42f8
 @subsection TMS320C6x Features
0b42f8
 @cindex target descriptions, TIC6x features
0b42f8
--- a/gdb/features/Makefile
0b42f8
+++ b/gdb/features/Makefile
0b42f8
@@ -68,7 +68,8 @@ WHICH = aarch64 \
0b42f8
 	s390-linux32 s390-linux64 s390x-linux64 \
0b42f8
 	s390-linux32v1 s390-linux64v1 s390x-linux64v1 \
0b42f8
 	s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
0b42f8
-	s390-te-linux64 s390x-te-linux64 \
0b42f8
+	s390-te-linux64 s390x-te-linux64 s390-vx-linux64 s390x-vx-linux64 \
0b42f8
+	s390-tevx-linux64 s390x-tevx-linux64 \
0b42f8
 	tic6x-c64xp tic6x-c64x tic6x-c62x \
0b42f8
 	tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux
0b42f8
 
0b42f8
@@ -115,10 +116,14 @@ s390-linux64-expedite = r14l,r15l,pswa
0b42f8
 s390-linux64v1-expedite = r14l,r15l,pswa
0b42f8
 s390-linux64v2-expedite = r14l,r15l,pswa
0b42f8
 s390-te-linux64-expedite = r14l,r15l,pswa
0b42f8
+s390-vx-linux64-expedite = r14l,r15l,pswa
0b42f8
+s390-tevx-linux64-expedite = r14l,r15l,pswa
0b42f8
 s390x-linux64-expedite = r14,r15,pswa
0b42f8
 s390x-linux64v1-expedite = r14,r15,pswa
0b42f8
 s390x-linux64v2-expedite = r14,r15,pswa
0b42f8
 s390x-te-linux64-expedite = r14,r15,pswa
0b42f8
+s390x-vx-linux64-expedite = r14,r15,pswa
0b42f8
+s390x-tevx-linux64-expedite = r14,r15,pswa
0b42f8
 tic6x-c64xp-expedite = A15,PC
0b42f8
 tic6x-c64x-expedite = A15,PC
0b42f8
 tic6x-c62x-expedite = A15,PC
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390-tevx-linux64.c
0b42f8
@@ -0,0 +1,188 @@
0b42f8
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
0b42f8
+  Original: s390-tevx-linux64.xml */
0b42f8
+
0b42f8
+#include "defs.h"
0b42f8
+#include "osabi.h"
0b42f8
+#include "target-descriptions.h"
0b42f8
+
0b42f8
+struct target_desc *tdesc_s390_tevx_linux64;
0b42f8
+static void
0b42f8
+initialize_tdesc_s390_tevx_linux64 (void)
0b42f8
+{
0b42f8
+  struct target_desc *result = allocate_target_description ();
0b42f8
+  struct tdesc_feature *feature;
0b42f8
+  struct tdesc_type *field_type;
0b42f8
+  struct tdesc_type *type;
0b42f8
+
0b42f8
+  set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
0b42f8
+  tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
0b42f8
+  tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
0b42f8
+  tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
0b42f8
+  tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr");
0b42f8
+  tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb");
0b42f8
+  tdesc_create_reg (feature, "tdb0", 70, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tac", 71, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tct", 72, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "atia", 73, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr0", 74, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr1", 75, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr2", 76, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr3", 77, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr4", 78, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr5", 79, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr6", 80, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr7", 81, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr8", 82, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr9", 83, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr10", 84, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr11", 85, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr12", 86, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr13", 87, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr14", 88, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_single");
0b42f8
+  tdesc_create_vector (feature, "v4f", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_double");
0b42f8
+  tdesc_create_vector (feature, "v2d", field_type, 2);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int8");
0b42f8
+  tdesc_create_vector (feature, "v16i8", field_type, 16);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int16");
0b42f8
+  tdesc_create_vector (feature, "v8i16", field_type, 8);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int32");
0b42f8
+  tdesc_create_vector (feature, "v4i32", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int64");
0b42f8
+  tdesc_create_vector (feature, "v2i64", field_type, 2);
0b42f8
+
0b42f8
+  type = tdesc_create_union (feature, "vec128");
0b42f8
+  field_type = tdesc_named_type (feature, "v4f");
0b42f8
+  tdesc_add_field (type, "v4_float", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2d");
0b42f8
+  tdesc_add_field (type, "v2_double", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v16i8");
0b42f8
+  tdesc_add_field (type, "v16_int8", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v8i16");
0b42f8
+  tdesc_add_field (type, "v8_int16", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v4i32");
0b42f8
+  tdesc_add_field (type, "v4_int32", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2i64");
0b42f8
+  tdesc_add_field (type, "v2_int64", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "uint128");
0b42f8
+  tdesc_add_field (type, "uint128", field_type);
0b42f8
+
0b42f8
+  tdesc_create_reg (feature, "v0l", 90, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v1l", 91, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v2l", 92, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v3l", 93, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v4l", 94, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v5l", 95, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v6l", 96, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v7l", 97, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v8l", 98, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v9l", 99, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v10l", 100, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v11l", 101, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v12l", 102, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v13l", 103, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v14l", 104, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v15l", 105, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v16", 106, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v17", 107, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v18", 108, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v19", 109, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v20", 110, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v21", 111, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v22", 112, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v23", 113, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v24", 114, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v25", 115, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v26", 116, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v27", 117, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v28", 118, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v29", 119, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v30", 120, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v31", 121, 1, NULL, 128, "vec128");
0b42f8
+
0b42f8
+  tdesc_s390_tevx_linux64 = result;
0b42f8
+}
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390-tevx-linux64.xml
0b42f8
@@ -0,0 +1,26 @@
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+     Copying and distribution of this file, with or without modification,
0b42f8
+     are permitted in any medium without royalty provided the copyright
0b42f8
+     notice and this notice are preserved.  -->
0b42f8
+
0b42f8
+
0b42f8
+     in z/Architecture mode.  -->
0b42f8
+
0b42f8
+
0b42f8
+<target>
0b42f8
+  <architecture>s390:31-bit</architecture>
0b42f8
+  <xi:include href="s390-core64.xml"/>
0b42f8
+  <xi:include href="s390-acr.xml"/>
0b42f8
+  <xi:include href="s390-fpr.xml"/>
0b42f8
+
0b42f8
+  <feature name="org.gnu.gdb.s390.linux">
0b42f8
+    <reg name="orig_r2" bitsize="32" type="uint32" group="system"/>
0b42f8
+    <reg name="last_break" bitsize="32" type="code_ptr" group="system" save-restore="no"/>
0b42f8
+    <reg name="system_call" bitsize="32" type="uint32" group="system"/>
0b42f8
+  </feature>
0b42f8
+
0b42f8
+  <xi:include href="s390-tdb.xml"/>
0b42f8
+  <xi:include href="s390-vx.xml"/>
0b42f8
+</target>
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390-vx-linux64.c
0b42f8
@@ -0,0 +1,166 @@
0b42f8
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
0b42f8
+  Original: s390-vx-linux64.xml */
0b42f8
+
0b42f8
+#include "defs.h"
0b42f8
+#include "osabi.h"
0b42f8
+#include "target-descriptions.h"
0b42f8
+
0b42f8
+struct target_desc *tdesc_s390_vx_linux64;
0b42f8
+static void
0b42f8
+initialize_tdesc_s390_vx_linux64 (void)
0b42f8
+{
0b42f8
+  struct target_desc *result = allocate_target_description ();
0b42f8
+  struct tdesc_feature *feature;
0b42f8
+  struct tdesc_type *field_type;
0b42f8
+  struct tdesc_type *type;
0b42f8
+
0b42f8
+  set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
0b42f8
+  tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
0b42f8
+  tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
0b42f8
+  tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
0b42f8
+  tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr");
0b42f8
+  tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_single");
0b42f8
+  tdesc_create_vector (feature, "v4f", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_double");
0b42f8
+  tdesc_create_vector (feature, "v2d", field_type, 2);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int8");
0b42f8
+  tdesc_create_vector (feature, "v16i8", field_type, 16);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int16");
0b42f8
+  tdesc_create_vector (feature, "v8i16", field_type, 8);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int32");
0b42f8
+  tdesc_create_vector (feature, "v4i32", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int64");
0b42f8
+  tdesc_create_vector (feature, "v2i64", field_type, 2);
0b42f8
+
0b42f8
+  type = tdesc_create_union (feature, "vec128");
0b42f8
+  field_type = tdesc_named_type (feature, "v4f");
0b42f8
+  tdesc_add_field (type, "v4_float", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2d");
0b42f8
+  tdesc_add_field (type, "v2_double", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v16i8");
0b42f8
+  tdesc_add_field (type, "v16_int8", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v8i16");
0b42f8
+  tdesc_add_field (type, "v8_int16", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v4i32");
0b42f8
+  tdesc_add_field (type, "v4_int32", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2i64");
0b42f8
+  tdesc_add_field (type, "v2_int64", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "uint128");
0b42f8
+  tdesc_add_field (type, "uint128", field_type);
0b42f8
+
0b42f8
+  tdesc_create_reg (feature, "v0l", 70, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v1l", 71, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v2l", 72, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v3l", 73, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v4l", 74, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v5l", 75, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v6l", 76, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v7l", 77, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v8l", 78, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v9l", 79, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v10l", 80, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v11l", 81, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v12l", 82, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v13l", 83, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v14l", 84, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v15l", 85, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v16", 86, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v17", 87, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v18", 88, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v19", 89, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v20", 90, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v21", 91, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v22", 92, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v23", 93, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v24", 94, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v25", 95, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v26", 96, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v27", 97, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v28", 98, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v29", 99, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v30", 100, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v31", 101, 1, NULL, 128, "vec128");
0b42f8
+
0b42f8
+  tdesc_s390_vx_linux64 = result;
0b42f8
+}
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390-vx-linux64.xml
0b42f8
@@ -0,0 +1,25 @@
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+     Copying and distribution of this file, with or without modification,
0b42f8
+     are permitted in any medium without royalty provided the copyright
0b42f8
+     notice and this notice are preserved.  -->
0b42f8
+
0b42f8
+
0b42f8
+     in z/Architecture mode.  -->
0b42f8
+
0b42f8
+
0b42f8
+<target>
0b42f8
+  <architecture>s390:31-bit</architecture>
0b42f8
+  <xi:include href="s390-core64.xml"/>
0b42f8
+  <xi:include href="s390-acr.xml"/>
0b42f8
+  <xi:include href="s390-fpr.xml"/>
0b42f8
+
0b42f8
+  <feature name="org.gnu.gdb.s390.linux">
0b42f8
+    <reg name="orig_r2" bitsize="32" type="uint32" group="system"/>
0b42f8
+    <reg name="last_break" bitsize="32" type="code_ptr" group="system" save-restore="no"/>
0b42f8
+    <reg name="system_call" bitsize="32" type="uint32" group="system"/>
0b42f8
+  </feature>
0b42f8
+
0b42f8
+  <xi:include href="s390-vx.xml"/>
0b42f8
+</target>
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390-vx.xml
0b42f8
@@ -0,0 +1,59 @@
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+     Copying and distribution of this file, with or without modification,
0b42f8
+     are permitted in any medium without royalty provided the copyright
0b42f8
+     notice and this notice are preserved.  -->
0b42f8
+
0b42f8
+
0b42f8
+<feature name="org.gnu.gdb.s390.vx">
0b42f8
+  <vector id="v4f" type="ieee_single" count="4"/>
0b42f8
+  <vector id="v2d" type="ieee_double" count="2"/>
0b42f8
+  <vector id="v16i8" type="int8" count="16"/>
0b42f8
+  <vector id="v8i16" type="int16" count="8"/>
0b42f8
+  <vector id="v4i32" type="int32" count="4"/>
0b42f8
+  <vector id="v2i64" type="int64" count="2"/>
0b42f8
+  <union id="vec128">
0b42f8
+    <field name="v4_float" type="v4f"/>
0b42f8
+    <field name="v2_double" type="v2d"/>
0b42f8
+    <field name="v16_int8" type="v16i8"/>
0b42f8
+    <field name="v8_int16" type="v8i16"/>
0b42f8
+    <field name="v4_int32" type="v4i32"/>
0b42f8
+    <field name="v2_int64" type="v2i64"/>
0b42f8
+    <field name="uint128" type="uint128"/>
0b42f8
+  </union>
0b42f8
+
0b42f8
+  <reg name="v0l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v1l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v2l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v3l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v4l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v5l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v6l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v7l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v8l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v9l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v10l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v11l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v12l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v13l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v14l" bitsize="64" type="uint64"/>
0b42f8
+  <reg name="v15l" bitsize="64" type="uint64"/>
0b42f8
+
0b42f8
+  <reg name="v16" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v17" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v18" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v19" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v20" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v21" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v22" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v23" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v24" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v25" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v26" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v27" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v28" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v29" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v30" bitsize="128" type="vec128"/>
0b42f8
+  <reg name="v31" bitsize="128" type="vec128"/>
0b42f8
+</feature>
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390x-tevx-linux64.c
0b42f8
@@ -0,0 +1,172 @@
0b42f8
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
0b42f8
+  Original: s390x-tevx-linux64.xml */
0b42f8
+
0b42f8
+#include "defs.h"
0b42f8
+#include "osabi.h"
0b42f8
+#include "target-descriptions.h"
0b42f8
+
0b42f8
+struct target_desc *tdesc_s390x_tevx_linux64;
0b42f8
+static void
0b42f8
+initialize_tdesc_s390x_tevx_linux64 (void)
0b42f8
+{
0b42f8
+  struct target_desc *result = allocate_target_description ();
0b42f8
+  struct tdesc_feature *feature;
0b42f8
+  struct tdesc_type *field_type;
0b42f8
+  struct tdesc_type *type;
0b42f8
+
0b42f8
+  set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
0b42f8
+  tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
0b42f8
+  tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
0b42f8
+  tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
0b42f8
+  tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr");
0b42f8
+  tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb");
0b42f8
+  tdesc_create_reg (feature, "tdb0", 54, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tac", 55, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tct", 56, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "atia", 57, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr0", 58, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr1", 59, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr2", 60, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr3", 61, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr4", 62, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr5", 63, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr6", 64, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr7", 65, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr8", 66, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr9", 67, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr10", 68, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr11", 69, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr12", 70, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr13", 71, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr14", 72, 1, "tdb", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_single");
0b42f8
+  tdesc_create_vector (feature, "v4f", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_double");
0b42f8
+  tdesc_create_vector (feature, "v2d", field_type, 2);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int8");
0b42f8
+  tdesc_create_vector (feature, "v16i8", field_type, 16);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int16");
0b42f8
+  tdesc_create_vector (feature, "v8i16", field_type, 8);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int32");
0b42f8
+  tdesc_create_vector (feature, "v4i32", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int64");
0b42f8
+  tdesc_create_vector (feature, "v2i64", field_type, 2);
0b42f8
+
0b42f8
+  type = tdesc_create_union (feature, "vec128");
0b42f8
+  field_type = tdesc_named_type (feature, "v4f");
0b42f8
+  tdesc_add_field (type, "v4_float", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2d");
0b42f8
+  tdesc_add_field (type, "v2_double", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v16i8");
0b42f8
+  tdesc_add_field (type, "v16_int8", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v8i16");
0b42f8
+  tdesc_add_field (type, "v8_int16", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v4i32");
0b42f8
+  tdesc_add_field (type, "v4_int32", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2i64");
0b42f8
+  tdesc_add_field (type, "v2_int64", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "uint128");
0b42f8
+  tdesc_add_field (type, "uint128", field_type);
0b42f8
+
0b42f8
+  tdesc_create_reg (feature, "v0l", 74, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v1l", 75, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v2l", 76, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v3l", 77, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v4l", 78, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v5l", 79, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v6l", 80, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v7l", 81, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v8l", 82, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v9l", 83, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v10l", 84, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v11l", 85, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v12l", 86, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v13l", 87, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v14l", 88, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v15l", 89, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v16", 90, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v17", 91, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v18", 92, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v19", 93, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v20", 94, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v21", 95, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v22", 96, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v23", 97, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v24", 98, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v25", 99, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v26", 100, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v27", 101, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v28", 102, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v29", 103, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v30", 104, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v31", 105, 1, NULL, 128, "vec128");
0b42f8
+
0b42f8
+  tdesc_s390x_tevx_linux64 = result;
0b42f8
+}
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390x-tevx-linux64.xml
0b42f8
@@ -0,0 +1,25 @@
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+     Copying and distribution of this file, with or without modification,
0b42f8
+     are permitted in any medium without royalty provided the copyright
0b42f8
+     notice and this notice are preserved.  -->
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+<target>
0b42f8
+  <architecture>s390:64-bit</architecture>
0b42f8
+  <xi:include href="s390x-core64.xml"/>
0b42f8
+  <xi:include href="s390-acr.xml"/>
0b42f8
+  <xi:include href="s390-fpr.xml"/>
0b42f8
+
0b42f8
+  <feature name="org.gnu.gdb.s390.linux">
0b42f8
+    <reg name="orig_r2" bitsize="64" type="uint64" group="system"/>
0b42f8
+    <reg name="last_break" bitsize="64" type="code_ptr" group="system" save-restore="no"/>
0b42f8
+    <reg name="system_call" bitsize="32" type="uint32" group="system"/>
0b42f8
+  </feature>
0b42f8
+
0b42f8
+  <xi:include href="s390-tdb.xml"/>
0b42f8
+  <xi:include href="s390-vx.xml"/>
0b42f8
+</target>
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390x-vx-linux64.c
0b42f8
@@ -0,0 +1,150 @@
0b42f8
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
0b42f8
+  Original: s390x-vx-linux64.xml */
0b42f8
+
0b42f8
+#include "defs.h"
0b42f8
+#include "osabi.h"
0b42f8
+#include "target-descriptions.h"
0b42f8
+
0b42f8
+struct target_desc *tdesc_s390x_vx_linux64;
0b42f8
+static void
0b42f8
+initialize_tdesc_s390x_vx_linux64 (void)
0b42f8
+{
0b42f8
+  struct target_desc *result = allocate_target_description ();
0b42f8
+  struct tdesc_feature *feature;
0b42f8
+  struct tdesc_type *field_type;
0b42f8
+  struct tdesc_type *type;
0b42f8
+
0b42f8
+  set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
0b42f8
+  tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
0b42f8
+  tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
0b42f8
+  tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32");
0b42f8
+  tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double");
0b42f8
+  tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
0b42f8
+  tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr");
0b42f8
+  tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32");
0b42f8
+
0b42f8
+  feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_single");
0b42f8
+  tdesc_create_vector (feature, "v4f", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "ieee_double");
0b42f8
+  tdesc_create_vector (feature, "v2d", field_type, 2);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int8");
0b42f8
+  tdesc_create_vector (feature, "v16i8", field_type, 16);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int16");
0b42f8
+  tdesc_create_vector (feature, "v8i16", field_type, 8);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int32");
0b42f8
+  tdesc_create_vector (feature, "v4i32", field_type, 4);
0b42f8
+
0b42f8
+  field_type = tdesc_named_type (feature, "int64");
0b42f8
+  tdesc_create_vector (feature, "v2i64", field_type, 2);
0b42f8
+
0b42f8
+  type = tdesc_create_union (feature, "vec128");
0b42f8
+  field_type = tdesc_named_type (feature, "v4f");
0b42f8
+  tdesc_add_field (type, "v4_float", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2d");
0b42f8
+  tdesc_add_field (type, "v2_double", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v16i8");
0b42f8
+  tdesc_add_field (type, "v16_int8", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v8i16");
0b42f8
+  tdesc_add_field (type, "v8_int16", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v4i32");
0b42f8
+  tdesc_add_field (type, "v4_int32", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "v2i64");
0b42f8
+  tdesc_add_field (type, "v2_int64", field_type);
0b42f8
+  field_type = tdesc_named_type (feature, "uint128");
0b42f8
+  tdesc_add_field (type, "uint128", field_type);
0b42f8
+
0b42f8
+  tdesc_create_reg (feature, "v0l", 54, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v1l", 55, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v2l", 56, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v3l", 57, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v4l", 58, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v5l", 59, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v6l", 60, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v7l", 61, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v8l", 62, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v9l", 63, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v10l", 64, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v11l", 65, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v12l", 66, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v13l", 67, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v14l", 68, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v15l", 69, 1, NULL, 64, "uint64");
0b42f8
+  tdesc_create_reg (feature, "v16", 70, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v17", 71, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v18", 72, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v19", 73, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v20", 74, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v21", 75, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v22", 76, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v23", 77, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v24", 78, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v25", 79, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v26", 80, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v27", 81, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v28", 82, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v29", 83, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v30", 84, 1, NULL, 128, "vec128");
0b42f8
+  tdesc_create_reg (feature, "v31", 85, 1, NULL, 128, "vec128");
0b42f8
+
0b42f8
+  tdesc_s390x_vx_linux64 = result;
0b42f8
+}
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/features/s390x-vx-linux64.xml
0b42f8
@@ -0,0 +1,24 @@
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+     Copying and distribution of this file, with or without modification,
0b42f8
+     are permitted in any medium without royalty provided the copyright
0b42f8
+     notice and this notice are preserved.  -->
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+
0b42f8
+<target>
0b42f8
+  <architecture>s390:64-bit</architecture>
0b42f8
+  <xi:include href="s390x-core64.xml"/>
0b42f8
+  <xi:include href="s390-acr.xml"/>
0b42f8
+  <xi:include href="s390-fpr.xml"/>
0b42f8
+
0b42f8
+  <feature name="org.gnu.gdb.s390.linux">
0b42f8
+    <reg name="orig_r2" bitsize="64" type="uint64" group="system"/>
0b42f8
+    <reg name="last_break" bitsize="64" type="code_ptr" group="system" save-restore="no"/>
0b42f8
+    <reg name="system_call" bitsize="32" type="uint32" group="system"/>
0b42f8
+  </feature>
0b42f8
+
0b42f8
+  <xi:include href="s390-vx.xml"/>
0b42f8
+</target>
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/regformats/s390-tevx-linux64.dat
0b42f8
@@ -0,0 +1,127 @@
0b42f8
+# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
0b42f8
+# Generated from: s390-tevx-linux64.xml
0b42f8
+name:s390_tevx_linux64
0b42f8
+xmltarget:s390-tevx-linux64.xml
0b42f8
+expedite:r14l,r15l,pswa
0b42f8
+32:pswm
0b42f8
+32:pswa
0b42f8
+32:r0h
0b42f8
+32:r0l
0b42f8
+32:r1h
0b42f8
+32:r1l
0b42f8
+32:r2h
0b42f8
+32:r2l
0b42f8
+32:r3h
0b42f8
+32:r3l
0b42f8
+32:r4h
0b42f8
+32:r4l
0b42f8
+32:r5h
0b42f8
+32:r5l
0b42f8
+32:r6h
0b42f8
+32:r6l
0b42f8
+32:r7h
0b42f8
+32:r7l
0b42f8
+32:r8h
0b42f8
+32:r8l
0b42f8
+32:r9h
0b42f8
+32:r9l
0b42f8
+32:r10h
0b42f8
+32:r10l
0b42f8
+32:r11h
0b42f8
+32:r11l
0b42f8
+32:r12h
0b42f8
+32:r12l
0b42f8
+32:r13h
0b42f8
+32:r13l
0b42f8
+32:r14h
0b42f8
+32:r14l
0b42f8
+32:r15h
0b42f8
+32:r15l
0b42f8
+32:acr0
0b42f8
+32:acr1
0b42f8
+32:acr2
0b42f8
+32:acr3
0b42f8
+32:acr4
0b42f8
+32:acr5
0b42f8
+32:acr6
0b42f8
+32:acr7
0b42f8
+32:acr8
0b42f8
+32:acr9
0b42f8
+32:acr10
0b42f8
+32:acr11
0b42f8
+32:acr12
0b42f8
+32:acr13
0b42f8
+32:acr14
0b42f8
+32:acr15
0b42f8
+32:fpc
0b42f8
+64:f0
0b42f8
+64:f1
0b42f8
+64:f2
0b42f8
+64:f3
0b42f8
+64:f4
0b42f8
+64:f5
0b42f8
+64:f6
0b42f8
+64:f7
0b42f8
+64:f8
0b42f8
+64:f9
0b42f8
+64:f10
0b42f8
+64:f11
0b42f8
+64:f12
0b42f8
+64:f13
0b42f8
+64:f14
0b42f8
+64:f15
0b42f8
+32:orig_r2
0b42f8
+32:last_break
0b42f8
+32:system_call
0b42f8
+64:tdb0
0b42f8
+64:tac
0b42f8
+64:tct
0b42f8
+64:atia
0b42f8
+64:tr0
0b42f8
+64:tr1
0b42f8
+64:tr2
0b42f8
+64:tr3
0b42f8
+64:tr4
0b42f8
+64:tr5
0b42f8
+64:tr6
0b42f8
+64:tr7
0b42f8
+64:tr8
0b42f8
+64:tr9
0b42f8
+64:tr10
0b42f8
+64:tr11
0b42f8
+64:tr12
0b42f8
+64:tr13
0b42f8
+64:tr14
0b42f8
+64:tr15
0b42f8
+64:v0l
0b42f8
+64:v1l
0b42f8
+64:v2l
0b42f8
+64:v3l
0b42f8
+64:v4l
0b42f8
+64:v5l
0b42f8
+64:v6l
0b42f8
+64:v7l
0b42f8
+64:v8l
0b42f8
+64:v9l
0b42f8
+64:v10l
0b42f8
+64:v11l
0b42f8
+64:v12l
0b42f8
+64:v13l
0b42f8
+64:v14l
0b42f8
+64:v15l
0b42f8
+128:v16
0b42f8
+128:v17
0b42f8
+128:v18
0b42f8
+128:v19
0b42f8
+128:v20
0b42f8
+128:v21
0b42f8
+128:v22
0b42f8
+128:v23
0b42f8
+128:v24
0b42f8
+128:v25
0b42f8
+128:v26
0b42f8
+128:v27
0b42f8
+128:v28
0b42f8
+128:v29
0b42f8
+128:v30
0b42f8
+128:v31
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/regformats/s390-vx-linux64.dat
0b42f8
@@ -0,0 +1,107 @@
0b42f8
+# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
0b42f8
+# Generated from: s390-vx-linux64.xml
0b42f8
+name:s390_vx_linux64
0b42f8
+xmltarget:s390-vx-linux64.xml
0b42f8
+expedite:r14l,r15l,pswa
0b42f8
+32:pswm
0b42f8
+32:pswa
0b42f8
+32:r0h
0b42f8
+32:r0l
0b42f8
+32:r1h
0b42f8
+32:r1l
0b42f8
+32:r2h
0b42f8
+32:r2l
0b42f8
+32:r3h
0b42f8
+32:r3l
0b42f8
+32:r4h
0b42f8
+32:r4l
0b42f8
+32:r5h
0b42f8
+32:r5l
0b42f8
+32:r6h
0b42f8
+32:r6l
0b42f8
+32:r7h
0b42f8
+32:r7l
0b42f8
+32:r8h
0b42f8
+32:r8l
0b42f8
+32:r9h
0b42f8
+32:r9l
0b42f8
+32:r10h
0b42f8
+32:r10l
0b42f8
+32:r11h
0b42f8
+32:r11l
0b42f8
+32:r12h
0b42f8
+32:r12l
0b42f8
+32:r13h
0b42f8
+32:r13l
0b42f8
+32:r14h
0b42f8
+32:r14l
0b42f8
+32:r15h
0b42f8
+32:r15l
0b42f8
+32:acr0
0b42f8
+32:acr1
0b42f8
+32:acr2
0b42f8
+32:acr3
0b42f8
+32:acr4
0b42f8
+32:acr5
0b42f8
+32:acr6
0b42f8
+32:acr7
0b42f8
+32:acr8
0b42f8
+32:acr9
0b42f8
+32:acr10
0b42f8
+32:acr11
0b42f8
+32:acr12
0b42f8
+32:acr13
0b42f8
+32:acr14
0b42f8
+32:acr15
0b42f8
+32:fpc
0b42f8
+64:f0
0b42f8
+64:f1
0b42f8
+64:f2
0b42f8
+64:f3
0b42f8
+64:f4
0b42f8
+64:f5
0b42f8
+64:f6
0b42f8
+64:f7
0b42f8
+64:f8
0b42f8
+64:f9
0b42f8
+64:f10
0b42f8
+64:f11
0b42f8
+64:f12
0b42f8
+64:f13
0b42f8
+64:f14
0b42f8
+64:f15
0b42f8
+32:orig_r2
0b42f8
+32:last_break
0b42f8
+32:system_call
0b42f8
+64:v0l
0b42f8
+64:v1l
0b42f8
+64:v2l
0b42f8
+64:v3l
0b42f8
+64:v4l
0b42f8
+64:v5l
0b42f8
+64:v6l
0b42f8
+64:v7l
0b42f8
+64:v8l
0b42f8
+64:v9l
0b42f8
+64:v10l
0b42f8
+64:v11l
0b42f8
+64:v12l
0b42f8
+64:v13l
0b42f8
+64:v14l
0b42f8
+64:v15l
0b42f8
+128:v16
0b42f8
+128:v17
0b42f8
+128:v18
0b42f8
+128:v19
0b42f8
+128:v20
0b42f8
+128:v21
0b42f8
+128:v22
0b42f8
+128:v23
0b42f8
+128:v24
0b42f8
+128:v25
0b42f8
+128:v26
0b42f8
+128:v27
0b42f8
+128:v28
0b42f8
+128:v29
0b42f8
+128:v30
0b42f8
+128:v31
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/regformats/s390x-tevx-linux64.dat
0b42f8
@@ -0,0 +1,111 @@
0b42f8
+# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
0b42f8
+# Generated from: s390x-tevx-linux64.xml
0b42f8
+name:s390x_tevx_linux64
0b42f8
+xmltarget:s390x-tevx-linux64.xml
0b42f8
+expedite:r14,r15,pswa
0b42f8
+64:pswm
0b42f8
+64:pswa
0b42f8
+64:r0
0b42f8
+64:r1
0b42f8
+64:r2
0b42f8
+64:r3
0b42f8
+64:r4
0b42f8
+64:r5
0b42f8
+64:r6
0b42f8
+64:r7
0b42f8
+64:r8
0b42f8
+64:r9
0b42f8
+64:r10
0b42f8
+64:r11
0b42f8
+64:r12
0b42f8
+64:r13
0b42f8
+64:r14
0b42f8
+64:r15
0b42f8
+32:acr0
0b42f8
+32:acr1
0b42f8
+32:acr2
0b42f8
+32:acr3
0b42f8
+32:acr4
0b42f8
+32:acr5
0b42f8
+32:acr6
0b42f8
+32:acr7
0b42f8
+32:acr8
0b42f8
+32:acr9
0b42f8
+32:acr10
0b42f8
+32:acr11
0b42f8
+32:acr12
0b42f8
+32:acr13
0b42f8
+32:acr14
0b42f8
+32:acr15
0b42f8
+32:fpc
0b42f8
+64:f0
0b42f8
+64:f1
0b42f8
+64:f2
0b42f8
+64:f3
0b42f8
+64:f4
0b42f8
+64:f5
0b42f8
+64:f6
0b42f8
+64:f7
0b42f8
+64:f8
0b42f8
+64:f9
0b42f8
+64:f10
0b42f8
+64:f11
0b42f8
+64:f12
0b42f8
+64:f13
0b42f8
+64:f14
0b42f8
+64:f15
0b42f8
+64:orig_r2
0b42f8
+64:last_break
0b42f8
+32:system_call
0b42f8
+64:tdb0
0b42f8
+64:tac
0b42f8
+64:tct
0b42f8
+64:atia
0b42f8
+64:tr0
0b42f8
+64:tr1
0b42f8
+64:tr2
0b42f8
+64:tr3
0b42f8
+64:tr4
0b42f8
+64:tr5
0b42f8
+64:tr6
0b42f8
+64:tr7
0b42f8
+64:tr8
0b42f8
+64:tr9
0b42f8
+64:tr10
0b42f8
+64:tr11
0b42f8
+64:tr12
0b42f8
+64:tr13
0b42f8
+64:tr14
0b42f8
+64:tr15
0b42f8
+64:v0l
0b42f8
+64:v1l
0b42f8
+64:v2l
0b42f8
+64:v3l
0b42f8
+64:v4l
0b42f8
+64:v5l
0b42f8
+64:v6l
0b42f8
+64:v7l
0b42f8
+64:v8l
0b42f8
+64:v9l
0b42f8
+64:v10l
0b42f8
+64:v11l
0b42f8
+64:v12l
0b42f8
+64:v13l
0b42f8
+64:v14l
0b42f8
+64:v15l
0b42f8
+128:v16
0b42f8
+128:v17
0b42f8
+128:v18
0b42f8
+128:v19
0b42f8
+128:v20
0b42f8
+128:v21
0b42f8
+128:v22
0b42f8
+128:v23
0b42f8
+128:v24
0b42f8
+128:v25
0b42f8
+128:v26
0b42f8
+128:v27
0b42f8
+128:v28
0b42f8
+128:v29
0b42f8
+128:v30
0b42f8
+128:v31
0b42f8
--- /dev/null
0b42f8
+++ b/gdb/regformats/s390x-vx-linux64.dat
0b42f8
@@ -0,0 +1,91 @@
0b42f8
+# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
0b42f8
+# Generated from: s390x-vx-linux64.xml
0b42f8
+name:s390x_vx_linux64
0b42f8
+xmltarget:s390x-vx-linux64.xml
0b42f8
+expedite:r14,r15,pswa
0b42f8
+64:pswm
0b42f8
+64:pswa
0b42f8
+64:r0
0b42f8
+64:r1
0b42f8
+64:r2
0b42f8
+64:r3
0b42f8
+64:r4
0b42f8
+64:r5
0b42f8
+64:r6
0b42f8
+64:r7
0b42f8
+64:r8
0b42f8
+64:r9
0b42f8
+64:r10
0b42f8
+64:r11
0b42f8
+64:r12
0b42f8
+64:r13
0b42f8
+64:r14
0b42f8
+64:r15
0b42f8
+32:acr0
0b42f8
+32:acr1
0b42f8
+32:acr2
0b42f8
+32:acr3
0b42f8
+32:acr4
0b42f8
+32:acr5
0b42f8
+32:acr6
0b42f8
+32:acr7
0b42f8
+32:acr8
0b42f8
+32:acr9
0b42f8
+32:acr10
0b42f8
+32:acr11
0b42f8
+32:acr12
0b42f8
+32:acr13
0b42f8
+32:acr14
0b42f8
+32:acr15
0b42f8
+32:fpc
0b42f8
+64:f0
0b42f8
+64:f1
0b42f8
+64:f2
0b42f8
+64:f3
0b42f8
+64:f4
0b42f8
+64:f5
0b42f8
+64:f6
0b42f8
+64:f7
0b42f8
+64:f8
0b42f8
+64:f9
0b42f8
+64:f10
0b42f8
+64:f11
0b42f8
+64:f12
0b42f8
+64:f13
0b42f8
+64:f14
0b42f8
+64:f15
0b42f8
+64:orig_r2
0b42f8
+64:last_break
0b42f8
+32:system_call
0b42f8
+64:v0l
0b42f8
+64:v1l
0b42f8
+64:v2l
0b42f8
+64:v3l
0b42f8
+64:v4l
0b42f8
+64:v5l
0b42f8
+64:v6l
0b42f8
+64:v7l
0b42f8
+64:v8l
0b42f8
+64:v9l
0b42f8
+64:v10l
0b42f8
+64:v11l
0b42f8
+64:v12l
0b42f8
+64:v13l
0b42f8
+64:v14l
0b42f8
+64:v15l
0b42f8
+128:v16
0b42f8
+128:v17
0b42f8
+128:v18
0b42f8
+128:v19
0b42f8
+128:v20
0b42f8
+128:v21
0b42f8
+128:v22
0b42f8
+128:v23
0b42f8
+128:v24
0b42f8
+128:v25
0b42f8
+128:v26
0b42f8
+128:v27
0b42f8
+128:v28
0b42f8
+128:v29
0b42f8
+128:v30
0b42f8
+128:v31