Signed-off-by: Pierrick Bouvier <[email protected]> --- tests/tcg/arm/Makefile.softmmu-target | 80 --------------------------- tests/tcg/arm/meson.build | 2 + tests/tcg/arm/system/meson.build | 66 ++++++++++++++++++++++ 3 files changed, 68 insertions(+), 80 deletions(-) delete mode 100644 tests/tcg/arm/Makefile.softmmu-target create mode 100644 tests/tcg/arm/system/meson.build
diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target deleted file mode 100644 index b66074b0b43..00000000000 --- a/tests/tcg/arm/Makefile.softmmu-target +++ /dev/null @@ -1,80 +0,0 @@ -# -*- Mode: makefile -*- -# -# ARM SoftMMU tests - included from tests/tcg/Makefile -# - -ARM_SRC=$(SRC_PATH)/tests/tcg/arm/system - -# Set search path for all sources -VPATH += $(ARM_SRC) - -# Specific Test Rules - -test-armv6m-undef: test-armv6m-undef.S - $(CC) -mcpu=cortex-m0 -mfloat-abi=soft \ - -Wl,--build-id=none -x assembler-with-cpp \ - $< -o $@ -nostdlib -static \ - -T $(ARM_SRC)/[email protected] - -run-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel - -ARM_TESTS+=test-armv6m-undef - -# These objects provide the basic boot code and helper functions for all tests -CRT_OBJS=boot.o - -ARM_TEST_SRCS=$(wildcard $(ARM_SRC)/*.c) -ARM_TESTS+=$(patsubst $(ARM_SRC)/%.c, %, $(ARM_TEST_SRCS)) - -CRT_PATH=$(ARM_SRC) -LINK_SCRIPT=$(ARM_SRC)/kernel.ld -LDFLAGS=-Wl,-T$(LINK_SCRIPT) -CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC) -LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc - -# building head blobs -.PRECIOUS: $(CRT_OBJS) - -%.o: $(ARM_SRC)/%.S - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@ - -# Build and link the tests -%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) - -memory: CFLAGS+=-DCHECK_UNALIGNED=0 - -# Running -QEMU_BASE_MACHINE=-M virt -cpu max -display none -QEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel - -# console test is manual only -QEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline -run-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel -run-semiconsole: semiconsole - $(call skip-test, $<, "MANUAL ONLY") - $(if $(V),@printf " %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<") -run-plugin-semiconsole-with-%: semiconsole - $(call skip-test, $<, "MANUAL ONLY") - -# Simple Record/Replay Test -.PHONY: memory-record -run-memory-record: memory-record memory - $(call run-test, $<, \ - $(QEMU) -monitor none -display none \ - -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ - -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \ - $(QEMU_OPTS) memory) - -.PHONY: memory-replay -run-memory-replay: memory-replay run-memory-record - $(call run-test, $<, \ - $(QEMU) -monitor none -display none \ - -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ - -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \ - $(QEMU_OPTS) memory) - -EXTRA_RUNS+=run-memory-replay - -TESTS += $(ARM_TESTS) $(MULTIARCH_TESTS) -EXTRA_RUNS+=$(MULTIARCH_RUNS) diff --git a/tests/tcg/arm/meson.build b/tests/tcg/arm/meson.build index 08a863699fb..1b491cea026 100644 --- a/tests/tcg/arm/meson.build +++ b/tests/tcg/arm/meson.build @@ -2,6 +2,8 @@ cc = 'arm-linux-gnueabihf-gcc' cc_dockerfile = 'debian-all-test-cross' cc_docker_host_arch = ['aarch64', 'x86_64'] +subdir('system') + tests = [] # Multi arch tests diff --git a/tests/tcg/arm/system/meson.build b/tests/tcg/arm/system/meson.build new file mode 100644 index 00000000000..d507cf980f6 --- /dev/null +++ b/tests/tcg/arm/system/meson.build @@ -0,0 +1,66 @@ +tests = [] + +minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib' +minilib_printf = files(minilib_dir / 'printf.c')[0] +link_script = files('kernel.ld')[0] +boot = files('boot.S')[0] +cflags = ['-nostdlib', + '-Wa,--noexecstack', + '-I', minilib_dir, minilib_printf, boot, + '-Wl,-T', link_script, + '-lgcc'] +qemu_base_args = ['-display', 'none', + '-semihosting-config', 'enable=on', + '-kernel'] +qemu_def_args = ['-M', 'virt', '-cpu', 'max', qemu_base_args] + +# Multi arch tests +multi_src = [] +foreach t: tcg_tests['multiarch-softmmu']['tests'] + foreach src, setup: t + new_cflags = cflags + if fs.stem(src) == 'memory' + new_cflags += '-DCHECK_UNALIGNED=0' + endif + if src not in multi_src + setup += {'cflags': [new_cflags]} + multi_src += src + endif + tests += {src: setup + {'qemu_args': qemu_def_args}} + endforeach +endforeach + +tests += { + 'test-armv6m-undef.S': { + 'cflags': ['-mcpu=cortex-m0', '-mfloat-abi=soft', '-nostdlib', + '-T', files('test-armv6m-undef.ld')], + 'qemu_args': ['-M', 'microbit', qemu_base_args], + }, + 'semiconsole.c': { + 'cflags': cflags, + 'qemu_args': ['-serial', 'none', '-chardev', 'stdio,mux=on,id=stdio0', + '-semihosting-config', 'enable=on,chardev=stdio0', + '-mon', 'chardev=stdio0,mode=readline', + qemu_def_args], + 'wrapper': [prog_run_with_input, 'X'] + }, + '../../multiarch/system/memory.c': { + 'test_name': 'memory-record-replay', + 'qemu_args': qemu_def_args, + 'wrapper': [prog_record_replay], + }, +} + +if 'qemu-system-arm' in emulators + tcg_tests += { + 'arm-softmmu': { + 'cc': cc, + 'cc_dockerfile': cc_dockerfile, + 'cc_docker_host_arch': cc_docker_host_arch, + 'folder': 'arm/system', + 'gdb_arch': 'arm', + 'qemu': emulators['qemu-system-arm'], + 'tests': tests, + } + } +endif -- 2.47.3
