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

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