Messages in this thread Patch in this message | | | Subject | Re: cmpxchg.h:245:2: error: ‘asm’ operand has impossible constraints | From | Juergen Gross <> | Date | Thu, 6 Sep 2018 15:54:06 +0200 |
| |
Hey Meelis,
On Mon, 27 Aug 2018, Meelis Roos wrote:
> While trying to compile v4.18-13105-gaba16dc5cf93 with gcc 5.3.1 on a > 32-bit x86 configured for AMD K6 > CC mm/slub.o > In file included from ./arch/x86/include/asm/atomic.h:8:0, > from ./include/linux/atomic.h:7, > from ./arch/x86/include/asm/thread_info.h:54, > from ./include/linux/thread_info.h:38, > from ./arch/x86/include/asm/preempt.h:7, > from ./include/linux/preempt.h:81, > from ./include/linux/spinlock.h:51, > from ./include/linux/mmzone.h:8, > from ./include/linux/gfp.h:6, > from ./include/linux/mm.h:10, > from mm/slub.c:13: > mm/slub.c: In function ‘__slab_free’: > ./arch/x86/include/asm/cmpxchg.h:245:2: error: ‘asm’ operand has impossible constraints > asm volatile(pfx "cmpxchg%c4b %2; sete %0" \
Could you give the attched patch a try? I've been hit by this issue via kbuild robot complaining about one of my patches which didn't touch the asm stuff above.
I suspect the "=a" contraint of the outputs and "a" of the inputs are the culprit. You could save me from having to search through all the debian repos for a gcc showing that issue...
Juergen From 252450d28ffc8fbfd5b332d0b97990ae12a207d9 Mon Sep 17 00:00:00 2001 From: Juergen Gross <jgross@suse.com> Date: Wed, 5 Sep 2018 11:32:26 +0200 Subject: [PATCH] x86: correct inline asm constraints in __cmpxchg_double()
Specifying "=a" for output constraints and "a" for input seems to be wrong. Instead "0" should be used for the input constraint.
Fixes: cdcd629869fab ("x86: Fix and improve cmpxchg_double{,_local}()") Cc: stable@vger.kernel.org Signed-off-by: Juergen Gross <jgross@suse.com> --- arch/x86/include/asm/cmpxchg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h index a55d79b233d3..b3b4d61a8969 100644 --- a/arch/x86/include/asm/cmpxchg.h +++ b/arch/x86/include/asm/cmpxchg.h @@ -245,7 +245,7 @@ extern void __add_wrong_size(void) asm volatile(pfx "cmpxchg%c4b %2; sete %0" \ : "=a" (__ret), "+d" (__old2), \ "+m" (*(p1)), "+m" (*(p2)) \ - : "i" (2 * sizeof(long)), "a" (__old1), \ + : "i" (2 * sizeof(long)), "0" (__old1), \ "b" (__new1), "c" (__new2)); \ __ret; \ }) -- 2.16.4
| |