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 1356611e17SAlex Bennéetest-armv6m-undef: test-armv6m-undef.S 1456611e17SAlex Bennée $(CC) -mcpu=cortex-m0 -mfloat-abi=soft \ 1556611e17SAlex Bennée -Wl,--build-id=none -x assembler-with-cpp \ 168807477cSRichard Henderson $< -o $@ -nostdlib -static \ 1756611e17SAlex Bennée -T $(ARM_SRC)/$@.ld 18647aee9bSStefan Hajnoczi 194985d876SAlex Bennéerun-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel 20d044b7c3SAlex Bennée 2156611e17SAlex BennéeARM_TESTS+=test-armv6m-undef 2256611e17SAlex Bennée 2356611e17SAlex Bennée# These objects provide the basic boot code and helper functions for all tests 2456611e17SAlex BennéeCRT_OBJS=boot.o 2556611e17SAlex Bennée 2656611e17SAlex BennéeARM_TEST_SRCS=$(wildcard $(ARM_SRC)/*.c) 2756611e17SAlex BennéeARM_TESTS+=$(patsubst $(ARM_SRC)/%.c, %, $(ARM_TEST_SRCS)) 2856611e17SAlex Bennée 2956611e17SAlex BennéeCRT_PATH=$(ARM_SRC) 3056611e17SAlex BennéeLINK_SCRIPT=$(ARM_SRC)/kernel.ld 3156611e17SAlex BennéeLDFLAGS=-Wl,-T$(LINK_SCRIPT) 3256611e17SAlex BennéeCFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC) 338807477cSRichard HendersonLDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc 3456611e17SAlex Bennée 3556611e17SAlex Bennée# building head blobs 3656611e17SAlex Bennée.PRECIOUS: $(CRT_OBJS) 3756611e17SAlex Bennée 3856611e17SAlex Bennée%.o: $(ARM_SRC)/%.S 39*6c180490SRichard Henderson $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@ 4056611e17SAlex Bennée 4156611e17SAlex Bennée# Build and link the tests 4256611e17SAlex Bennée%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) 4356611e17SAlex Bennée $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) 4456611e17SAlex Bennée 4556611e17SAlex Bennéememory: CFLAGS+=-DCHECK_UNALIGNED=0 4656611e17SAlex Bennée 4756611e17SAlex Bennée# Running 4856611e17SAlex BennéeQEMU_BASE_MACHINE=-M virt -cpu max -display none 4956611e17SAlex BennéeQEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel 5056611e17SAlex Bennée 518848c529SAlex Bennée# console test is manual only 528848c529SAlex BennéeQEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline 538848c529SAlex Bennéerun-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel 548848c529SAlex Bennéerun-semiconsole: semiconsole 558848c529SAlex Bennée $(call skip-test, $<, "MANUAL ONLY") 568848c529SAlex Bennée $(if $(V),@printf " %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<") 578848c529SAlex Bennéerun-plugin-semiconsole-with-%: semiconsole 588848c529SAlex Bennée $(call skip-test, $<, "MANUAL ONLY") 598848c529SAlex Bennée 6056611e17SAlex Bennée# Simple Record/Replay Test 6156611e17SAlex Bennée.PHONY: memory-record 6256611e17SAlex Bennéerun-memory-record: memory-record memory 6356611e17SAlex Bennée $(call run-test, $<, \ 6456611e17SAlex Bennée $(QEMU) -monitor none -display none \ 6556611e17SAlex Bennée -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ 6656611e17SAlex Bennée -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \ 6756611e17SAlex Bennée $(QEMU_OPTS) memory) 6856611e17SAlex Bennée 6956611e17SAlex Bennée.PHONY: memory-replay 7056611e17SAlex Bennéerun-memory-replay: memory-replay run-memory-record 7156611e17SAlex Bennée $(call run-test, $<, \ 7256611e17SAlex Bennée $(QEMU) -monitor none -display none \ 7356611e17SAlex Bennée -chardev file$(COMMA)path=$<.out$(COMMA)id=output \ 7456611e17SAlex Bennée -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \ 7556611e17SAlex Bennée $(QEMU_OPTS) memory) 7656611e17SAlex Bennée 7756611e17SAlex BennéeEXTRA_RUNS+=run-memory-replay 7856611e17SAlex Bennée 7956611e17SAlex BennéeTESTS += $(ARM_TESTS) $(MULTIARCH_TESTS) 8056611e17SAlex BennéeEXTRA_RUNS+=$(MULTIARCH_RUNS) 81