]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Fix bad inline asm constraint in create_zero_mask()
authorAnton Blanchard <anton@samba.org>
Fri, 29 Apr 2016 22:29:27 +0000 (08:29 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 2 May 2016 01:10:25 +0000 (11:10 +1000)
commit30e595e0566c0d931ecbb311dec1b6938e34ddfe
treefabfb14d64976dd601e42038cf3dad800a8bb5d2
parent48c56f5e7e6034b8780d9210607cc7caa8416977
powerpc: Fix bad inline asm constraint in create_zero_mask()

In create_zero_mask() we have:

addi %1,%2,-1
andc %1,%1,%2
popcntd %0,%1

using the "r" constraint for %2. r0 is a valid register in the "r" set,
but addi X,r0,X turns it into an li:

li r7,-1
andc r7,r7,r0
popcntd r4,r7

Fix this by using the "b" constraint, for which r0 is not a valid
register.

This was found with a kernel build using gcc trunk, narrowed down to
when -frename-registers was enabled at -O2. It is just luck however
that we aren't seeing this on older toolchains.

Thanks to Segher for working with me to find this issue.

Cc: stable@vger.kernel.org
Fixes: ba1aed2e1842 ("powerpc: word-at-a-time optimization for 64-bit Little Endian")
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/word-at-a-time.h