xref: /openbmc/qemu/tests/tcg/aarch64/Makefile.softmmu-target (revision a4eb31c678400472de0b4915b9154a7c20d8332f)
1f6482872SAlex Bennée#
2f6482872SAlex Bennée# Aarch64 system tests
3f6482872SAlex Bennée#
4f6482872SAlex Bennée
5*06dd94e8SGustavo RomeroAARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64
6*06dd94e8SGustavo RomeroAARCH64_SYSTEM_SRC=$(AARCH64_SRC)/system
7*06dd94e8SGustavo Romero
8f6482872SAlex BennéeVPATH+=$(AARCH64_SYSTEM_SRC)
9f6482872SAlex Bennée
10f6482872SAlex Bennée# These objects provide the basic boot code and helper functions for all tests
11f6482872SAlex BennéeCRT_OBJS=boot.o
12f6482872SAlex Bennée
13*06dd94e8SGustavo RomeroAARCH64_TEST_C_SRCS=$(wildcard $(AARCH64_SYSTEM_SRC)/*.c)
14*06dd94e8SGustavo RomeroAARCH64_TEST_S_SRCS=$(AARCH64_SYSTEM_SRC)/mte.S
15*06dd94e8SGustavo Romero
16*06dd94e8SGustavo RomeroAARCH64_C_TESTS = $(patsubst $(AARCH64_SYSTEM_SRC)/%.c, %, $(AARCH64_TEST_C_SRCS))
17*06dd94e8SGustavo RomeroAARCH64_S_TESTS = $(patsubst $(AARCH64_SYSTEM_SRC)/%.S, %, $(AARCH64_TEST_S_SRCS))
18*06dd94e8SGustavo Romero
19*06dd94e8SGustavo RomeroAARCH64_TESTS = $(AARCH64_C_TESTS)
20*06dd94e8SGustavo RomeroAARCH64_TESTS += $(AARCH64_S_TESTS)
21f6482872SAlex Bennée
22f6482872SAlex BennéeCRT_PATH=$(AARCH64_SYSTEM_SRC)
23f6482872SAlex BennéeLINK_SCRIPT=$(AARCH64_SYSTEM_SRC)/kernel.ld
24f6482872SAlex BennéeLDFLAGS=-Wl,-T$(LINK_SCRIPT)
25f6482872SAlex BennéeTESTS+=$(AARCH64_TESTS) $(MULTIARCH_TESTS)
26c00506aaSAlex BennéeEXTRA_RUNS+=$(MULTIARCH_RUNS)
27f6482872SAlex BennéeCFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
28f6482872SAlex BennéeLDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
29f6482872SAlex Bennée
3015b273f8SPaolo Bonziniconfig-cc.mak: Makefile
3115b273f8SPaolo Bonzini	$(quiet-@)( \
32*06dd94e8SGustavo Romero	    $(call cc-option,-march=armv8.3-a, CROSS_CC_HAS_ARMV8_3); \
33*06dd94e8SGustavo Romero	    $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE)) 3> config-cc.mak
3415b273f8SPaolo Bonzini-include config-cc.mak
3515b273f8SPaolo Bonzini
36f6482872SAlex Bennée# building head blobs
37f6482872SAlex Bennée.PRECIOUS: $(CRT_OBJS)
38f6482872SAlex Bennée
39f6482872SAlex Bennée%.o: $(CRT_PATH)/%.S
406c180490SRichard Henderson	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
41f6482872SAlex Bennée
42f6482872SAlex Bennée# Build and link the tests
43f6482872SAlex Bennée%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
446a9e0ef3SPaolo Bonzini	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
45f6482872SAlex Bennée
467ac283e9SAlex Bennéememory: CFLAGS+=-DCHECK_UNALIGNED=1
477ac283e9SAlex Bennée
48d54c6d3bSAlex Bennéememory-sve: memory.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
49d54c6d3bSAlex Bennée	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
50d54c6d3bSAlex Bennée
51e35562b3SRichard Hendersonmemory-sve: CFLAGS+=-DCHECK_UNALIGNED=1 -march=armv8.1-a+sve -O3
52d54c6d3bSAlex Bennée
53d54c6d3bSAlex BennéeTESTS+=memory-sve
54d54c6d3bSAlex Bennée
55f6482872SAlex Bennée# Running
569c354591SAlex BennéeQEMU_BASE_MACHINE=-M virt -cpu max -display none
578d37a142SPeter MaydellQEMU_BASE_ARGS=-semihosting-config enable=on,target=native,chardev=output
588d37a142SPeter MaydellQEMU_OPTS+=$(QEMU_BASE_MACHINE) $(QEMU_BASE_ARGS) -kernel
599c354591SAlex Bennée
609c354591SAlex Bennée# console test is manual only
611be75e24SAlex BennéeQEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline
629c354591SAlex Bennéerun-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel
639c354591SAlex Bennéerun-semiconsole: semiconsole
649c354591SAlex Bennée	$(call skip-test, $<, "MANUAL ONLY")
651be75e24SAlex Bennée	$(if $(V),@printf "  %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<")
669c354591SAlex Bennéerun-plugin-semiconsole-with-%: semiconsole
679c354591SAlex Bennée	$(call skip-test, $<, "MANUAL ONLY")
68b9fe0063SAlex Bennée
698d37a142SPeter Maydell# vtimer test needs EL2
708d37a142SPeter MaydellQEMU_EL2_MACHINE=-machine virt,virtualization=on,gic-version=2 -cpu cortex-a57 -smp 4
718d37a142SPeter Maydellrun-vtimer: QEMU_OPTS=$(QEMU_EL2_MACHINE) $(QEMU_BASE_ARGS) -kernel
728d37a142SPeter Maydell
73b9fe0063SAlex Bennée# Simple Record/Replay Test
74b9fe0063SAlex Bennée.PHONY: memory-record
75b9fe0063SAlex Bennéerun-memory-record: memory-record memory
76b9fe0063SAlex Bennée	$(call run-test, $<, \
77b9fe0063SAlex Bennée	  $(QEMU) -monitor none -display none \
78b9fe0063SAlex Bennée		  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
79b9fe0063SAlex Bennée		  -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \
80c6cf8a20SPaolo Bonzini		  $(QEMU_OPTS) memory)
81b9fe0063SAlex Bennée
82b9fe0063SAlex Bennée.PHONY: memory-replay
83b9fe0063SAlex Bennéerun-memory-replay: memory-replay run-memory-record
84b9fe0063SAlex Bennée	$(call run-test, $<, \
85b9fe0063SAlex Bennée	  $(QEMU) -monitor none -display none \
86b9fe0063SAlex Bennée		  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
87b9fe0063SAlex Bennée		  -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \
88c6cf8a20SPaolo Bonzini		  $(QEMU_OPTS) memory)
89b9fe0063SAlex Bennée
90be9bc1b7SAlex BennéeEXTRA_RUNS+=run-memory-replay
9173fc0798SRichard Henderson
92f084839aSPaolo Bonziniifneq ($(CROSS_CC_HAS_ARMV8_3),)
93546215d3SRichard Hendersonpauth-3: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
94bb516dfcSAlex Bennéeelse
95bb516dfcSAlex Bennéepauth-3:
96bb516dfcSAlex Bennée	$(call skip-test, "BUILD of $@", "missing compiler support")
97bb516dfcSAlex Bennéerun-pauth-3:
98bb516dfcSAlex Bennée	$(call skip-test, "RUN of pauth-3", "not built")
99bb516dfcSAlex Bennéeendif
100*06dd94e8SGustavo Romero
101*06dd94e8SGustavo Romeroifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
102*06dd94e8SGustavo RomeroQEMU_MTE_ENABLED_MACHINE=-M virt,mte=on -cpu max -display none
103*06dd94e8SGustavo RomeroQEMU_OPTS_WITH_MTE_ON = $(QEMU_MTE_ENABLED_MACHINE) $(QEMU_BASE_ARGS) -kernel
104*06dd94e8SGustavo Romeromte: CFLAGS+=-march=armv8.5-a+memtag
105*06dd94e8SGustavo Romeromte: mte.S $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
106*06dd94e8SGustavo Romero	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
107*06dd94e8SGustavo Romero
108*06dd94e8SGustavo Romerorun-mte: QEMU_OPTS=$(QEMU_OPTS_WITH_MTE_ON)
109*06dd94e8SGustavo Romerorun-mte: mte
110*06dd94e8SGustavo Romero
111*06dd94e8SGustavo Romeroifeq ($(GDB_SUPPORTS_MTE_IN_BAREMETAL),y)
112*06dd94e8SGustavo Romerorun-gdbstub-mte: QEMU_OPTS=$(QEMU_OPTS_WITH_MTE_ON)
113*06dd94e8SGustavo Romerorun-gdbstub-mte: mte
114*06dd94e8SGustavo Romero	$(call run-test, $@, $(GDB_SCRIPT) \
115*06dd94e8SGustavo Romero		--output run-gdbstub-mte.out \
116*06dd94e8SGustavo Romero		--gdb $(GDB) \
117*06dd94e8SGustavo Romero		--qemu $(QEMU) --qargs "-chardev null$(COMMA)id=output $(QEMU_OPTS)" \
118*06dd94e8SGustavo Romero		--bin $< --test $(AARCH64_SRC)/gdbstub/test-mte.py -- --mode=system, \
119*06dd94e8SGustavo Romero	gdbstub MTE support)
120*06dd94e8SGustavo Romero
121*06dd94e8SGustavo RomeroEXTRA_RUNS += run-gdbstub-mte
122*06dd94e8SGustavo Romeroelse # !GDB_SUPPORTS_MTE_IN_BAREMETAL
123*06dd94e8SGustavo Romerorun-gdbstub-mte:
124*06dd94e8SGustavo Romero	$(call skip-test "RUN of gdbstub-mte", "GDB does not support MTE in baremetal!")
125*06dd94e8SGustavo Romeroendif
126*06dd94e8SGustavo Romeroelse # !CROSS_CC_HAS_ARMV8_MTE
127*06dd94e8SGustavo Romeromte:
128*06dd94e8SGustavo Romero	$(call skip-test, "BUILD of $@", "missing compiler support")
129*06dd94e8SGustavo Romerorun-mte:
130*06dd94e8SGustavo Romero	$(call skip-test, "RUN of mte", "not build")
131*06dd94e8SGustavo Romeroendif
132