selftests/powerpc: Add have_hwcap2() helper
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 24 Nov 2015 02:05:39 +0000 (13:05 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 14 Dec 2015 09:41:47 +0000 (20:41 +1100)
We already do this twice and want to add another so add a helper.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
tools/testing/selftests/powerpc/pmu/ebb/ebb.c
tools/testing/selftests/powerpc/tm/tm-syscall.c
tools/testing/selftests/powerpc/utils.h

index 9729d9f..e67452f 100644 (file)
@@ -13,7 +13,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <linux/auxvec.h>
 
 #include "trace.h"
 #include "reg.h"
@@ -324,7 +323,7 @@ bool ebb_is_supported(void)
 {
 #ifdef PPC_FEATURE2_EBB
        /* EBB requires at least POWER8 */
-       return ((long)get_auxv_entry(AT_HWCAP2) & PPC_FEATURE2_EBB);
+       return have_hwcap2(PPC_FEATURE2_EBB);
 #else
        return false;
 #endif
index e835bf7..d7256b7 100644 (file)
@@ -14,7 +14,6 @@
 #include <sys/syscall.h>
 #include <asm/tm.h>
 #include <asm/cputable.h>
-#include <linux/auxvec.h>
 #include <sys/time.h>
 #include <stdlib.h>
 
@@ -80,7 +79,7 @@ pid_t getppid_tm(bool suspend)
 static inline bool have_htm_nosc(void)
 {
 #ifdef PPC_FEATURE2_HTM_NOSC
-       return ((long)get_auxv_entry(AT_HWCAP2) & PPC_FEATURE2_HTM_NOSC);
+       return have_hwcap2(PPC_FEATURE2_HTM_NOSC);
 #else
        printf("PPC_FEATURE2_HTM_NOSC not defined, can't check AT_HWCAP2\n");
        return false;
index b7d4108..fbf2bf5 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <stdint.h>
 #include <stdbool.h>
+#include <linux/auxvec.h>
 
 /* Avoid headaches with PRI?64 - just use %ll? always */
 typedef unsigned long long u64;
@@ -22,6 +23,11 @@ typedef uint8_t u8;
 int test_harness(int (test_function)(void), char *name);
 extern void *get_auxv_entry(int type);
 
+static inline bool have_hwcap2(unsigned long ftr2)
+{
+       return ((unsigned long)get_auxv_entry(AT_HWCAP2) & ftr2) == ftr2;
+}
+
 /* Yes, this is evil */
 #define FAIL_IF(x)                                             \
 do {                                                           \