Skip to content

Commit

Permalink
selftests: Add install support for the powerpc tests
Browse files Browse the repository at this point in the history
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: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
  • Loading branch information
Michael Ellerman authored and Shuah Khan committed Mar 19, 2015
1 parent 5744de5 commit 6faeeea
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 82 deletions.
19 changes: 17 additions & 2 deletions tools/testing/selftests/powerpc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,25 @@ all: $(TARGETS)
$(TARGETS):
$(MAKE) -k -C $@ all

run_tests: all
include ../lib.mk

override define RUN_TESTS
@for TARGET in $(TARGETS); do \
$(MAKE) -C $$TARGET run_tests; \
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:
@for TARGET in $(TARGETS); do \
Expand All @@ -36,4 +51,4 @@ clean:
tags:
find . -name '*.c' -o -name '*.h' | xargs ctags

.PHONY: all run_tests clean tags $(TARGETS)
.PHONY: tags $(TARGETS)
15 changes: 5 additions & 10 deletions tools/testing/selftests/powerpc/copyloops/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,19 @@ CFLAGS += -D SELFTEST
# Use our CFLAGS for the implicit .S rule
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

all: $(PROGS)
all: $(TEST_PROGS)

copyuser_64: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_base
copyuser_power7: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_power7
memcpy_64: CPPFLAGS += -D COPY_LOOP=test_memcpy
memcpy_power7: CPPFLAGS += -D COPY_LOOP=test_memcpy_power7

$(PROGS): $(EXTRA_SOURCES)
$(TEST_PROGS): $(EXTRA_SOURCES)

run_tests: all
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

clean:
rm -f $(PROGS) *.o

.PHONY: all run_tests clean
rm -f $(TEST_PROGS) *.o
15 changes: 5 additions & 10 deletions tools/testing/selftests/powerpc/mm/Makefile
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
noarg:
$(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
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

tempfile:
dd if=/dev/zero of=tempfile bs=64k count=1

clean:
rm -f $(PROGS) tempfile

.PHONY: all run_tests clean
rm -f $(TEST_PROGS) tempfile
48 changes: 26 additions & 22 deletions tools/testing/selftests/powerpc/pmu/Makefile
Original file line number Diff line number Diff line change
@@ -1,38 +1,42 @@
noarg:
$(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

SUB_TARGETS = ebb
all: $(TEST_PROGS) ebb

all: $(PROGS) $(SUB_TARGETS)

$(PROGS): $(EXTRA_SOURCES)
$(TEST_PROGS): $(EXTRA_SOURCES)

# loop.S can only be built 64-bit
count_instructions: loop.S count_instructions.c $(EXTRA_SOURCES)
$(CC) $(CFLAGS) -m64 -o $@ $^

run_tests: all sub_run_tests
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

clean: sub_clean
rm -f $(PROGS) loop.o
DEFAULT_RUN_TESTS := $(RUN_TESTS)
override define RUN_TESTS
$(DEFAULT_RUN_TESTS)
$(MAKE) -C ebb run_tests
endef

$(SUB_TARGETS):
$(MAKE) -k -C $@ all
DEFAULT_EMIT_TESTS := $(EMIT_TESTS)
override define EMIT_TESTS
$(DEFAULT_EMIT_TESTS)
$(MAKE) -s -C ebb emit_tests
endef

sub_run_tests: all
@for TARGET in $(SUB_TARGETS); do \
$(MAKE) -C $$TARGET run_tests; \
done;
DEFAULT_INSTALL := $(INSTALL_RULE)
override define INSTALL_RULE
$(DEFAULT_INSTALL_RULE)
$(MAKE) -C ebb install
endef

sub_clean:
@for TARGET in $(SUB_TARGETS); do \
$(MAKE) -C $$TARGET clean; \
done;
clean:
rm -f $(TEST_PROGS) loop.o
$(MAKE) -C ebb clean

ebb:
$(MAKE) -k -C $@ all

.PHONY: all run_tests clean sub_run_tests sub_clean $(SUB_TARGETS)
.PHONY: all run_tests clean ebb
13 changes: 5 additions & 8 deletions tools/testing/selftests/powerpc/pmu/ebb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ noarg:
# The EBB handler is 64-bit code and everything links against it
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 \
ebb_vs_cpu_event_test cpu_event_vs_ebb_test \
cpu_event_pinned_vs_ebb_test task_event_vs_ebb_test \
Expand All @@ -16,18 +16,15 @@ PROGS := reg_access_test event_attributes_test cycles_test \
lost_exception_test no_handler_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

lost_exception_test: ../lib.c

run_tests: all
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../../lib.mk

clean:
rm -f $(PROGS)
rm -f $(TEST_PROGS)
15 changes: 5 additions & 10 deletions tools/testing/selftests/powerpc/primitives/Makefile
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
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
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

clean:
rm -f $(PROGS) *.o

.PHONY: all run_tests clean
rm -f $(TEST_PROGS) *.o
15 changes: 5 additions & 10 deletions tools/testing/selftests/powerpc/stringloops/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,14 @@
CFLAGS += -m64
CFLAGS += -I$(CURDIR)

PROGS := memcmp
TEST_PROGS := memcmp
EXTRA_SOURCES := memcmp_64.S ../harness.c

all: $(PROGS)
all: $(TEST_PROGS)

$(PROGS): $(EXTRA_SOURCES)
$(TEST_PROGS): $(EXTRA_SOURCES)

run_tests: all
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

clean:
rm -f $(PROGS) *.o

.PHONY: all run_tests clean
rm -f $(TEST_PROGS) *.o
15 changes: 5 additions & 10 deletions tools/testing/selftests/powerpc/tm/Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
PROGS := tm-resched-dscr
TEST_PROGS := tm-resched-dscr

all: $(PROGS)
all: $(TEST_PROGS)

$(PROGS): ../harness.c
$(TEST_PROGS): ../harness.c

run_tests: all
@-for PROG in $(PROGS); do \
./$$PROG; \
done;
include ../../lib.mk

clean:
rm -f $(PROGS) *.o

.PHONY: all run_tests clean
rm -f $(TEST_PROGS) *.o

0 comments on commit 6faeeea

Please sign in to comment.