Commit 6faeeea4 authored by Michael Ellerman's avatar Michael Ellerman Committed by Shuah Khan

selftests: Add install support for the powerpc tests

The bulk of the selftests are actually below the powerpc sub directory.

This adds support for installing them, when on a powerpc machine, or if
ARCH and CROSS_COMPILE are set appropriately.

This is a little more complicated because of the sub directory structure
under powerpc, but much of the common logic in lib.mk is still used. The
net effect of the patch is still a reduction in code.
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
parent 5744de54
...@@ -22,10 +22,25 @@ all: $(TARGETS) ...@@ -22,10 +22,25 @@ all: $(TARGETS)
$(TARGETS): $(TARGETS):
$(MAKE) -k -C $@ all $(MAKE) -k -C $@ all
run_tests: all include ../lib.mk
override define RUN_TESTS
@for TARGET in $(TARGETS); do \ @for TARGET in $(TARGETS); do \
$(MAKE) -C $$TARGET run_tests; \ $(MAKE) -C $$TARGET run_tests; \
done; done;
endef
override define INSTALL_RULE
@for TARGET in $(TARGETS); do \
$(MAKE) -C $$TARGET install; \
done;
endef
override define EMIT_TESTS
@for TARGET in $(TARGETS); do \
$(MAKE) -s -C $$TARGET emit_tests; \
done;
endef
clean: clean:
@for TARGET in $(TARGETS); do \ @for TARGET in $(TARGETS); do \
...@@ -36,4 +51,4 @@ clean: ...@@ -36,4 +51,4 @@ clean:
tags: tags:
find . -name '*.c' -o -name '*.h' | xargs ctags find . -name '*.c' -o -name '*.h' | xargs ctags
.PHONY: all run_tests clean tags $(TARGETS) .PHONY: tags $(TARGETS)
...@@ -6,24 +6,19 @@ CFLAGS += -D SELFTEST ...@@ -6,24 +6,19 @@ CFLAGS += -D SELFTEST
# Use our CFLAGS for the implicit .S rule # Use our CFLAGS for the implicit .S rule
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)
PROGS := copyuser_64 copyuser_power7 memcpy_64 memcpy_power7 TEST_PROGS := copyuser_64 copyuser_power7 memcpy_64 memcpy_power7
EXTRA_SOURCES := validate.c ../harness.c EXTRA_SOURCES := validate.c ../harness.c
all: $(PROGS) all: $(TEST_PROGS)
copyuser_64: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_base copyuser_64: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_base
copyuser_power7: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_power7 copyuser_power7: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_power7
memcpy_64: CPPFLAGS += -D COPY_LOOP=test_memcpy memcpy_64: CPPFLAGS += -D COPY_LOOP=test_memcpy
memcpy_power7: CPPFLAGS += -D COPY_LOOP=test_memcpy_power7 memcpy_power7: CPPFLAGS += -D COPY_LOOP=test_memcpy_power7
$(PROGS): $(EXTRA_SOURCES) $(TEST_PROGS): $(EXTRA_SOURCES)
run_tests: all include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: clean:
rm -f $(PROGS) *.o rm -f $(TEST_PROGS) *.o
.PHONY: all run_tests clean
noarg: noarg:
$(MAKE) -C ../ $(MAKE) -C ../
PROGS := hugetlb_vs_thp_test subpage_prot TEST_PROGS := hugetlb_vs_thp_test subpage_prot
all: $(PROGS) tempfile all: $(TEST_PROGS) tempfile
$(PROGS): ../harness.c $(TEST_PROGS): ../harness.c
run_tests: all include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
tempfile: tempfile:
dd if=/dev/zero of=tempfile bs=64k count=1 dd if=/dev/zero of=tempfile bs=64k count=1
clean: clean:
rm -f $(PROGS) tempfile rm -f $(TEST_PROGS) tempfile
.PHONY: all run_tests clean
noarg: noarg:
$(MAKE) -C ../ $(MAKE) -C ../
PROGS := count_instructions l3_bank_test per_event_excludes TEST_PROGS := count_instructions l3_bank_test per_event_excludes
EXTRA_SOURCES := ../harness.c event.c lib.c EXTRA_SOURCES := ../harness.c event.c lib.c
SUB_TARGETS = ebb all: $(TEST_PROGS) ebb
all: $(PROGS) $(SUB_TARGETS) $(TEST_PROGS): $(EXTRA_SOURCES)
$(PROGS): $(EXTRA_SOURCES)
# loop.S can only be built 64-bit # loop.S can only be built 64-bit
count_instructions: loop.S count_instructions.c $(EXTRA_SOURCES) count_instructions: loop.S count_instructions.c $(EXTRA_SOURCES)
$(CC) $(CFLAGS) -m64 -o $@ $^ $(CC) $(CFLAGS) -m64 -o $@ $^
run_tests: all sub_run_tests include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: sub_clean DEFAULT_RUN_TESTS := $(RUN_TESTS)
rm -f $(PROGS) loop.o override define RUN_TESTS
$(DEFAULT_RUN_TESTS)
$(MAKE) -C ebb run_tests
endef
$(SUB_TARGETS): DEFAULT_EMIT_TESTS := $(EMIT_TESTS)
$(MAKE) -k -C $@ all override define EMIT_TESTS
$(DEFAULT_EMIT_TESTS)
$(MAKE) -s -C ebb emit_tests
endef
sub_run_tests: all DEFAULT_INSTALL := $(INSTALL_RULE)
@for TARGET in $(SUB_TARGETS); do \ override define INSTALL_RULE
$(MAKE) -C $$TARGET run_tests; \ $(DEFAULT_INSTALL_RULE)
done; $(MAKE) -C ebb install
endef
sub_clean: clean:
@for TARGET in $(SUB_TARGETS); do \ rm -f $(TEST_PROGS) loop.o
$(MAKE) -C $$TARGET clean; \ $(MAKE) -C ebb clean
done;
ebb:
$(MAKE) -k -C $@ all
.PHONY: all run_tests clean sub_run_tests sub_clean $(SUB_TARGETS) .PHONY: all run_tests clean ebb
...@@ -4,7 +4,7 @@ noarg: ...@@ -4,7 +4,7 @@ noarg:
# The EBB handler is 64-bit code and everything links against it # The EBB handler is 64-bit code and everything links against it
CFLAGS += -m64 CFLAGS += -m64
PROGS := reg_access_test event_attributes_test cycles_test \ TEST_PROGS := reg_access_test event_attributes_test cycles_test \
cycles_with_freeze_test pmc56_overflow_test \ cycles_with_freeze_test pmc56_overflow_test \
ebb_vs_cpu_event_test cpu_event_vs_ebb_test \ ebb_vs_cpu_event_test cpu_event_vs_ebb_test \
cpu_event_pinned_vs_ebb_test task_event_vs_ebb_test \ cpu_event_pinned_vs_ebb_test task_event_vs_ebb_test \
...@@ -16,18 +16,15 @@ PROGS := reg_access_test event_attributes_test cycles_test \ ...@@ -16,18 +16,15 @@ PROGS := reg_access_test event_attributes_test cycles_test \
lost_exception_test no_handler_test \ lost_exception_test no_handler_test \
cycles_with_mmcr2_test cycles_with_mmcr2_test
all: $(PROGS) all: $(TEST_PROGS)
$(PROGS): ../../harness.c ../event.c ../lib.c ebb.c ebb_handler.S trace.c busy_loop.S $(TEST_PROGS): ../../harness.c ../event.c ../lib.c ebb.c ebb_handler.S trace.c busy_loop.S
instruction_count_test: ../loop.S instruction_count_test: ../loop.S
lost_exception_test: ../lib.c lost_exception_test: ../lib.c
run_tests: all include ../../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: clean:
rm -f $(PROGS) rm -f $(TEST_PROGS)
CFLAGS += -I$(CURDIR) CFLAGS += -I$(CURDIR)
PROGS := load_unaligned_zeropad TEST_PROGS := load_unaligned_zeropad
all: $(PROGS) all: $(TEST_PROGS)
$(PROGS): ../harness.c $(TEST_PROGS): ../harness.c
run_tests: all include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: clean:
rm -f $(PROGS) *.o rm -f $(TEST_PROGS) *.o
.PHONY: all run_tests clean
...@@ -2,19 +2,14 @@ ...@@ -2,19 +2,14 @@
CFLAGS += -m64 CFLAGS += -m64
CFLAGS += -I$(CURDIR) CFLAGS += -I$(CURDIR)
PROGS := memcmp TEST_PROGS := memcmp
EXTRA_SOURCES := memcmp_64.S ../harness.c EXTRA_SOURCES := memcmp_64.S ../harness.c
all: $(PROGS) all: $(TEST_PROGS)
$(PROGS): $(EXTRA_SOURCES) $(TEST_PROGS): $(EXTRA_SOURCES)
run_tests: all include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: clean:
rm -f $(PROGS) *.o rm -f $(TEST_PROGS) *.o
.PHONY: all run_tests clean
PROGS := tm-resched-dscr TEST_PROGS := tm-resched-dscr
all: $(PROGS) all: $(TEST_PROGS)
$(PROGS): ../harness.c $(TEST_PROGS): ../harness.c
run_tests: all include ../../lib.mk
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
clean: clean:
rm -f $(PROGS) *.o rm -f $(TEST_PROGS) *.o
.PHONY: all run_tests clean
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment