Re: [PATCH] MIPS: OCTEON: mangle-port: fix build failure with VDSO code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/22/2016 03:07 PM, Aaro Koskinen wrote:
Commit 1685ddbe35cd ("MIPS: Octeon: Changes to support readq()/writeq()
usage.") added bitwise shift operations that assume that unsigned long
is always 64-bits. This broke the build of VDSO code, as it gets compiled
also in "faked" 32-bit mode. Althought the failing inline functions are
never executed in 32-bit mode, they still need to pass the compilation.
Fix by using 64-bit types explicitly.

The patch fixes the following build failure:

   CC      arch/mips/vdso/gettimeofday-o32.o
In file included from los/git/devel/linux/arch/mips/include/asm/io.h:32:0,
                  from los/git/devel/linux/arch/mips/include/asm/page.h:194,
                  from los/git/devel/linux/arch/mips/vdso/vdso.h:26,
                  from los/git/devel/linux/arch/mips/vdso/gettimeofday.c:11:
los/git/devel/linux/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h: In function '__should_swizzle_bits':
los/git/devel/linux/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h:19:40: error: right shift count >= width of type [-Werror=shift-count-overflow]
   unsigned long did = ((unsigned long)a >> 40) & 0xff;
                                         ^~

Fixes: 1685ddbe35cd ("MIPS: Octeon: Changes to support readq()/writeq() usage.")
Signed-off-by: Aaro Koskinen <aaro.koskinen@xxxxxx>

This looks like it should work.

Steven, can you test this patch for us to get independent confirmation that it works?

If testing shows that it is good, please add Acked-by: David Daney <david.daney@xxxxxxxxxx>



---
  arch/mips/include/asm/mach-cavium-octeon/mangle-port.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h b/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h
index 0cf5ac1..8ff2cbd 100644
--- a/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h
+++ b/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h
@@ -15,8 +15,8 @@
  static inline bool __should_swizzle_bits(volatile void *a)
  {
  	extern const bool octeon_should_swizzle_table[];
+	u64 did = ((u64)(uintptr_t)a >> 40) & 0xff;

-	unsigned long did = ((unsigned long)a >> 40) & 0xff;
  	return octeon_should_swizzle_table[did];
  }

@@ -29,7 +29,7 @@ static inline bool __should_swizzle_bits(volatile void *a)

  #define __should_swizzle_bits(a)	false

-static inline bool __should_swizzle_addr(unsigned long p)
+static inline bool __should_swizzle_addr(u64 p)
  {
  	/* boot bus? */
  	return ((p >> 40) & 0xff) == 0;






[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux