Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1140675imm; Tue, 5 Jun 2018 09:40:22 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKvaXqT9Jqn0kvRHwnrGrRDm48mf/B+AGXcCFVFKckcsMYYKQysnND2hu6IYCbrKdOYR03J X-Received: by 2002:a17:902:7685:: with SMTP id m5-v6mr23858777pll.76.1528216821999; Tue, 05 Jun 2018 09:40:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528216821; cv=none; d=google.com; s=arc-20160816; b=juWX3tZV+NOpSvrTVFmoZJ+vOK5yt0BhOQ4IvoN1DLzlz15oV23LjZAM8mhtdB1+l+ 9wQ5zR9f93ZQaF43WNOtLBYV+qs2fORpBK0OvVWOJlD/tagVRO/8uTYhrG5DpT4fJQiF X3g/wP7/xqKOZK7SvpJ2voswTLkPLB5Oe0leacGHbAiXExFJ2nG/7Z042gSKTLb2sM9F 7Fr5wfc4u1CCAL3uvJGqtX1TadZUCQ18qRYxmWA7jWHKDBX75a67aOcvt8BJriPBATQq buv8Icc3kOucZ3ZBNQ13DkwXx5h0mgOrZ6ymUElbpfurLXojB6WaJCN5FGPLsHAUWR+j L9/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=MSlXmK08m9l1jgJg0gBeoqY3OZAwBsNrvzqXISk/6kY=; b=D/nOln53HJHWQHV7y4CHLikOodWOQGwLabcZmrg332YohqYXC1naVJEsyxwWoUeEsE P+LDXln/QLMmsSYHI7jKyLqWFONSS7aazAtqBb9D5qMN4aqIcMuO354u6rkIrCFZNu9w Zi1FLbMotZZQlYg79fdxezYEtQ6f1tOInn6YV62QAlSjNbGrHHRA/JpNIUqjkIx6brGd rE91yUix3z8/ZK+zs/KhVva3qe4hvcWlsPUcPqS+thVPtXDqp6HZUqnGgKybUMq2fr5l SGwzL1DSOWOGYIfUfgfBfKsdn6RMvsxiFtgjDIQf41UejOCdrhxYc13ZIo9Nn9L5nKoB GazQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kS6i6ND9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p67-v6si47392782pfp.72.2018.06.05.09.40.07; Tue, 05 Jun 2018 09:40:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kS6i6ND9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752040AbeFEQjf (ORCPT + 99 others); Tue, 5 Jun 2018 12:39:35 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:38335 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751748AbeFEQje (ORCPT ); Tue, 5 Jun 2018 12:39:34 -0400 Received: by mail-wr0-f193.google.com with SMTP id 94-v6so3143532wrf.5 for ; Tue, 05 Jun 2018 09:39:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=MSlXmK08m9l1jgJg0gBeoqY3OZAwBsNrvzqXISk/6kY=; b=kS6i6ND9B4lr24a9sVeaqaCSn8QnhU4xLkWJYjo7qHdxIzlYuDS/1BSD8WLrRxdF1Q kamnHisceTL8kJejH/VMwuTvl0eHSOtCb/kyqGHPUDODcc935odZYETH+mHnXrMPEsI+ sEfcx2Sd72KtGYjnGc6oaPQ9SQUuIWeYEQFJH3047bodTAnHaiLhlvIOV5R5FkFuo5JK nDl4+r3ddbNWWGsMo0oxQYKGVVpfCUj1P16Y0ypeJpud87x8nuT8W3mwA73WvUdqIwpT UIQ9FhEADFiPCXtHrHzCUumuWH+Teg7ozY+T9GxyLJOwJyY1C96IiM3+740kZGgol+bB Pfjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=MSlXmK08m9l1jgJg0gBeoqY3OZAwBsNrvzqXISk/6kY=; b=HzdjU6oORAnOGKV/uzUVRGyilc1VlN0v/d222rmm6twptsZk9ra3P7l+1Mlf0TSd7L gJFg/r6Cc0UHNXRqB11KV3kCU5u/oh8a8cBFGXd0OqkxAMPmN1X9zUJ7L3W1I4pbjSH+ wli4ER9yUnxELKa3ZZqTvFXUnFIMIQeJWJ00XV2CrAaB9m7SPniZTmS0/tBGzn8FVdU9 xb2XyTpsomm2PYaPEfgDO1asBEnzlxC1lIBkabLriQhbDodtFGeJ4QPtWiiZV5yws2P3 dsUm5LzTi33CI4pMrAvwF5gUO64v0ftecCQKn9afAamW0jdGdM6w4tEy3kMwVQ798JpU voqw== X-Gm-Message-State: ALKqPwdywIv6ogAXcFsCMtLphF8wPTfeRS5rDya9hRCdm4xhB55QMTZx 0nIzMf/YPGFeLZSCZLba0MImew== X-Received: by 2002:adf:a949:: with SMTP id u67-v6mr19164831wrc.71.1528216773219; Tue, 05 Jun 2018 09:39:33 -0700 (PDT) Received: from localhost.localdomain.com (93-103-18-160.static.t-2.net. [93.103.18.160]) by smtp.gmail.com with ESMTPSA id 12-v6sm2771060wmt.19.2018.06.05.09.39.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jun 2018 09:39:32 -0700 (PDT) From: Uros Bizjak To: linux-kernel@vger.kernel.org Cc: Uros Bizjak , x86@kernel.org Subject: [PATCH] x86/asm: Use CC_SET/CC_OUT in percpu_cmpxchg8b_double Date: Tue, 5 Jun 2018 18:39:09 +0200 Message-Id: <20180605163910.13015-1-ubizjak@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use CC_SET(z)/CC_OUT(z) instead of explicit setz instruction. Using these two defines, the compiler that supports generation of condition code outputs from inline assembly flags generates e.g.: cmpxchg8b %fs:(%esi) jne 172255 <__kmalloc+0x65> instead of cmpxchg8b %fs:(%esi) sete %al test %al,%al je 172255 <__kmalloc+0x65> Note that older compilers now generate cmpxchg8b %fs:(%esi) sete %cl test %cl,%cl je 173a85 <__kmalloc+0x65> since we have to mark that cmpxchg8b instruction outputs to %eax register and this way clobbers the value in the register. Signed-off-by: Uros Bizjak Cc: x86@kernel.org --- arch/x86/include/asm/percpu.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h index a06b07399d17..e9202a0de8f0 100644 --- a/arch/x86/include/asm/percpu.h +++ b/arch/x86/include/asm/percpu.h @@ -450,9 +450,10 @@ do { \ bool __ret; \ typeof(pcp1) __o1 = (o1), __n1 = (n1); \ typeof(pcp2) __o2 = (o2), __n2 = (n2); \ - asm volatile("cmpxchg8b "__percpu_arg(1)"\n\tsetz %0\n\t" \ - : "=a" (__ret), "+m" (pcp1), "+m" (pcp2), "+d" (__o2) \ - : "b" (__n1), "c" (__n2), "a" (__o1)); \ + asm volatile("cmpxchg8b "__percpu_arg(1) \ + CC_SET(z) \ + : CC_OUT(z) (__ret), "+m" (pcp1), "+m" (pcp2), "+a" (__o1), "+d" (__o2) \ + : "b" (__n1), "c" (__n2)); \ __ret; \ }) -- 2.17.1