Signed-off-by: Pierrick Bouvier <[email protected]>
---
tests/tcg/meson.build | 1 +
tests/tcg/s390x/Makefile.target | 127 -----------------------------
tests/tcg/s390x/meson.build | 138 ++++++++++++++++++++++++++++++++
3 files changed, 139 insertions(+), 127 deletions(-)
delete mode 100644 tests/tcg/s390x/Makefile.target
create mode 100644 tests/tcg/s390x/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index d2501e6a43e..014959c38cb 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -149,6 +149,7 @@ subdir('or1k')
subdir('ppc64')
subdir('ppc64le')
subdir('riscv64')
+subdir('s390x')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target
deleted file mode 100644
index 0ca030ded01..00000000000
--- a/tests/tcg/s390x/Makefile.target
+++ /dev/null
@@ -1,127 +0,0 @@
-S390X_SRC=$(SRC_PATH)/tests/tcg/s390x
-VPATH+=$(S390X_SRC)
-CFLAGS+=-march=zEC12 -m64
-
-%.o: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-march=z14, CROSS_CC_HAS_Z14); \
- $(call cc-option,-march=z15, CROSS_CC_HAS_Z15)) 3> config-cc.mak
--include config-cc.mak
-
-TESTS+=hello-s390x
-TESTS+=csst
-TESTS+=ipm
-TESTS+=exrl-trt
-TESTS+=exrl-trtr
-TESTS+=pack
-TESTS+=mie3-compl
-TESTS+=mie3-mvcrl
-TESTS+=mie3-sel
-TESTS+=mvo
-TESTS+=mvc
-TESTS+=shift
-TESTS+=trap
-TESTS+=signals-s390x
-TESTS+=branch-relative-long
-TESTS+=noexec
-TESTS+=div
-TESTS+=clst
-TESTS+=long-double
-TESTS+=cdsg
-TESTS+=chrl
-TESTS+=rxsbg
-TESTS+=ex-relative-long
-TESTS+=ex-branch
-TESTS+=mxdb
-TESTS+=epsw
-TESTS+=larl
-TESTS+=mdeb
-TESTS+=cgebra
-TESTS+=clgebr
-TESTS+=clc
-TESTS+=laalg
-TESTS+=add-logical-with-carry
-TESTS+=lae
-TESTS+=cvd
-TESTS+=cvb
-TESTS+=ts
-TESTS+=ex-smc
-TESTS+=divide-to-integer
-
-cdsg: CFLAGS+=-pthread
-cdsg: LDFLAGS+=-pthread
-
-# The following tests contain inline assembly that requires inlining,
-# and thus cannot be built with -O0.
-rxsbg: CFLAGS+=-O2
-divide-to-integer: CFLAGS+=-O2
-
-cgebra: LDFLAGS+=-lm
-clgebr: LDFLAGS+=-lm
-divide-to-integer: LDFLAGS+=-lm
-
-include $(S390X_SRC)/pgm-specification.mak
-$(PGM_SPECIFICATION_TESTS): pgm-specification-user.o
-$(PGM_SPECIFICATION_TESTS): LDFLAGS+=pgm-specification-user.o
-TESTS += $(PGM_SPECIFICATION_TESTS)
-
-Z13_TESTS=vistr
-Z13_TESTS+=lcbb
-Z13_TESTS+=locfhr
-Z13_TESTS+=vcksm
-Z13_TESTS+=vstl
-Z13_TESTS+=vrep
-Z13_TESTS+=precise-smc-user
-$(Z13_TESTS): CFLAGS+=-march=z13 -O2
-TESTS+=$(Z13_TESTS)
-
-ifneq ($(CROSS_CC_HAS_Z14),)
-Z14_TESTS=fma vfminmax
-fma: float.h
-fma: LDFLAGS+=-lm
-vfminmax: LDFLAGS+=-lm
-vfminmax: float.h
-$(Z14_TESTS): CFLAGS+=-march=z14 -O2
-TESTS+=$(Z14_TESTS)
-endif
-
-ifneq ($(CROSS_CC_HAS_Z15),)
-Z15_TESTS=vxeh2_vs
-Z15_TESTS+=vxeh2_vcvt
-Z15_TESTS+=vxeh2_vlstr
-Z15_TESTS+=vxeh2_vstrs
-$(Z15_TESTS): CFLAGS+=-march=z15 -O2
-TESTS+=$(Z15_TESTS)
-endif
-
-ifneq ($(GDB),)
-GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
-
-run-gdbstub-signals-s390x: signals-s390x
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(S390X_SRC)/gdbstub/test-signals-s390x.py, \
- mixing signals and debugging)
-
-hello-s390x-asm: CFLAGS+=-nostdlib
-
-run-gdbstub-svc: hello-s390x-asm
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(S390X_SRC)/gdbstub/test-svc.py, \
- single-stepping svc)
-
-EXTRA_RUNS += run-gdbstub-signals-s390x run-gdbstub-svc
-endif
-
-# MVX versions of sha512
-sha512-mvx: CFLAGS=-march=z13 -mvx -O3
-sha512-mvx: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-TESTS+=sha512-mvx
diff --git a/tests/tcg/s390x/meson.build b/tests/tcg/s390x/meson.build
new file mode 100644
index 00000000000..3adb7dc464c
--- /dev/null
+++ b/tests/tcg/s390x/meson.build
@@ -0,0 +1,138 @@
+cc = 's390x-linux-gnu-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_host_arch = ['aarch64', 'x86_64']
+
+cc_feat_cflags = {
+ 'z14': '-march=z14',
+ 'z15': '-march=z15',
+}
+
+tests_s390x_pgm = [
+ 'br-odd.S',
+ 'cgrl-unaligned.S',
+ 'clrl-unaligned.S',
+ 'crl-unaligned.S',
+ 'ex-odd.S',
+ 'lgrl-unaligned.S',
+ 'llgfrl-unaligned.S',
+ 'lpswe-unaligned.S',
+ 'lrl-unaligned.S',
+ 'stgrl-unaligned.S',
+ 'strl-unaligned.S',
+]
+
+tests = []
+
+# Multi arch tests
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ # The following tests contain inline assembly that requires inlining,
+ # and thus cannot be built with -O0.
+ 'rxsbg.c': {'cflags': ['-O2']},
+ 'divide-to-integer.c': {'cflags': ['-O2', '-lm']},
+
+ 'hello-s390x.c': {},
+ 'hello-s390x-asm.S': {'cflags': ['-nostdlib']},
+ 'csst.c': {},
+ 'ipm.c': {},
+ 'exrl-trt.c': {},
+ 'exrl-trtr.c': {},
+ 'pack.c': {},
+ 'mie3-compl.c': {},
+ 'mie3-mvcrl.c': {},
+ 'mie3-sel.c': {},
+ 'mvo.c': {},
+ 'mvc.c': {},
+ 'shift.c': {},
+ 'trap.c': {},
+ 'signals-s390x.c': {},
+ 'branch-relative-long.c': {},
+ 'noexec.c': {},
+ 'div.c': {},
+ 'clst.c': {},
+ 'long-double.c': {},
+ 'cdsg.c': {},
+ 'chrl.c': {},
+ 'ex-relative-long.c': {},
+ 'ex-branch.c': {},
+ 'mxdb.c': {},
+ 'epsw.c': {},
+ 'larl.c': {},
+ 'mdeb.c': {},
+ 'cgebra.c': {'cflags': ['-lm']},
+ 'clgebr.c': {'cflags': ['-lm']},
+ 'clc.c': {},
+ 'laalg.c': {},
+ 'add-logical-with-carry.c': {},
+ 'lae.c': {},
+ 'cvd.c': {},
+ 'cvb.c': {},
+ 'ts.c': {},
+ 'ex-smc.c': {'cflags': ['-Wl,--no-warn-rwx-segments']},
+}
+
+foreach src: tests_s390x_pgm
+ tests += {
+ src: {'cflags': [files('pgm-specification-user.c')]}
+ }
+endforeach
+
+setup_z13 = {'cflags': ['-O2', '-march=z13']}
+tests += {
+ 'vistr.c': setup_z13,
+ 'lcbb.c': setup_z13,
+ 'locfhr.c': setup_z13,
+ 'vcksm.c': setup_z13,
+ 'vstl.c': setup_z13,
+ 'vrep.c': setup_z13,
+ 'precise-smc-user.c': setup_z13,
+ '../multiarch/sha512.c': {
+ 'exe_name': 'sha512-mvx',
+ 'cflags': setup_z13['cflags'] + ['-mvx', '-O3'],
+ }
+}
+
+setup_z14 = {
+ 'cc_feat': 'z14',
+ 'cflags': ['-O2', '-lm', '-Wl,--no-warn-rwx-segments']
+}
+tests += {
+ 'fma.c': setup_z14,
+ 'vfminmax.c': setup_z14,
+}
+
+setup_z15 = {'cc_feat': 'z15', 'cflags': ['-O2']}
+tests += {
+ 'vxeh2_vs.c': setup_z15,
+ 'vxeh2_vcvt.c': setup_z15,
+ 'vxeh2_vlstr.c': setup_z15,
+ 'vxeh2_vstrs.c': setup_z15,
+}
+
+tests += {
+ 'signals-s390x.c': {
+ 'test_name': 'signals',
+ 'gdb_test': ['--test', files('gdbstub/test-signals-s390x.py')],
+ },
+ 'hello-s390x-asm.S': {
+ 'test_name': 'svc',
+ 'gdb_test': ['--test', files('gdbstub/test-svc.py')],
+ },
+}
+
+if 'qemu-s390x' in emulators
+ tcg_tests += {
+ 's390x-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_host_arch': cc_docker_host_arch,
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 's390x',
+ 'gdb_arch': 's390x',
+ 'gdb_feat_version': gdb_feat_version,
+ 'qemu': emulators['qemu-s390x'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3