817 lines
30 KiB
Diff
Executable File
817 lines
30 KiB
Diff
Executable File
commit 96235dc1ac3730c4e490d19db2e8287c0a40f307
|
|
Author: Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
Date: Mon Sep 25 16:02:23 2017 +0200
|
|
|
|
S390: Add guarded-storage register definitions and tdescs
|
|
|
|
Newer Linux kernel versions offer two new register sets in support of the
|
|
z/Architecture's guarded storage facility. This patch adds XML
|
|
descriptions and the respective autogenerated .c and .dat files for
|
|
s390/s390x targets with this feature.
|
|
|
|
gdb/ChangeLog:
|
|
|
|
* features/s390-gs-linux64.xml: New file.
|
|
* features/s390-gs.xml: New file.
|
|
* features/s390-gsbc.xml: New file.
|
|
* features/s390x-gs-linux64.xml: New file.
|
|
* features/Makefile (WHICH): Add s390-gs-linux64 and
|
|
s390x-gs-linux64.
|
|
(s390-gs-linux64-expedite, s390x-gs-linux64-expedite): New macros.
|
|
(XMLTOC): Add s390-gs-linux64.xml and s390x-linux64.xml.
|
|
* features/s390-gs-linux64.c: New generated file.
|
|
* features/s390x-gs-linux64.c: New file.
|
|
* regformats/s390-gs-linux64.dat: New file.
|
|
* regformats/s390x-gs-linux64.dat: New file.
|
|
|
|
### a/gdb/ChangeLog
|
|
### b/gdb/ChangeLog
|
|
## -1,3 +1,18 @@
|
|
+2017-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
+
|
|
+ * features/s390-gs-linux64.xml: New file.
|
|
+ * features/s390-gs.xml: New file.
|
|
+ * features/s390-gsbc.xml: New file.
|
|
+ * features/s390x-gs-linux64.xml: New file.
|
|
+ * features/Makefile (WHICH): Add s390-gs-linux64 and
|
|
+ s390x-gs-linux64.
|
|
+ (s390-gs-linux64-expedite, s390x-gs-linux64-expedite): New macros.
|
|
+ (XMLTOC): Add s390-gs-linux64.xml and s390x-linux64.xml.
|
|
+ * features/s390-gs-linux64.c: New generated file.
|
|
+ * features/s390x-gs-linux64.c: New file.
|
|
+ * regformats/s390-gs-linux64.dat: New file.
|
|
+ * regformats/s390x-gs-linux64.dat: New file.
|
|
+
|
|
2017-09-23 Tom Tromey <tom@tromey.com>
|
|
|
|
* defs.h (make_cleanup_override_quit_handler): Don't declare.
|
|
--- a/gdb/features/Makefile
|
|
+++ b/gdb/features/Makefile
|
|
@@ -78,6 +78,7 @@ WHICH = aarch64 \
|
|
s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
|
|
s390-te-linux64 s390x-te-linux64 s390-vx-linux64 s390x-vx-linux64 \
|
|
s390-tevx-linux64 s390x-tevx-linux64 \
|
|
+ s390-gs-linux64 s390x-gs-linux64 \
|
|
tic6x-c64xp tic6x-c64x tic6x-c62x \
|
|
tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux
|
|
|
|
@@ -105,12 +106,14 @@ s390-linux64v2-expedite = r14l,r15l,pswa
|
|
s390-te-linux64-expedite = r14l,r15l,pswa
|
|
s390-vx-linux64-expedite = r14l,r15l,pswa
|
|
s390-tevx-linux64-expedite = r14l,r15l,pswa
|
|
+s390-gs-linux64-expedite = r14,r15,pswa
|
|
s390x-linux64-expedite = r14,r15,pswa
|
|
s390x-linux64v1-expedite = r14,r15,pswa
|
|
s390x-linux64v2-expedite = r14,r15,pswa
|
|
s390x-te-linux64-expedite = r14,r15,pswa
|
|
s390x-vx-linux64-expedite = r14,r15,pswa
|
|
s390x-tevx-linux64-expedite = r14,r15,pswa
|
|
+s390x-gs-linux64-expedite = r14,r15,pswa
|
|
tic6x-c64xp-expedite = A15,PC
|
|
tic6x-c64x-expedite = A15,PC
|
|
tic6x-c62x-expedite = A15,PC
|
|
@@ -196,6 +199,8 @@ XMLTOC = \
|
|
s390-vx-linux64.xml \
|
|
s390x-tevx-linux64.xml \
|
|
s390x-vx-linux64.xml \
|
|
+ s390-gs-linux64.xml \
|
|
+ s390x-gs-linux64.xml \
|
|
tic6x-c62x-linux.xml \
|
|
tic6x-c62x.xml \
|
|
tic6x-c64x-linux.xml \
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390-gs-linux64.c
|
|
@@ -0,0 +1,198 @@
|
|
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
|
+ Original: s390-gs-linux64.xml */
|
|
+
|
|
+#include "defs.h"
|
|
+#include "osabi.h"
|
|
+#include "target-descriptions.h"
|
|
+
|
|
+struct target_desc *tdesc_s390_gs_linux64;
|
|
+static void
|
|
+initialize_tdesc_s390_gs_linux64 (void)
|
|
+{
|
|
+ struct target_desc *result = allocate_target_description ();
|
|
+ struct tdesc_feature *feature;
|
|
+ struct tdesc_type *field_type;
|
|
+ struct tdesc_type *type;
|
|
+
|
|
+ set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
|
|
+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
|
|
+ tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
|
|
+ tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
|
|
+ tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr");
|
|
+ tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb");
|
|
+ tdesc_create_reg (feature, "tdb0", 70, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tac", 71, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tct", 72, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "atia", 73, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr0", 74, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr1", 75, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr2", 76, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr3", 77, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr4", 78, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr5", 79, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr6", 80, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr7", 81, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr8", 82, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr9", 83, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr10", 84, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr11", 85, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr12", 86, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr13", 87, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr14", 88, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
|
|
+ field_type = tdesc_named_type (feature, "ieee_single");
|
|
+ tdesc_create_vector (feature, "v4f", field_type, 4);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "ieee_double");
|
|
+ tdesc_create_vector (feature, "v2d", field_type, 2);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int8");
|
|
+ tdesc_create_vector (feature, "v16i8", field_type, 16);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int16");
|
|
+ tdesc_create_vector (feature, "v8i16", field_type, 8);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int32");
|
|
+ tdesc_create_vector (feature, "v4i32", field_type, 4);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int64");
|
|
+ tdesc_create_vector (feature, "v2i64", field_type, 2);
|
|
+
|
|
+ type = tdesc_create_union (feature, "vec128");
|
|
+ field_type = tdesc_named_type (feature, "v4f");
|
|
+ tdesc_add_field (type, "v4_float", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v2d");
|
|
+ tdesc_add_field (type, "v2_double", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v16i8");
|
|
+ tdesc_add_field (type, "v16_int8", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v8i16");
|
|
+ tdesc_add_field (type, "v8_int16", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v4i32");
|
|
+ tdesc_add_field (type, "v4_int32", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v2i64");
|
|
+ tdesc_add_field (type, "v2_int64", field_type);
|
|
+ field_type = tdesc_named_type (feature, "uint128");
|
|
+ tdesc_add_field (type, "uint128", field_type);
|
|
+
|
|
+ tdesc_create_reg (feature, "v0l", 90, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v1l", 91, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v2l", 92, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v3l", 93, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v4l", 94, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v5l", 95, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v6l", 96, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v7l", 97, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v8l", 98, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v9l", 99, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v10l", 100, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v11l", 101, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v12l", 102, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v13l", 103, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v14l", 104, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v15l", 105, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v16", 106, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v17", 107, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v18", 108, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v19", 109, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v20", 110, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v21", 111, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v22", 112, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v23", 113, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v24", 114, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v25", 115, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v26", 116, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v27", 117, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v28", 118, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v29", 119, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v30", 120, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v31", 121, 1, NULL, 128, "vec128");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.gs");
|
|
+ tdesc_create_reg (feature, "gsd", 122, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "gssm", 123, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "gsepla", 124, 1, "gs", 64, "data_ptr");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.gsbc");
|
|
+ tdesc_create_reg (feature, "bc_gsd", 125, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "bc_gssm", 126, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "bc_gsepla", 127, 1, "gs", 64, "data_ptr");
|
|
+
|
|
+ tdesc_s390_gs_linux64 = result;
|
|
+}
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390-gs-linux64.xml
|
|
@@ -0,0 +1,28 @@
|
|
+<?xml version="1.0"?>
|
|
+<!-- Copyright (C) 2017 Free Software Foundation, Inc.
|
|
+
|
|
+ Copying and distribution of this file, with or without modification,
|
|
+ are permitted in any medium without royalty provided the copyright
|
|
+ notice and this notice are preserved. -->
|
|
+
|
|
+<!-- S/390 31-bit user-level code on a machine operating
|
|
+ in z/Architecture mode. -->
|
|
+
|
|
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
|
+<target>
|
|
+ <architecture>s390:31-bit</architecture>
|
|
+ <xi:include href="s390-core64.xml"/>
|
|
+ <xi:include href="s390-acr.xml"/>
|
|
+ <xi:include href="s390-fpr.xml"/>
|
|
+
|
|
+ <feature name="org.gnu.gdb.s390.linux">
|
|
+ <reg name="orig_r2" bitsize="32" type="uint32" group="system"/>
|
|
+ <reg name="last_break" bitsize="32" type="code_ptr" group="system" save-restore="no"/>
|
|
+ <reg name="system_call" bitsize="32" type="uint32" group="system"/>
|
|
+ </feature>
|
|
+
|
|
+ <xi:include href="s390-tdb.xml"/>
|
|
+ <xi:include href="s390-vx.xml"/>
|
|
+ <xi:include href="s390-gs.xml"/>
|
|
+ <xi:include href="s390-gsbc.xml"/>
|
|
+</target>
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390-gs.xml
|
|
@@ -0,0 +1,13 @@
|
|
+<?xml version="1.0"?>
|
|
+<!-- Copyright (C) 2017 Free Software Foundation, Inc.
|
|
+
|
|
+ Copying and distribution of this file, with or without modification,
|
|
+ are permitted in any medium without royalty provided the copyright
|
|
+ notice and this notice are preserved. -->
|
|
+
|
|
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
|
+<feature name="org.gnu.gdb.s390.gs">
|
|
+ <reg name="gsd" bitsize="64" type="uint64" group="gs"/>
|
|
+ <reg name="gssm" bitsize="64" type="uint64" group="gs"/>
|
|
+ <reg name="gsepla" bitsize="64" type="data_ptr" group="gs"/>
|
|
+</feature>
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390-gsbc.xml
|
|
@@ -0,0 +1,13 @@
|
|
+<?xml version="1.0"?>
|
|
+<!-- Copyright (C) 2017 Free Software Foundation, Inc.
|
|
+
|
|
+ Copying and distribution of this file, with or without modification,
|
|
+ are permitted in any medium without royalty provided the copyright
|
|
+ notice and this notice are preserved. -->
|
|
+
|
|
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
|
+<feature name="org.gnu.gdb.s390.gsbc">
|
|
+ <reg name="bc_gsd" bitsize="64" type="uint64" group="gs"/>
|
|
+ <reg name="bc_gssm" bitsize="64" type="uint64" group="gs"/>
|
|
+ <reg name="bc_gsepla" bitsize="64" type="data_ptr" group="gs"/>
|
|
+</feature>
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390x-gs-linux64.c
|
|
@@ -0,0 +1,182 @@
|
|
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
|
+ Original: s390x-gs-linux64.xml */
|
|
+
|
|
+#include "defs.h"
|
|
+#include "osabi.h"
|
|
+#include "target-descriptions.h"
|
|
+
|
|
+struct target_desc *tdesc_s390x_gs_linux64;
|
|
+static void
|
|
+initialize_tdesc_s390x_gs_linux64 (void)
|
|
+{
|
|
+ struct target_desc *result = allocate_target_description ();
|
|
+ struct tdesc_feature *feature;
|
|
+ struct tdesc_type *field_type;
|
|
+ struct tdesc_type *type;
|
|
+
|
|
+ set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
|
|
+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr");
|
|
+ tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr");
|
|
+ tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32");
|
|
+ tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double");
|
|
+ tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux");
|
|
+ tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr");
|
|
+ tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb");
|
|
+ tdesc_create_reg (feature, "tdb0", 54, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tac", 55, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tct", 56, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "atia", 57, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr0", 58, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr1", 59, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr2", 60, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr3", 61, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr4", 62, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr5", 63, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr6", 64, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr7", 65, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr8", 66, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr9", 67, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr10", 68, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr11", 69, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr12", 70, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr13", 71, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr14", 72, 1, "tdb", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
|
|
+ field_type = tdesc_named_type (feature, "ieee_single");
|
|
+ tdesc_create_vector (feature, "v4f", field_type, 4);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "ieee_double");
|
|
+ tdesc_create_vector (feature, "v2d", field_type, 2);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int8");
|
|
+ tdesc_create_vector (feature, "v16i8", field_type, 16);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int16");
|
|
+ tdesc_create_vector (feature, "v8i16", field_type, 8);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int32");
|
|
+ tdesc_create_vector (feature, "v4i32", field_type, 4);
|
|
+
|
|
+ field_type = tdesc_named_type (feature, "int64");
|
|
+ tdesc_create_vector (feature, "v2i64", field_type, 2);
|
|
+
|
|
+ type = tdesc_create_union (feature, "vec128");
|
|
+ field_type = tdesc_named_type (feature, "v4f");
|
|
+ tdesc_add_field (type, "v4_float", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v2d");
|
|
+ tdesc_add_field (type, "v2_double", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v16i8");
|
|
+ tdesc_add_field (type, "v16_int8", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v8i16");
|
|
+ tdesc_add_field (type, "v8_int16", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v4i32");
|
|
+ tdesc_add_field (type, "v4_int32", field_type);
|
|
+ field_type = tdesc_named_type (feature, "v2i64");
|
|
+ tdesc_add_field (type, "v2_int64", field_type);
|
|
+ field_type = tdesc_named_type (feature, "uint128");
|
|
+ tdesc_add_field (type, "uint128", field_type);
|
|
+
|
|
+ tdesc_create_reg (feature, "v0l", 74, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v1l", 75, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v2l", 76, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v3l", 77, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v4l", 78, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v5l", 79, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v6l", 80, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v7l", 81, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v8l", 82, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v9l", 83, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v10l", 84, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v11l", 85, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v12l", 86, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v13l", 87, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v14l", 88, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v15l", 89, 1, NULL, 64, "uint64");
|
|
+ tdesc_create_reg (feature, "v16", 90, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v17", 91, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v18", 92, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v19", 93, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v20", 94, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v21", 95, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v22", 96, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v23", 97, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v24", 98, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v25", 99, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v26", 100, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v27", 101, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v28", 102, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v29", 103, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v30", 104, 1, NULL, 128, "vec128");
|
|
+ tdesc_create_reg (feature, "v31", 105, 1, NULL, 128, "vec128");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.gs");
|
|
+ tdesc_create_reg (feature, "gsd", 106, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "gssm", 107, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "gsepla", 108, 1, "gs", 64, "data_ptr");
|
|
+
|
|
+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.gsbc");
|
|
+ tdesc_create_reg (feature, "bc_gsd", 109, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "bc_gssm", 110, 1, "gs", 64, "uint64");
|
|
+ tdesc_create_reg (feature, "bc_gsepla", 111, 1, "gs", 64, "data_ptr");
|
|
+
|
|
+ tdesc_s390x_gs_linux64 = result;
|
|
+}
|
|
--- /dev/null
|
|
+++ b/gdb/features/s390x-gs-linux64.xml
|
|
@@ -0,0 +1,27 @@
|
|
+<?xml version="1.0"?>
|
|
+<!-- Copyright (C) 2017 Free Software Foundation, Inc.
|
|
+
|
|
+ Copying and distribution of this file, with or without modification,
|
|
+ are permitted in any medium without royalty provided the copyright
|
|
+ notice and this notice are preserved. -->
|
|
+
|
|
+<!-- S/390 64-bit user-level code. -->
|
|
+
|
|
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
|
+<target>
|
|
+ <architecture>s390:64-bit</architecture>
|
|
+ <xi:include href="s390x-core64.xml"/>
|
|
+ <xi:include href="s390-acr.xml"/>
|
|
+ <xi:include href="s390-fpr.xml"/>
|
|
+
|
|
+ <feature name="org.gnu.gdb.s390.linux">
|
|
+ <reg name="orig_r2" bitsize="64" type="uint64" group="system"/>
|
|
+ <reg name="last_break" bitsize="64" type="code_ptr" group="system" save-restore="no"/>
|
|
+ <reg name="system_call" bitsize="32" type="uint32" group="system"/>
|
|
+ </feature>
|
|
+
|
|
+ <xi:include href="s390-tdb.xml"/>
|
|
+ <xi:include href="s390-vx.xml"/>
|
|
+ <xi:include href="s390-gs.xml"/>
|
|
+ <xi:include href="s390-gsbc.xml"/>
|
|
+</target>
|
|
--- /dev/null
|
|
+++ b/gdb/regformats/s390-gs-linux64.dat
|
|
@@ -0,0 +1,133 @@
|
|
+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
|
|
+# Generated from: s390-gs-linux64.xml
|
|
+name:s390_gs_linux64
|
|
+xmltarget:s390-gs-linux64.xml
|
|
+expedite:r14,r15,pswa
|
|
+32:pswm
|
|
+32:pswa
|
|
+32:r0h
|
|
+32:r0l
|
|
+32:r1h
|
|
+32:r1l
|
|
+32:r2h
|
|
+32:r2l
|
|
+32:r3h
|
|
+32:r3l
|
|
+32:r4h
|
|
+32:r4l
|
|
+32:r5h
|
|
+32:r5l
|
|
+32:r6h
|
|
+32:r6l
|
|
+32:r7h
|
|
+32:r7l
|
|
+32:r8h
|
|
+32:r8l
|
|
+32:r9h
|
|
+32:r9l
|
|
+32:r10h
|
|
+32:r10l
|
|
+32:r11h
|
|
+32:r11l
|
|
+32:r12h
|
|
+32:r12l
|
|
+32:r13h
|
|
+32:r13l
|
|
+32:r14h
|
|
+32:r14l
|
|
+32:r15h
|
|
+32:r15l
|
|
+32:acr0
|
|
+32:acr1
|
|
+32:acr2
|
|
+32:acr3
|
|
+32:acr4
|
|
+32:acr5
|
|
+32:acr6
|
|
+32:acr7
|
|
+32:acr8
|
|
+32:acr9
|
|
+32:acr10
|
|
+32:acr11
|
|
+32:acr12
|
|
+32:acr13
|
|
+32:acr14
|
|
+32:acr15
|
|
+32:fpc
|
|
+64:f0
|
|
+64:f1
|
|
+64:f2
|
|
+64:f3
|
|
+64:f4
|
|
+64:f5
|
|
+64:f6
|
|
+64:f7
|
|
+64:f8
|
|
+64:f9
|
|
+64:f10
|
|
+64:f11
|
|
+64:f12
|
|
+64:f13
|
|
+64:f14
|
|
+64:f15
|
|
+32:orig_r2
|
|
+32:last_break
|
|
+32:system_call
|
|
+64:tdb0
|
|
+64:tac
|
|
+64:tct
|
|
+64:atia
|
|
+64:tr0
|
|
+64:tr1
|
|
+64:tr2
|
|
+64:tr3
|
|
+64:tr4
|
|
+64:tr5
|
|
+64:tr6
|
|
+64:tr7
|
|
+64:tr8
|
|
+64:tr9
|
|
+64:tr10
|
|
+64:tr11
|
|
+64:tr12
|
|
+64:tr13
|
|
+64:tr14
|
|
+64:tr15
|
|
+64:v0l
|
|
+64:v1l
|
|
+64:v2l
|
|
+64:v3l
|
|
+64:v4l
|
|
+64:v5l
|
|
+64:v6l
|
|
+64:v7l
|
|
+64:v8l
|
|
+64:v9l
|
|
+64:v10l
|
|
+64:v11l
|
|
+64:v12l
|
|
+64:v13l
|
|
+64:v14l
|
|
+64:v15l
|
|
+128:v16
|
|
+128:v17
|
|
+128:v18
|
|
+128:v19
|
|
+128:v20
|
|
+128:v21
|
|
+128:v22
|
|
+128:v23
|
|
+128:v24
|
|
+128:v25
|
|
+128:v26
|
|
+128:v27
|
|
+128:v28
|
|
+128:v29
|
|
+128:v30
|
|
+128:v31
|
|
+64:gsd
|
|
+64:gssm
|
|
+64:gsepla
|
|
+64:bc_gsd
|
|
+64:bc_gssm
|
|
+64:bc_gsepla
|
|
--- /dev/null
|
|
+++ b/gdb/regformats/s390x-gs-linux64.dat
|
|
@@ -0,0 +1,117 @@
|
|
+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro:
|
|
+# Generated from: s390x-gs-linux64.xml
|
|
+name:s390x_gs_linux64
|
|
+xmltarget:s390x-gs-linux64.xml
|
|
+expedite:r14,r15,pswa
|
|
+64:pswm
|
|
+64:pswa
|
|
+64:r0
|
|
+64:r1
|
|
+64:r2
|
|
+64:r3
|
|
+64:r4
|
|
+64:r5
|
|
+64:r6
|
|
+64:r7
|
|
+64:r8
|
|
+64:r9
|
|
+64:r10
|
|
+64:r11
|
|
+64:r12
|
|
+64:r13
|
|
+64:r14
|
|
+64:r15
|
|
+32:acr0
|
|
+32:acr1
|
|
+32:acr2
|
|
+32:acr3
|
|
+32:acr4
|
|
+32:acr5
|
|
+32:acr6
|
|
+32:acr7
|
|
+32:acr8
|
|
+32:acr9
|
|
+32:acr10
|
|
+32:acr11
|
|
+32:acr12
|
|
+32:acr13
|
|
+32:acr14
|
|
+32:acr15
|
|
+32:fpc
|
|
+64:f0
|
|
+64:f1
|
|
+64:f2
|
|
+64:f3
|
|
+64:f4
|
|
+64:f5
|
|
+64:f6
|
|
+64:f7
|
|
+64:f8
|
|
+64:f9
|
|
+64:f10
|
|
+64:f11
|
|
+64:f12
|
|
+64:f13
|
|
+64:f14
|
|
+64:f15
|
|
+64:orig_r2
|
|
+64:last_break
|
|
+32:system_call
|
|
+64:tdb0
|
|
+64:tac
|
|
+64:tct
|
|
+64:atia
|
|
+64:tr0
|
|
+64:tr1
|
|
+64:tr2
|
|
+64:tr3
|
|
+64:tr4
|
|
+64:tr5
|
|
+64:tr6
|
|
+64:tr7
|
|
+64:tr8
|
|
+64:tr9
|
|
+64:tr10
|
|
+64:tr11
|
|
+64:tr12
|
|
+64:tr13
|
|
+64:tr14
|
|
+64:tr15
|
|
+64:v0l
|
|
+64:v1l
|
|
+64:v2l
|
|
+64:v3l
|
|
+64:v4l
|
|
+64:v5l
|
|
+64:v6l
|
|
+64:v7l
|
|
+64:v8l
|
|
+64:v9l
|
|
+64:v10l
|
|
+64:v11l
|
|
+64:v12l
|
|
+64:v13l
|
|
+64:v14l
|
|
+64:v15l
|
|
+128:v16
|
|
+128:v17
|
|
+128:v18
|
|
+128:v19
|
|
+128:v20
|
|
+128:v21
|
|
+128:v22
|
|
+128:v23
|
|
+128:v24
|
|
+128:v25
|
|
+128:v26
|
|
+128:v27
|
|
+128:v28
|
|
+128:v29
|
|
+128:v30
|
|
+128:v31
|
|
+64:gsd
|
|
+64:gssm
|
|
+64:gsepla
|
|
+64:bc_gsd
|
|
+64:bc_gssm
|
|
+64:bc_gsepla
|