1*c4293333SXiaojuan Yang#
2*c4293333SXiaojuan Yang# Loongarch64 system tests
3*c4293333SXiaojuan Yang#
4*c4293333SXiaojuan Yang
5*c4293333SXiaojuan YangLOONGARCH64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/loongarch64/system
6*c4293333SXiaojuan YangVPATH+=$(LOONGARCH64_SYSTEM_SRC)
7*c4293333SXiaojuan Yang
8*c4293333SXiaojuan Yang# These objects provide the basic boot code and helper functions for all tests
9*c4293333SXiaojuan YangCRT_OBJS=boot.o
10*c4293333SXiaojuan Yang
11*c4293333SXiaojuan YangLOONGARCH64_TEST_SRCS=$(wildcard $(LOONGARCH64_SYSTEM_SRC)/*.c)
12*c4293333SXiaojuan YangLOONGARCH64_TESTS = $(patsubst $(LOONGARCH64_SYSTEM_SRC)/%.c, %, $(LOONGARCH64_TEST_SRCS))
13*c4293333SXiaojuan Yang
14*c4293333SXiaojuan YangCRT_PATH=$(LOONGARCH64_SYSTEM_SRC)
15*c4293333SXiaojuan YangLINK_SCRIPT=$(LOONGARCH64_SYSTEM_SRC)/kernel.ld
16*c4293333SXiaojuan YangLDFLAGS=-Wl,-T$(LINK_SCRIPT)
17*c4293333SXiaojuan YangTESTS+=$(LOONGARCH64_TESTS) $(MULTIARCH_TESTS)
18*c4293333SXiaojuan YangCFLAGS+=-nostdlib -g -O1 -march=loongarch64 -mabi=lp64d $(MINILIB_INC)
19*c4293333SXiaojuan YangLDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
20*c4293333SXiaojuan Yang
21*c4293333SXiaojuan Yang# building head blobs
22*c4293333SXiaojuan Yang.PRECIOUS: $(CRT_OBJS)
23*c4293333SXiaojuan Yang
24*c4293333SXiaojuan Yang%.o: $(CRT_PATH)/%.S
25*c4293333SXiaojuan Yang	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -c $< -o $@
26*c4293333SXiaojuan Yang
27*c4293333SXiaojuan Yang# Build and link the tests
28*c4293333SXiaojuan Yang%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
29*c4293333SXiaojuan Yang	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
30*c4293333SXiaojuan Yang
31*c4293333SXiaojuan Yangmemory: CFLAGS+=-DCHECK_UNALIGNED=0
32*c4293333SXiaojuan Yang# Running
33*c4293333SXiaojuan YangQEMU_OPTS+=-serial chardev:output -kernel
34