[PATCH v2] selftests/powerpc: Fix build failure of load_unaligned_zeropad test

Michael Ellerman mpe at ellerman.id.au
Tue Oct 13 12:50:41 AEDT 2015


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 at ellerman.id.au>
---
 .../testing/selftests/powerpc/primitives/load_unaligned_zeropad.c  | 7 +++++++
 1 file changed, 7 insertions(+)

v2: Use a static inline, otherwise the little endian build fails because
    __fls() is unused >:(

diff --git a/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c b/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
index d1b647509596..d33b380344aa 100644
--- a/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
+++ b/tools/testing/selftests/powerpc/primitives/load_unaligned_zeropad.c
@@ -29,6 +29,13 @@
 
 #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;
-- 
2.1.4



More information about the Linuxppc-dev mailing list