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