qemu/tests/tcg/aarch64/Makefile.softmmu-target
<<
>>
Prefs
   1#
   2# Aarch64 system tests
   3#
   4
   5AARCH64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/aarch64/system
   6VPATH+=$(AARCH64_SYSTEM_SRC)
   7
   8# These objects provide the basic boot code and helper functions for all tests
   9CRT_OBJS=boot.o
  10
  11AARCH64_TEST_SRCS=$(wildcard $(AARCH64_SYSTEM_SRC)/*.c)
  12AARCH64_TESTS = $(patsubst $(AARCH64_SYSTEM_SRC)/%.c, %, $(AARCH64_TEST_SRCS))
  13
  14CRT_PATH=$(AARCH64_SYSTEM_SRC)
  15LINK_SCRIPT=$(AARCH64_SYSTEM_SRC)/kernel.ld
  16LDFLAGS=-Wl,-T$(LINK_SCRIPT)
  17TESTS+=$(AARCH64_TESTS) $(MULTIARCH_TESTS)
  18EXTRA_RUNS+=$(MULTIARCH_RUNS)
  19CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
  20LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
  21
  22config-cc.mak: Makefile
  23        $(quiet-@)( \
  24            $(call cc-option,-march=armv8.3-a, CROSS_CC_HAS_ARMV8_3)) 3> config-cc.mak
  25-include config-cc.mak
  26
  27# building head blobs
  28.PRECIOUS: $(CRT_OBJS)
  29
  30%.o: $(CRT_PATH)/%.S
  31        $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -c $< -o $@
  32
  33# Build and link the tests
  34%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
  35        $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
  36
  37memory: CFLAGS+=-DCHECK_UNALIGNED=1
  38
  39memory-sve: memory.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
  40        $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
  41
  42memory-sve: CFLAGS+=-DCHECK_UNALIGNED=1 -march=armv8.1-a+sve -O3 -fno-tree-loop-distribute-patterns
  43
  44TESTS+=memory-sve
  45
  46# Running
  47QEMU_BASE_MACHINE=-M virt -cpu max -display none
  48QEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel
  49
  50# console test is manual only
  51QEMU_SEMIHOST=-chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline
  52run-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST)  -kernel
  53run-semiconsole: semiconsole
  54        $(call skip-test, $<, "MANUAL ONLY")
  55run-plugin-semiconsole-with-%: semiconsole
  56        $(call skip-test, $<, "MANUAL ONLY")
  57
  58# Simple Record/Replay Test
  59.PHONY: memory-record
  60run-memory-record: memory-record memory
  61        $(call run-test, $<, \
  62          $(QEMU) -monitor none -display none \
  63                  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
  64                  -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \
  65                  $(QEMU_OPTS) memory)
  66
  67.PHONY: memory-replay
  68run-memory-replay: memory-replay run-memory-record
  69        $(call run-test, $<, \
  70          $(QEMU) -monitor none -display none \
  71                  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
  72                  -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \
  73                  $(QEMU_OPTS) memory)
  74
  75EXTRA_RUNS+=run-memory-replay
  76
  77ifneq ($(CROSS_CC_HAS_ARMV8_3),)
  78pauth-3: CFLAGS += -march=armv8.3-a
  79else
  80pauth-3:
  81        $(call skip-test, "BUILD of $@", "missing compiler support")
  82run-pauth-3:
  83        $(call skip-test, "RUN of pauth-3", "not built")
  84run-plugin-pauth-3-with-%:
  85        $(call skip-test, "RUN of pauth-3 ($*)", "not built")
  86endif
  87