[PATCH v7 047/104] tests/tcg/arm: user tests
Pierrick Bouvier <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
Tested-by: Aniket Sahu <[email protected]> Signed-off-by: Pierrick Bouvier <[email protected]> --- tests/tcg/arm/Makefile.target | 87 ----------------------------------- tests/tcg/arm/meson.build | 78 +++++++++++++++++++++++++++++++ tests/tcg/meson.build | 1 + 3 files changed, 79 insertions(+), 87 deletions(-) delete mode 100644 tests/tcg/arm/Makefile.target create mode 100644 tests/tcg/arm/meson.build diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target deleted file mode 100644 index 613bbf0939a..00000000000 --- a/tests/tcg/arm/Makefile.target +++ /dev/null @@ -1,87 +0,0 @@ -# -*- Mode: makefile -*- -# -# ARM - included from tests/tcg/Makefile -# - -ARM_SRC=$(SRC_PATH)/tests/tcg/arm - -# Set search path for all sources -VPATH += $(ARM_SRC) - -config-cc.mak: Makefile - $(quiet-@)( \ - $(call cc-option,-fno-integrated-as, CROSS_CC_HAS_FNIA)) 3> config-cc.mak --include config-cc.mak - -float_madds: CFLAGS+=-mfpu=neon-vfpv4 - -# Basic Hello World -ARM_TESTS = hello-arm -hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector -hello-arm: LDFLAGS+=-nostdlib - -# Float-convert Tests -ARM_TESTS += fcvt -fcvt: LDFLAGS += -lm -fcvt: CFLAGS += -march=armv8.2-a+fp16 -mfpu=neon-fp-armv8 -run-fcvt: fcvt - $(call run-test,fcvt,$(QEMU) $<) - $(call diff-out,fcvt,$(ARM_SRC)/fcvt.ref) - -# PC alignment test -ARM_TESTS += pcalign-a32 -pcalign-a32: CFLAGS+=-marm - -ifeq ($(CONFIG_ARM_COMPATIBLE_SEMIHOSTING),y) - -# Semihosting smoke test for linux-user -semihosting: CFLAGS += -mthumb - -ARM_TESTS += semihosting-arm -semihosting-arm: CFLAGS += -marm -I$(SRC_PATH)/tests/tcg/$(TARGET_NAME) -semihosting-arm: semihosting.c - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) - -run-semihosting-arm: semihosting-arm - $(call run-test,$<,$(QEMU) $< 2> $<.err) - -ARM_TESTS += semiconsole-arm - -semiconsole: CFLAGS += -mthumb - -semiconsole-arm: CFLAGS += -marm -I$(SRC_PATH)/tests/tcg/$(TARGET_NAME) -semiconsole-arm: semihosting.c - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) - -run-semiconsole-arm: semiconsole-arm - $(call skip-test, $<, "MANUAL ONLY") - -endif - -ARM_TESTS += commpage - -# Vector SHA1 -# Work around compiler false-positive warning, as we do for the 'sha1' test -sha1-vector: CFLAGS=-O3 -Wno-stringop-overread -sha1-vector: sha1.c - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) -run-sha1-vector: sha1-vector run-sha1 - $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<) - $(call diff-out, sha1-vector, sha1.out) - -ARM_TESTS += sha1-vector - -# Vector versions of sha512 (-O3 triggers vectorisation) -sha512-vector: CFLAGS=-O3 -sha512-vector: sha512.c - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) - -ARM_TESTS += sha512-vector - -ifeq ($(CONFIG_PLUGIN),y) -# Require emitting arm32 instructions, otherwise the vCPU might accidentally -# try to execute Thumb instructions in arm32 mode after qemu_plugin_set_pc() -test-plugin-set-pc: CFLAGS+=-marm -endif - -TESTS += $(ARM_TESTS) diff --git a/tests/tcg/arm/meson.build b/tests/tcg/arm/meson.build new file mode 100644 index 00000000000..08a863699fb --- /dev/null +++ b/tests/tcg/arm/meson.build @@ -0,0 +1,78 @@ +cc = 'arm-linux-gnueabihf-gcc' +cc_dockerfile = 'debian-all-test-cross' +cc_docker_host_arch = ['aarch64', 'x86_64'] + +tests = [] + +# Multi arch tests +multi_src = [] +foreach t: tcg_tests['multiarch-linux-user']['tests'] + foreach src, setup: t + new_cflags = [] + if 'cflags' in setup + new_cflags = setup['cflags'] + endif + if fs.stem(src) == 'float_madds' + new_cflags += ['-mfpu=neon-vfpv4'] + elif fs.stem(src) == 'test-plugin-set-pc' + # Require emitting arm32 insns, otherwise the vCPU might accidentally + # try to execute Thumb insns in arm32 mode after qemu_plugin_set_pc() + new_cflags += ['-marm'] + endif + if src not in multi_src + setup += {'cflags': new_cflags} + multi_src += src + endif + tests += {src: setup} + endforeach +endforeach + +tests += { + 'commpage.c': {}, + 'hello-arm.c': { + 'cflags': ['-marm', '-nostdlib', '-ffreestanding', '-fno-stack-protector'], + }, + 'fcvt.c': { + 'cflags': ['-lm', '-march=armv8.2-a+fp16', '-mfpu=neon-fp-armv8'], + 'expected_output': 'fcvt.ref', + }, + 'pcalign-a32.c': {'cflags': ['-marm']}, +} + +# Vector SHA1 +# Work around compiler false-positive warning, as we do for the 'sha1' test +tests += {'../multiarch/sha1.c': { + 'exe_name': 'sha1-vector', + 'cflags': ['-O3', '-Wno-stringop-overread'], + 'expected_output': '../multiarch/sha1.ref', + }} + +# Vector versions of sha512 (-O3 triggers vectorisation) +tests += {'../multiarch/sha512.c': { + 'exe_name': 'sha512-vector', + 'cflags': ['-O3'], + }} + +# Semihosting tests +semihosting_cflags = ['-marm', '-mthumb', '-I', meson.current_source_dir()] +tests += { + '../multiarch/arm-compat-semi/semiconsole.c': { + 'cflags': semihosting_cflags, + 'wrapper': [prog_run_with_input, 'X'], + }, + '../multiarch/arm-compat-semi/semihosting.c': {'cflags': semihosting_cflags}, +} + +if 'qemu-arm' in emulators + tcg_tests += { + 'arm-linux-user': { + 'cc': cc, + 'cc_dockerfile': cc_dockerfile, + 'cc_docker_host_arch': cc_docker_host_arch, + 'folder': 'arm', + 'gdb_arch': 'arm', + 'qemu': emulators['qemu-arm'], + 'tests': tests, + } + } +endif diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build index e0789d9c1eb..17f48bebf98 100644 --- a/tests/tcg/meson.build +++ b/tests/tcg/meson.build @@ -139,6 +139,7 @@ endforeach subdir('aarch64') subdir('aarch64_be') subdir('alpha') +subdir('arm') image_targets = {} exe_targets = [] -- 2.43.0