127 lines
4.7 KiB
Diff
127 lines
4.7 KiB
Diff
commit 3a2711c659ac839934f13e0529e14d6c15325383
|
|
Author: Andreas Arnez <arnez@linux.ibm.com>
|
|
Date: Thu Feb 27 15:52:53 2020 +0100
|
|
|
|
s390x: Add CPU model for z15
|
|
|
|
Make the z15 CPU models known to Valgrind. Add test case output for z15
|
|
to the "ecag" test. Also ensure that the facility bits for CPU facilities
|
|
unsupported by Valgrind are unset, particularly for the new
|
|
deflate-conversion facility.
|
|
|
|
diff --git a/VEX/priv/guest_s390_helpers.c b/VEX/priv/guest_s390_helpers.c
|
|
index 525e7000c..a470d9f8d 100644
|
|
--- a/VEX/priv/guest_s390_helpers.c
|
|
+++ b/VEX/priv/guest_s390_helpers.c
|
|
@@ -377,6 +377,9 @@ s390x_dirtyhelper_STFLE(VexGuestS390XState *guest_state, ULong *addr)
|
|
s390_set_facility_bit(addr, S390_FAC_CTREXE, 0);
|
|
s390_set_facility_bit(addr, S390_FAC_TREXE, 0);
|
|
s390_set_facility_bit(addr, S390_FAC_MSA4, 0);
|
|
+ s390_set_facility_bit(addr, S390_FAC_VXE, 0);
|
|
+ s390_set_facility_bit(addr, S390_FAC_VXE2, 0);
|
|
+ s390_set_facility_bit(addr, S390_FAC_DFLT, 0);
|
|
|
|
return cc;
|
|
}
|
|
diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h
|
|
index 359d10809..6da26dcb5 100644
|
|
--- a/VEX/pub/libvex.h
|
|
+++ b/VEX/pub/libvex.h
|
|
@@ -147,7 +147,8 @@ typedef
|
|
#define VEX_S390X_MODEL_Z13S 13
|
|
#define VEX_S390X_MODEL_Z14 14
|
|
#define VEX_S390X_MODEL_Z14_ZR1 15
|
|
-#define VEX_S390X_MODEL_UNKNOWN 16 /* always last in list */
|
|
+#define VEX_S390X_MODEL_Z15 16
|
|
+#define VEX_S390X_MODEL_UNKNOWN 17 /* always last in list */
|
|
#define VEX_S390X_MODEL_MASK 0x3F
|
|
|
|
#define VEX_HWCAPS_S390X_LDISP (1<<6) /* Long-displacement facility */
|
|
diff --git a/VEX/pub/libvex_s390x_common.h b/VEX/pub/libvex_s390x_common.h
|
|
index d945a4472..289421677 100644
|
|
--- a/VEX/pub/libvex_s390x_common.h
|
|
+++ b/VEX/pub/libvex_s390x_common.h
|
|
@@ -103,6 +103,9 @@
|
|
#define S390_FAC_TREXE 73 // transactional execution
|
|
#define S390_FAC_MSA4 77 // message-security-assist 4
|
|
#define S390_FAC_VX 129 // vector facility
|
|
+#define S390_FAC_VXE 135 // vector enhancements facility 1
|
|
+#define S390_FAC_VXE2 148 // vector enhancements facility 2
|
|
+#define S390_FAC_DFLT 151 // deflate-conversion facility
|
|
|
|
|
|
/*--------------------------------------------------------------*/
|
|
diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
|
|
index 672a02124..0fd1d21c7 100644
|
|
--- a/coregrind/m_machine.c
|
|
+++ b/coregrind/m_machine.c
|
|
@@ -581,6 +581,8 @@ static UInt VG_(get_machine_model)(void)
|
|
{ "2965", VEX_S390X_MODEL_Z13S },
|
|
{ "3906", VEX_S390X_MODEL_Z14 },
|
|
{ "3907", VEX_S390X_MODEL_Z14_ZR1 },
|
|
+ { "8561", VEX_S390X_MODEL_Z15 },
|
|
+ { "8562", VEX_S390X_MODEL_Z15 },
|
|
};
|
|
|
|
Int model, n, fh;
|
|
diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am
|
|
index c5b07f7a2..a0fb92ef5 100644
|
|
--- a/none/tests/s390x/Makefile.am
|
|
+++ b/none/tests/s390x/Makefile.am
|
|
@@ -39,7 +39,7 @@ EXTRA_DIST = \
|
|
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
|
|
$(addsuffix .vgtest,$(INSN_TESTS)) \
|
|
ecag.stdout.exp-z10ec ecag.stdout.exp-z196 ecag.stdout.exp-zec12 \
|
|
- ecag.stdout.exp-z13 ecag.stdout.exp-z14 \
|
|
+ ecag.stdout.exp-z13 ecag.stdout.exp-z14 ecag.stdout.exp-z15 \
|
|
op00.stderr.exp1 op00.stderr.exp2 op00.vgtest \
|
|
fixbr.vgtest fixbr.stderr.exp fixbr.stdout.exp \
|
|
fpext.vgtest fpext.stderr.exp fpext.stdout.exp \
|
|
diff --git a/none/tests/s390x/ecag.stdout.exp-z15 b/none/tests/s390x/ecag.stdout.exp-z15
|
|
new file mode 100644
|
|
index 000000000..b98d81b78
|
|
--- /dev/null
|
|
+++ b/none/tests/s390x/ecag.stdout.exp-z15
|
|
@@ -0,0 +1,28 @@
|
|
+L1 topology: separate data and instruction; private
|
|
+L1 cache line size data: 256
|
|
+L1 cache line size insn: 256
|
|
+L1 total cachesize data: 131072
|
|
+L1 total cachesize insn: 131072
|
|
+L1 set. assoc. data: 8
|
|
+L1 set. assoc. insn: 8
|
|
+L2 topology: separate data and instruction; private
|
|
+L2 cache line size data: 256
|
|
+L2 cache line size insn: 256
|
|
+L2 total cachesize data: 4194304
|
|
+L2 total cachesize insn: 4194304
|
|
+L2 set. assoc. data: 8
|
|
+L2 set. assoc. insn: 8
|
|
+L3 topology: unified data and instruction; shared
|
|
+L3 cache line size data: 256
|
|
+L3 cache line size insn: 256
|
|
+L3 total cachesize data: 268435456
|
|
+L3 total cachesize insn: 268435456
|
|
+L3 set. assoc. data: 32
|
|
+L3 set. assoc. insn: 32
|
|
+L4 topology: unified data and instruction; shared
|
|
+L4 cache line size data: 256
|
|
+L4 cache line size insn: 256
|
|
+L4 total cachesize data: 1006632960
|
|
+L4 total cachesize insn: 1006632960
|
|
+L4 set. assoc. data: 60
|
|
+L4 set. assoc. insn: 60
|
|
diff --git a/tests/s390x_features.c b/tests/s390x_features.c
|
|
index baa349311..25b98f3a3 100644
|
|
--- a/tests/s390x_features.c
|
|
+++ b/tests/s390x_features.c
|
|
@@ -116,6 +116,8 @@ model_info models[] = {
|
|
{ "2965", "z13s" },
|
|
{ "3906", "z14" },
|
|
{ "3907", "z14 ZR1"},
|
|
+ { "8561", "z15" },
|
|
+ { "8562", "z15" },
|
|
};
|
|
|
|
|