summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2015-10-12 15:28:57 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2015-10-13 15:08:37 +1100
commitabb39bc792aa8e9143e78a39ec13d7de1391f4b4 (patch)
tree14473279e495bc74e1c89c2f0ba0c6291fffd871
parentf2dd80ecca5f06b46134f2bd811f046c503c756c (diff)
downloadlinux-abb39bc792aa8e9143e78a39ec13d7de1391f4b4.tar.gz
selftests/powerpc: Fix build failure of load_unaligned_zeropad test
Commit 7a5692e6e533 ("arch/powerpc: provide zero_bytemask() for
big-endian") added a call to __fls() in our word-at-a-time.h. That was
fine for the kernel build but missed the fact that we also use
word-at-a-time.h in a userspace test.

Pulling in the kernel version of __fls() gets messy, so just define our
own, it's unlikely to change often.

Fixes: 7a5692e6e533 ("arch/powerpc: provide zero_bytemask() for big-endian")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c b/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
index d1b647509596..6cae06117b55 100644
--- a/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
+++ b/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
@@ -25,10 +25,19 @@
 
 #define FIXUP_SECTION ".ex_fixup"
 
+static inline unsigned long __fls(unsigned long x);
+
 #include "word-at-a-time.h"
 
 #include "utils.h"
 
+static inline unsigned long __fls(unsigned long x)
+{
+	int lz;
+
+	asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (x));
+	return sizeof(unsigned long) - 1 - lz;
+}
 
 static int page_size;
 static char *mem_region;