struct ppc_pci_io ppc_pci_io;
  EXPORT_SYMBOL(ppc_pci_io);
  #endif
 -      watchdog_enable_hardlockup_detector(false);
+ 
+ #ifdef CONFIG_HARDLOCKUP_DETECTOR
+ u64 hw_nmi_get_sample_period(int watchdog_thresh)
+ {
+       return ppc_proc_freq * watchdog_thresh;
+ }
+ 
+ /*
+  * The hardlockup detector breaks PMU event based branches and is likely
+  * to get false positives in KVM guests, so disable it by default.
+  */
+ static int __init disable_hardlockup_detector(void)
+ {
++      hardlockup_detector_disable();
+ 
+       return 0;
+ }
+ early_initcall(disable_hardlockup_detector);
+ #endif
 
  
  GIT_VERSION = $(shell git describe --always --long --dirty || echo "unknown")
  
 -CC := $(CROSS_COMPILE)$(CC)
  CFLAGS := -Wall -O2 -flto -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CURDIR) $(CFLAGS)
  
 -export CC CFLAGS
 +export CFLAGS
  
- TARGETS = pmu copyloops mm tm primitives stringloops
+ SUB_DIRS = pmu copyloops mm tm primitives stringloops vphn switch_endian
  
  endif
  
- all: $(TARGETS)
+ all: $(SUB_DIRS)
  
- $(TARGETS):
+ $(SUB_DIRS):
        $(MAKE) -k -C $@ all
  
 -run_tests: all
 +include ../lib.mk
 +
 +override define RUN_TESTS
-       @for TARGET in $(TARGETS); do \
+       @for TARGET in $(SUB_DIRS); do \
                $(MAKE) -C $$TARGET run_tests; \
        done;
-       @for TARGET in $(TARGETS); do \
 +endef
 +
 +override define INSTALL_RULE
-       @for TARGET in $(TARGETS); do \
++      @for TARGET in $(SUB_DIRS); do \
 +              $(MAKE) -C $$TARGET install; \
 +      done;
 +endef
 +
 +override define EMIT_TESTS
++      @for TARGET in $(SUB_DIRS); do \
 +              $(MAKE) -s -C $$TARGET emit_tests; \
 +      done;
 +endef
  
  clean:
-       @for TARGET in $(TARGETS); do \
+       @for TARGET in $(SUB_DIRS); do \
                $(MAKE) -C $$TARGET clean; \
        done;
        rm -f tags
  tags:
        find . -name '*.c' -o -name '*.h' | xargs ctags
  
- .PHONY: tags $(TARGETS)
 -.PHONY: all run_tests clean tags $(SUB_DIRS)
++.PHONY: tags $(SUB_DIRS)
 
- TEST_PROGS := tm-resched-dscr
 -PROGS := tm-resched-dscr tm-syscall
++TEST_PROGS := tm-resched-dscr tm-syscall
  
 -all: $(PROGS)
 +all: $(TEST_PROGS)
  
 -$(PROGS): ../harness.c
 +$(TEST_PROGS): ../harness.c
  
 -run_tests: all
 -      @-for PROG in $(PROGS); do \
 -              ./$$PROG; \
 -      done;
+ tm-syscall: tm-syscall-asm.S
+ tm-syscall: CFLAGS += -mhtm
+ 
 +include ../../lib.mk
  
  clean:
 -      rm -f $(PROGS) *.o
 -
 -.PHONY: all run_tests clean
 +      rm -f $(TEST_PROGS) *.o