xref: /openbmc/qemu/tests/tcg/arm/Makefile.softmmu-target (revision 56611e17d2ec6f53bf04c37a2e5ad203c6f9ac4b)
1647aee9bSStefan Hajnoczi# -*- Mode: makefile -*-
2647aee9bSStefan Hajnoczi#
3647aee9bSStefan Hajnoczi# ARM SoftMMU tests - included from tests/tcg/Makefile
4647aee9bSStefan Hajnoczi#
5647aee9bSStefan Hajnoczi
6e8368b1cSAlex BennéeARM_SRC=$(SRC_PATH)/tests/tcg/arm/system
7647aee9bSStefan Hajnoczi
8647aee9bSStefan Hajnoczi# Set search path for all sources
9647aee9bSStefan HajnocziVPATH 		+= $(ARM_SRC)
10647aee9bSStefan Hajnoczi
11647aee9bSStefan Hajnoczi# Specific Test Rules
12647aee9bSStefan Hajnoczi
13*56611e17SAlex Bennéetest-armv6m-undef: test-armv6m-undef.S
14*56611e17SAlex Bennée	$(CC) -mcpu=cortex-m0 -mfloat-abi=soft \
15*56611e17SAlex Bennée		-Wl,--build-id=none -x assembler-with-cpp \
16*56611e17SAlex Bennée		$< -o $@ -nostdlib -N -static \
17*56611e17SAlex Bennée		-T $(ARM_SRC)/$@.ld
18647aee9bSStefan Hajnoczi
19647aee9bSStefan Hajnoczirun-test-armv6m-undef: QEMU_OPTS+=-semihosting -M microbit -kernel
20d044b7c3SAlex Bennée
21*56611e17SAlex BennéeARM_TESTS+=test-armv6m-undef
22*56611e17SAlex Bennée
23*56611e17SAlex Bennée# These objects provide the basic boot code and helper functions for all tests
24*56611e17SAlex BennéeCRT_OBJS=boot.o
25*56611e17SAlex Bennée
26*56611e17SAlex BennéeARM_TEST_SRCS=$(wildcard $(ARM_SRC)/*.c)
27*56611e17SAlex BennéeARM_TESTS+=$(patsubst $(ARM_SRC)/%.c, %, $(ARM_TEST_SRCS))
28*56611e17SAlex Bennée
29*56611e17SAlex BennéeCRT_PATH=$(ARM_SRC)
30*56611e17SAlex BennéeLINK_SCRIPT=$(ARM_SRC)/kernel.ld
31*56611e17SAlex BennéeLDFLAGS=-Wl,-T$(LINK_SCRIPT)
32*56611e17SAlex BennéeCFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
33*56611e17SAlex BennéeLDFLAGS+=-static -nostdlib -N $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
34*56611e17SAlex Bennée
35*56611e17SAlex Bennée# building head blobs
36*56611e17SAlex Bennée.PRECIOUS: $(CRT_OBJS)
37*56611e17SAlex Bennée
38*56611e17SAlex Bennée%.o: $(ARM_SRC)/%.S
39*56611e17SAlex Bennée	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -c $< -o $@
40*56611e17SAlex Bennée
41*56611e17SAlex Bennée# Build and link the tests
42*56611e17SAlex Bennée%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
43*56611e17SAlex Bennée	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
44*56611e17SAlex Bennée
45*56611e17SAlex Bennéememory: CFLAGS+=-DCHECK_UNALIGNED=0
46*56611e17SAlex Bennée
47*56611e17SAlex Bennée# Running
48*56611e17SAlex BennéeQEMU_BASE_MACHINE=-M virt -cpu max -display none
49*56611e17SAlex BennéeQEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel
50*56611e17SAlex Bennée
51*56611e17SAlex Bennée# Simple Record/Replay Test
52*56611e17SAlex Bennée.PHONY: memory-record
53*56611e17SAlex Bennéerun-memory-record: memory-record memory
54*56611e17SAlex Bennée	$(call run-test, $<, \
55*56611e17SAlex Bennée	  $(QEMU) -monitor none -display none \
56*56611e17SAlex Bennée		  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
57*56611e17SAlex Bennée		  -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \
58*56611e17SAlex Bennée		  $(QEMU_OPTS) memory)
59*56611e17SAlex Bennée
60*56611e17SAlex Bennée.PHONY: memory-replay
61*56611e17SAlex Bennéerun-memory-replay: memory-replay run-memory-record
62*56611e17SAlex Bennée	$(call run-test, $<, \
63*56611e17SAlex Bennée	  $(QEMU) -monitor none -display none \
64*56611e17SAlex Bennée		  -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
65*56611e17SAlex Bennée		  -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \
66*56611e17SAlex Bennée		  $(QEMU_OPTS) memory)
67*56611e17SAlex Bennée
68*56611e17SAlex BennéeEXTRA_RUNS+=run-memory-replay
69*56611e17SAlex Bennée
70*56611e17SAlex BennéeTESTS += $(ARM_TESTS) $(MULTIARCH_TESTS)
71*56611e17SAlex BennéeEXTRA_RUNS+=$(MULTIARCH_RUNS)
72