162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci# The loops are all 64-bit code
362306a36Sopenharmony_ciCFLAGS += -m64
462306a36Sopenharmony_ciCFLAGS += -I$(CURDIR)
562306a36Sopenharmony_ciCFLAGS += -D SELFTEST
662306a36Sopenharmony_ciCFLAGS += -maltivec
762306a36Sopenharmony_ciCFLAGS += -mcpu=power4
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci# Use our CFLAGS for the implicit .S rule & set the asm machine type
1062306a36Sopenharmony_ciASFLAGS = $(CFLAGS) -Wa,-mpower4
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciTEST_GEN_PROGS := copyuser_64_t0 copyuser_64_t1 copyuser_64_t2 \
1362306a36Sopenharmony_ci		copyuser_p7_t0 copyuser_p7_t1 \
1462306a36Sopenharmony_ci		memcpy_64_t0 memcpy_64_t1 memcpy_64_t2 \
1562306a36Sopenharmony_ci		memcpy_p7_t0 memcpy_p7_t1 copy_mc_64 \
1662306a36Sopenharmony_ci		copyuser_64_exc_t0 copyuser_64_exc_t1 copyuser_64_exc_t2 \
1762306a36Sopenharmony_ci		memmove_64
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciEXTRA_SOURCES := validate.c ../harness.c stubs.S
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_citop_srcdir = ../../../../..
2262306a36Sopenharmony_ciinclude ../../lib.mk
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci$(OUTPUT)/copyuser_64_t%:	copyuser_64.S $(EXTRA_SOURCES)
2562306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
2662306a36Sopenharmony_ci		-D COPY_LOOP=test___copy_tofrom_user_base \
2762306a36Sopenharmony_ci		-D SELFTEST_CASE=$(subst copyuser_64_t,,$(notdir $@)) \
2862306a36Sopenharmony_ci		-o $@ $^
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci$(OUTPUT)/copyuser_p7_t%:	copyuser_power7.S $(EXTRA_SOURCES)
3162306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
3262306a36Sopenharmony_ci		-D COPY_LOOP=test___copy_tofrom_user_power7 \
3362306a36Sopenharmony_ci		-D SELFTEST_CASE=$(subst copyuser_p7_t,,$(notdir $@)) \
3462306a36Sopenharmony_ci		-o $@ $^
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci# Strictly speaking, we only need the memcpy_64 test cases for big-endian
3762306a36Sopenharmony_ci$(OUTPUT)/memcpy_64_t%:	memcpy_64.S $(EXTRA_SOURCES)
3862306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
3962306a36Sopenharmony_ci		-D COPY_LOOP=test_memcpy \
4062306a36Sopenharmony_ci		-D SELFTEST_CASE=$(subst memcpy_64_t,,$(notdir $@)) \
4162306a36Sopenharmony_ci		-o $@ $^
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci$(OUTPUT)/memcpy_p7_t%:	memcpy_power7.S $(EXTRA_SOURCES)
4462306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
4562306a36Sopenharmony_ci		-D COPY_LOOP=test_memcpy_power7 \
4662306a36Sopenharmony_ci		-D SELFTEST_CASE=$(subst memcpy_p7_t,,$(notdir $@)) \
4762306a36Sopenharmony_ci		-o $@ $^
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci$(OUTPUT)/copy_mc_64: copy_mc_64.S $(EXTRA_SOURCES)
5062306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
5162306a36Sopenharmony_ci		-D COPY_LOOP=test_copy_mc_generic \
5262306a36Sopenharmony_ci		-o $@ $^
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci$(OUTPUT)/copyuser_64_exc_t%: copyuser_64.S exc_validate.c ../harness.c \
5562306a36Sopenharmony_ci		copy_tofrom_user_reference.S stubs.S
5662306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
5762306a36Sopenharmony_ci		-D COPY_LOOP=test___copy_tofrom_user_base \
5862306a36Sopenharmony_ci		-D SELFTEST_CASE=$(subst copyuser_64_exc_t,,$(notdir $@)) \
5962306a36Sopenharmony_ci		-o $@ $^
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci$(OUTPUT)/memmove_64: mem_64.S memcpy_64.S memmove_validate.c ../harness.c \
6262306a36Sopenharmony_ci		memcpy_stubs.S
6362306a36Sopenharmony_ci	$(CC) $(CPPFLAGS) $(CFLAGS) \
6462306a36Sopenharmony_ci		-D TEST_MEMMOVE=test_memmove \
6562306a36Sopenharmony_ci		-o $@ $^
66