From patchwork Thu Feb 14 19:05:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158421 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1745457jaa; Thu, 14 Feb 2019 11:06:33 -0800 (PST) X-Google-Smtp-Source: AHgI3IbWVmsvw7YbFYlx8nW1NpswW/WChxGf3WKx4L58GThmIlS+C5SmFSefqAWg5Btjg1mJ5Z8/ X-Received: by 2002:a81:a805:: with SMTP id f5mr4615807ywh.189.1550171193336; Thu, 14 Feb 2019 11:06:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171193; cv=none; d=google.com; s=arc-20160816; b=sAdGKyEf/Wk7HiMiM0EDyvTTyAS1vXc9EgLKoW0XAZHt1qt5iQKlA876YrAXUwyvmj AiytcitkY2TByGVBRvnVDrTvRY40liwxWSCeSCP6PzsEJKIXcIunR1pZe/2JUqDdoFgB nlq81whVjYUlh2Jdc+cw1pmmeeouZNV2rJF3//9JwYCYMelVSNV7l3L9G5Dj7uMXVvUr 4FrDrZ7kbo1/p0wa9wUgSYYuXbf12f5bC+t6KgTOME2aMlJfpI5RpSdHCaiUdA+Rmxts 6tKH1jtmJSXaQTr3N6fpNcXGsfNYI4eOIv+ltgW3wWNw+Q/n2QuOazMbdy8ssv8tztZe LmYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=Jh5+Frt/7Rja8KutRCKJMPQxR5V89Yg+i67n1ES5EEM=; b=pxXLX5UxD7XqtXn/m2XkliICDL2ty9BIYqeSJorbufxflbRDwSf0LwgV1L6526Spok DjZbt+RsZ4/ffl+KbXqyFT8YE5x0S8S3OC5VJuAafLelqjd7ywAekdL7MXb/Dq2RLLxy EGgPQaEaVJgBJtO06HEzLHISlno0O1+GCvEV7fmpQe86HelZ1mFhPE0mdD4Z8aiQGs4E PGTU5Z0HsAoQxyd4Zv6NK8P7qYeo3yJd6OjLhmgKzE+WpN3MtneR/xp4T2FapR3yC0UO bNMolnW/YRoUYqLWGfOorohk3soMhmTxBGxguIXrJDU6uxlQFWsgUMgjItwsse+5cbEW 0XpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=wYM4BQp8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l7si2064704ywg.388.2019.02.14.11.06.33 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:06:33 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=wYM4BQp8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53518 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLA-0007iZ-MM for patch@linaro.org; Thu, 14 Feb 2019 14:06:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53728) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKn-0007hC-65 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKm-0004c6-Cm for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:09 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:41848) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKm-0004bY-3i for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:08 -0500 Received: by mail-wr1-x430.google.com with SMTP id x10so7687752wrs.8 for ; Thu, 14 Feb 2019 11:06:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Jh5+Frt/7Rja8KutRCKJMPQxR5V89Yg+i67n1ES5EEM=; b=wYM4BQp8PpeL8Eujkhz62VB9URaL3GpfkcEEBpAa8PTRsB2UBkI2cCL5sFnvMfzZCO vuLfYKf6nWiTskh0T/iAKafICOSKCANIGZaDPuTdZxxYkg6Fkv/YYtlio9TFs0tyLkXx ck9oAxoS56vNpXsHPznvx08/adyl6T8j4hNaRHJe96bWTkbiO3ttom7rk5KseEDsWyPI af6Q08oPrzN0oHqzAn7eOn3GYC5aBDboo72VkSiuCMz6L5MYcb+cSv0/5AxDKMWtjeU8 yEtHq5D9QoaROlsr1fEckXZzATFItl/5I52MnXWWgMnt9YWe3gGXmjappua+aiX+FCvz 66VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jh5+Frt/7Rja8KutRCKJMPQxR5V89Yg+i67n1ES5EEM=; b=uDyIy+BLiKukfg/lcQYgsw6hU+DvOQXpDEKzf8qeVMmCpnX5qGEigq1fOTJjeVVNGX dilsTo2rh57dkZHH97bTMYFN9960VmHCRnRgqVaikQI0PUM0+tjonGNGl1aL8xtyGWDh mI2ay5j6ZJZNgpvdXmmzRYZzUpUZyuxaBx1t3kBh02llVYCi28F2si4AzWQVsXMI/uGA KwMR2Ma5ccgViF1yj5foH8JE2zvD0DjRu7WQToyY3foVwwmcj5Lwc8R/9453jAxgHsmv cRdRetdUOTIkY8660sVNc5k219nFD+UbGFquTEoSMWx+R9jvcdl3dSyBMZvQM+mNZXMu 24AA== X-Gm-Message-State: AHQUAuab5uxvKu9gxfqbgHiStDFgnGSEldkzMCkEJApj5U5AVhJPbZ6Z DbcOTSoZwh0OYfD69luYooSknx+UKoMRWw== X-Received: by 2002:a5d:4a8a:: with SMTP id o10mr3989534wrq.189.1550171166661; Thu, 14 Feb 2019 11:06:06 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:05 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:37 +0000 Message-Id: <20190214190603.25030-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::430 Subject: [Qemu-devel] [PULL 01/27] target/arm: Fix CRn to be 14 for PMEVTYPER/PMEVCNTR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Aaron Lindsay OS This bug was introduced in: commit 5ecdd3e47cadae83a62dc92b472f1fe163b56f59 target/arm: Finish implementation of PM[X]EVCNTR and PM[X]EVTYPER Signed-off-by: Aaron Lindsay Reported-by: Laurent Desnogues Reviewed-by: Laurent Desnogues Message-id: 20190205135129.19338-1-aaron@os.amperecomputing.com Signed-off-by: Peter Maydell --- target/arm/helper.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index 520ceea7a41..bd9f6050eca 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -5855,25 +5855,25 @@ void register_cp_regs_for_features(ARMCPU *cpu) char *pmevtyper_name = g_strdup_printf("PMEVTYPER%d", i); char *pmevtyper_el0_name = g_strdup_printf("PMEVTYPER%d_EL0", i); ARMCPRegInfo pmev_regs[] = { - { .name = pmevcntr_name, .cp = 15, .crn = 15, + { .name = pmevcntr_name, .cp = 15, .crn = 14, .crm = 8 | (3 & (i >> 3)), .opc1 = 0, .opc2 = i & 7, .access = PL0_RW, .type = ARM_CP_IO | ARM_CP_ALIAS, .readfn = pmevcntr_readfn, .writefn = pmevcntr_writefn, .accessfn = pmreg_access }, { .name = pmevcntr_el0_name, .state = ARM_CP_STATE_AA64, - .opc0 = 3, .opc1 = 3, .crn = 15, .crm = 8 | (3 & (i >> 3)), + .opc0 = 3, .opc1 = 3, .crn = 14, .crm = 8 | (3 & (i >> 3)), .opc2 = i & 7, .access = PL0_RW, .accessfn = pmreg_access, .type = ARM_CP_IO, .readfn = pmevcntr_readfn, .writefn = pmevcntr_writefn, .raw_readfn = pmevcntr_rawread, .raw_writefn = pmevcntr_rawwrite }, - { .name = pmevtyper_name, .cp = 15, .crn = 15, + { .name = pmevtyper_name, .cp = 15, .crn = 14, .crm = 12 | (3 & (i >> 3)), .opc1 = 0, .opc2 = i & 7, .access = PL0_RW, .type = ARM_CP_IO | ARM_CP_ALIAS, .readfn = pmevtyper_readfn, .writefn = pmevtyper_writefn, .accessfn = pmreg_access }, { .name = pmevtyper_el0_name, .state = ARM_CP_STATE_AA64, - .opc0 = 3, .opc1 = 3, .crn = 15, .crm = 12 | (3 & (i >> 3)), + .opc0 = 3, .opc1 = 3, .crn = 14, .crm = 12 | (3 & (i >> 3)), .opc2 = i & 7, .access = PL0_RW, .accessfn = pmreg_access, .type = ARM_CP_IO, .readfn = pmevtyper_readfn, .writefn = pmevtyper_writefn, From patchwork Thu Feb 14 19:05:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158423 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1748425jaa; Thu, 14 Feb 2019 11:09:16 -0800 (PST) X-Google-Smtp-Source: AHgI3IZLDemaUIA9gPGlQE2PjafR0+dXJ3uwMljpzMBMTDSt5/+IffYU1sH0TThqvROcFiRLJmIS X-Received: by 2002:a25:4902:: with SMTP id w2mr4655747yba.26.1550171356415; Thu, 14 Feb 2019 11:09:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171356; cv=none; d=google.com; s=arc-20160816; b=rkd1aylqkGW0+gUEvCDqSYNFZGI7ihkJniVWea0KXNLkl2wutmpetUsKdt2dB4QmwV TyUWNolg7tjRGqmTf5NYWmdCRuOLEC82nu7OtjQdM5dp3b1zj9JDtTvGL3Qhs1+L5Nfg 3ep4YWcC1r5OlL59RvJ/CihfbZp8ne0GI90I0aNH06z+QERSKEFCniC1cdGxgGUi1WEa 7oySX77j4PhHbkrF4tjT/S93IaI0HOEEdDfuXF+SWm5FH7K1aVH4IJrY0IL92MqaEryP u3nXdMtP7mXDdFr1jJmQqDcd+dvOOOMokmfjSsk1GG3DUNM6SnlNye/9nNxD/3lZB+Kv l06g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=IzlwigeDYG8N9eg7gYUSsa8DzLsxM0lMmKo+XxYsWKU=; b=ipRTiMBqC9o7EURXHcJs/G1XWCbMZR3CPUmRZ2fCkWgxuSeMx+F4VVozy43mT+sx+O Lc1DoYr3iUtY8WfwGY7QvDR1jrXsLDZLkwr1UFgQcUA2veFXunZcZbJAXgwo1C+PUoES NnTCksukv6aBJVwuf0a9l0vt4h68BJV90pPRwJkuiIvxwmOaJ3UP5b0JQbwhJDmF0kYS xfmKsv4bTMMDgQ/AHOHfnF2XXJr3l7eB/usJClyajx/mipS+X+hs6A+8Ivb4i8jk1PMz P4s7MeUM5XnM47zAllO13KsEalduWvpJxjSbbc0vN1KQO0eFbngpo3vStEtCdaBWVNJd beOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=tnXwkuWi; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b60si2005051ybi.238.2019.02.14.11.09.16 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:09:16 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=tnXwkuWi; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53534 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMNn-0001KZ-Og for patch@linaro.org; Thu, 14 Feb 2019 14:09:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53747) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKo-0007hg-2N for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKn-0004cg-8k for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:10 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:32812) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKn-0004cA-1O for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:09 -0500 Received: by mail-wr1-x42a.google.com with SMTP id i12so7757166wrw.0 for ; Thu, 14 Feb 2019 11:06:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=IzlwigeDYG8N9eg7gYUSsa8DzLsxM0lMmKo+XxYsWKU=; b=tnXwkuWiP3dnmffG8srPklKxRFiuuny8soEY1fOCDtZc/wO1BzXdE28Sc/OKSgEmjT QcX6TrW36/Lvw866rLAeZzVM7a8ScjAjq1/GwLl/TCi00/VwKcuN7ijkeQeVneFCXwRt RLfGdQ+eggzvBJaXHWuZ8Zcb67Z7v91zXIhFuJCI/s/exzZilYK3XpH1KdmPVWT0aLQN L1gum9JBsQN7kWMMVn36IVrm3ZHUnudXeCOzJfDMXZez7jdQwlvhUjEswPny/eTSuP9Y dNhy/lVt3wlaBySJp86wjUczXn0RgF1Y5UN4hKq4TtLuanYbuUivW6H8aYNZCAKLG2NH w41Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IzlwigeDYG8N9eg7gYUSsa8DzLsxM0lMmKo+XxYsWKU=; b=LXBGWBvSKOOTcJgZxLk682zy4Fw4HtfIHu+f3XFpJa+0ryc9f+gMVzMWt2h+ZC07gg 1c6QnXQwYBnlxCuKEv8uWHVeeo+TQfp2hUiDW38RM3G3eTK9zPyWPIYoxdvLdVfDBJ9M 5vvP6Tx6q7yEQPIxrlqij7NYBQ0v4G5gUqDBR3B5qPlxuYLQbjVNmp4u6fmZz0mTDBUh osx7LR552aIyOCbLS68ZSWFyJjl1vW9BQnbv5WNSPBAFNCqqUBp+Dxs9Uj2NdKEKsfya LTa5pXwd/LiOoqqXRDPkwiZIYWmCqIWHadZ2RA08it1y3WzkHCqNK4oJT8PC81tywh++ L5WA== X-Gm-Message-State: AHQUAuZ/3LSbhkR6JONv3wv0UzQXGQzollV6fIXl0MhBIlGB4YH0fpzI 7NzfqZnQ98exexf3zHOYJDe3YT/GkfdYeg== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3927642wre.215.1550171167765; Thu, 14 Feb 2019 11:06:07 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:07 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:38 +0000 Message-Id: <20190214190603.25030-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42a Subject: [Qemu-devel] [PULL 02/27] target/arm: Implement HACR_EL2 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" HACR_EL2 is a register with IMPDEF behaviour, which allows implementation specific trapping to EL2. Implement it as RAZ/WI, since QEMU's implementation has no extra traps. This also matches what h/w implementations like Cortex-A53 and A57 do. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20190205181218.8995-1-peter.maydell@linaro.org --- target/arm/helper.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index bd9f6050eca..e1ef2f35237 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4434,6 +4434,9 @@ static const ARMCPRegInfo el3_no_el2_cp_reginfo[] = { .opc0 = 3, .opc1 = 4, .crn = 1, .crm = 1, .opc2 = 0, .access = PL2_RW, .type = ARM_CP_CONST, .resetvalue = 0 }, + { .name = "HACR_EL2", .state = ARM_CP_STATE_BOTH, + .opc0 = 3, .opc1 = 4, .crn = 1, .crm = 1, .opc2 = 7, + .access = PL2_RW, .type = ARM_CP_CONST, .resetvalue = 0 }, { .name = "ESR_EL2", .state = ARM_CP_STATE_BOTH, .opc0 = 3, .opc1 = 4, .crn = 5, .crm = 2, .opc2 = 0, .access = PL2_RW, @@ -4666,6 +4669,9 @@ static const ARMCPRegInfo el2_cp_reginfo[] = { .cp = 15, .opc1 = 4, .crn = 1, .crm = 1, .opc2 = 0, .access = PL2_RW, .fieldoffset = offsetof(CPUARMState, cp15.hcr_el2), .writefn = hcr_writelow }, + { .name = "HACR_EL2", .state = ARM_CP_STATE_BOTH, + .opc0 = 3, .opc1 = 4, .crn = 1, .crm = 1, .opc2 = 7, + .access = PL2_RW, .type = ARM_CP_CONST, .resetvalue = 0 }, { .name = "ELR_EL2", .state = ARM_CP_STATE_AA64, .type = ARM_CP_ALIAS, .opc0 = 3, .opc1 = 4, .crn = 4, .crm = 0, .opc2 = 1, From patchwork Thu Feb 14 19:05:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158431 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1754163jaa; Thu, 14 Feb 2019 11:14:43 -0800 (PST) X-Google-Smtp-Source: AHgI3Ib2VXXwSLU5tTvAcmuk8UZg3zS93EX1vX/k59j93Ss0/xcbX44LX31JFsKy/ybObMIWg4iz X-Received: by 2002:a25:3243:: with SMTP id y64mr4843971yby.106.1550171683446; Thu, 14 Feb 2019 11:14:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171683; cv=none; d=google.com; s=arc-20160816; b=mQg3x0nF0frWDENvbNshtzoWB0w3CRSgOOIMHG7D2DlMfRfOaXbn0ZXOY/7fPVa1Qs cF2H+nQ5OnR6OVwPAVdTpvl+yh4eDKdvOn9p1sAHbt4e0s8FXrPnmab8fgC3VvhrJ1jp Jen3gLatTDlmlnwTkPp4Wsoquugf2B7eDFM2ZVpYS61IefjNbiuzFWk6KevLBCvd6a5Z TZ4cP8r71FYI2JRTOZd08LHQmAjoYzSIY/2ZwPL5W0vPqnzO5I61lVlF3RmvXgkZ6SHM IxdMjwMNnL8SSfLmRXbbD9uD/zEnF4DStGVk1E2FSEhNQzB8+5wsPItOlK6J0XGRm/+O sCbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=uswL4c0TTMXFNz1N3f9daDRaiHb4sJ9+vjiHGwN6Hj0=; b=nqgKrzyM7Ir7CZMGAbsQYcII6OfJ8lAi5fbjXuGLj6sTJUlChYr8jher/pH5r1TJS5 /0tu6LRP/dZ07BTMZgoGXdmLm3gsk1kXdkNkzhlymMnU8Kp/KZvqu/memKo3JeKIahf7 fIho+AGrub03bqD5+ZB6rEfA3LrhuJLpktG7DgE1NKZd6mzBdPagVTFP15UpDscwf2Ab FvYEDNGv17+eptZ3IkW1u/SjKrFsEXrEBMrr1b5na6xCbV/WNrfN4WcSifVY2ajgKTpw 680uPtWZ04HRv5vLPTv+O8SXYCm5lpDlpLfkn3OVM0VJclaxCVtPPcSD7jCVotY1oXPA wSPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FIHFKlEA; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g12si2014490ybk.465.2019.02.14.11.14.43 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:14:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FIHFKlEA; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMT4-00057e-Tm for patch@linaro.org; Thu, 14 Feb 2019 14:14:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKp-0007i2-Ey for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKo-0004dS-IU for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:11 -0500 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:40083) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKo-0004cs-CO for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:10 -0500 Received: by mail-wr1-x433.google.com with SMTP id q1so7704181wrp.7 for ; Thu, 14 Feb 2019 11:06:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=uswL4c0TTMXFNz1N3f9daDRaiHb4sJ9+vjiHGwN6Hj0=; b=FIHFKlEAq/Xg5zCvveQcKvJLaecc9XPTatCZP/bBBRWbQPAkGDAvxa91fAECx4VM9+ qM3rCFOiTN/NreazFL2J6EZm7VE+fplK2UC6DIC9Sz71Z2gzwjbtMGWBN8EzukQzX4hu ka9xefpDWPSZmR09JsJfvRwzqcPJr0cFIU6/nO5SNvcpBD1OzhqgQlxYlh9cmCatPlLd oca9sHxkdwCM5qmb6nrPutyNHfXFZ7T4CFKhWOQx/jH1kVrI3Eb4QlABU96K4Jt1bciQ tDCAJkxmqwct0s+av8eQnaD9KGRjtRgVo01Tns5n8JrJkcaWcRInX/IIpslbHsGGnwrd /eMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uswL4c0TTMXFNz1N3f9daDRaiHb4sJ9+vjiHGwN6Hj0=; b=NeoCQGSOH+Sw4PpVXA72tvNlN67fFBk8DmdJgxLsAajlffRGlXR7aw6/t77RrzjmP1 rgFgThO8o4zbos2HI7Q62NLeFb09p0CBvDWJ2i8q107OO2nBfezbKa5siv8Ta4b4VrQz UA/+iobLziG0W5Ao0ZsZBwx2W91TNgB4ZIR+SgvdXUADwh7tcULbKOAqDYD68KtgoUex g7JWY8gcCOYBPWiRHZDLWJN46rLN+Mn8rlV6Qr5bx+9Elw8tB6lIzCF2LfggQSCGTEfv 16JJHm/ZnSM88J60va3LDwONnrcp1X+2ZVbH8UX4idzCaNzpQNEF5yy9uQeA59gh0jkR Ak0Q== X-Gm-Message-State: AHQUAubXfahwbBZy0BARGe21EXbASySSaNeQWjjJoFUGoJuvsRaVsGOz XQvB16QkP4xmcxJdItx3UA8Cg46XC2r/kw== X-Received: by 2002:a5d:4fc5:: with SMTP id h5mr3901676wrw.84.1550171169133; Thu, 14 Feb 2019 11:06:09 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:08 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:39 +0000 Message-Id: <20190214190603.25030-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::433 Subject: [Qemu-devel] [PULL 03/27] target/arm: Fix int128_make128 lo, hi order in paired_cmpxchg64_be X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Catherine Ho The lo,hi order is different from the comments. And in commit 1ec182c33379 ("target/arm: Convert to HAVE_CMPXCHG128"), it changes the original code logic. So just restore the old code logic before this commit: do_paired_cmpxchg64_be(): cmpv = int128_make128(env->exclusive_high, env->exclusive_val); newv = int128_make128(new_hi, new_lo); This fixes a bug that would only be visible for big-endian AArch64 guest code. Fixes: 1ec182c33379 ("target/arm: Convert to HAVE_CMPXCHG128") Signed-off-by: Catherine Ho Reviewed-by: Richard Henderson Message-id: 1548985244-24523-1-git-send-email-catherine.hecx@gmail.com [PMM: added note that bug only affects BE guests] Signed-off-by: Peter Maydell --- target/arm/helper-a64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.20.1 diff --git a/target/arm/helper-a64.c b/target/arm/helper-a64.c index 101fa6d3eaa..70850e564d3 100644 --- a/target/arm/helper-a64.c +++ b/target/arm/helper-a64.c @@ -583,8 +583,8 @@ uint64_t HELPER(paired_cmpxchg64_be)(CPUARMState *env, uint64_t addr, * High and low need to be switched here because this is not actually a * 128bit store but two doublewords stored consecutively */ - Int128 cmpv = int128_make128(env->exclusive_val, env->exclusive_high); - Int128 newv = int128_make128(new_lo, new_hi); + Int128 cmpv = int128_make128(env->exclusive_high, env->exclusive_val); + Int128 newv = int128_make128(new_hi, new_lo); Int128 oldv; uintptr_t ra = GETPC(); uint64_t o0, o1; From patchwork Thu Feb 14 19:05:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158433 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1754605jaa; Thu, 14 Feb 2019 11:15:08 -0800 (PST) X-Google-Smtp-Source: AHgI3IbkyrgS53qVlaSCUGGYsATCBnTcUKQQ3hnuVtwzgnW8cIFPzJFcyN5lD9e/JzabrdNN9Xs9 X-Received: by 2002:a81:ae61:: with SMTP id g33mr4900075ywk.220.1550171708535; Thu, 14 Feb 2019 11:15:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171708; cv=none; d=google.com; s=arc-20160816; b=iJXyz4U4iRM4xVq83mybffE/IdNS9ZKszxg1P+uRlXKJGsejixrpaTuN402jh4HQJh KgdtlzsNoinkWhHDA0BpLFeywjTtd9x3fKAOPrADwFWZjuDr6nIIIdy/b7+1NtIgant+ 0oqSi27vZyhcUKh1UH5iM6IG31Ufo+RMuQ3otKn/bRboe9Ml0tIb7P4RVH0sRLYpBT4g iHVeSbb2U2FmHifJPPbC5gy9sNqlUTuWSv43wl0DpCUXeJEjbuD+LqKKOJ5tJ4EbxqVu C7yK5W1+L9JzA3OvMDnRk8jm9pBjHrLCTT9FJYsF3K2IfMZKHOtLthg9lxTjrg1CLYPD IQ7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=Hw0Y9LbAAg43SvV1h3Yi9DABc8HNiWGmFOP9dGtwUOo=; b=b21ALRuoAAI79zAgy6XFhSmTSzN4+/fDlOMHdMAKQOIRjkBLyXRJFBgyBspMI9EVmx A/lIDyUhsH3GBegWdJDp94b8kOKtdxZh1ezWet6s5jOD3wKjpMnK6CYhLF1OQVmG29hA /03l00rI4cVf1p9ZC55uRqi12jrOVLm/0BxS70jwpW4qYY4VI92Kt5Jpv2xvxQJN8r7i SCtHs9RBHyrhWNmey5XwtQpVb4gnp9B2mYjRbqo6Oo/MSB2QIEREQb93qZxiF6R/QTO+ uxDjmZluPYpjPaAr5t1zJH61e21cJM7MltnPCnFX6Vl3Tr8t5pEAfU9zkH1BJz72xwFG 7yyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=xfFTaruc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z67si2005440ywb.452.2019.02.14.11.15.08 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:15:08 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=xfFTaruc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53617 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMTU-0006O4-1e for patch@linaro.org; Thu, 14 Feb 2019 14:15:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53787) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKq-0007i5-MN for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKp-0004eE-RI for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:12 -0500 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]:44973) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKp-0004de-Ki for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:11 -0500 Received: by mail-wr1-x42c.google.com with SMTP id v16so7681111wrn.11 for ; Thu, 14 Feb 2019 11:06:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Hw0Y9LbAAg43SvV1h3Yi9DABc8HNiWGmFOP9dGtwUOo=; b=xfFTarucpvyokQpwiOOqRyMpod4Zh1xnaqJRqvLLCDDX+ZW2Wy6qt0HQkVYMxpQmcF BPrKRXE67/05Yn3zrNADnUGYlhxKyIESWBkX3rzS9HUJpNcBQ5vYmcKeD6X3YQz9aoY6 GscOnVTTwWVJ/fTmlJTT9ex0AkBJbdqOsxONXFKBJYFsC9jEoJRG0Q7wd0ixK2H4RWDB Pn5NL9twCfcVrc53Fh1S3x081/wNJaLwdhB/WjTJU7yipHHTUOeHKiONi4h4IvyBir9j A6fDUwgRrH79+3pyV5fXJRPUCdsLavG2+jrN7ygMhKFcZxRFqFdTjDAKeTTkE2MIaqGj F0JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Hw0Y9LbAAg43SvV1h3Yi9DABc8HNiWGmFOP9dGtwUOo=; b=f/8Tve2IRh1cqaTf9F0iHmBHrXk8viGoaBlN26QsM04NigdpvlHuKvTFtM7LEaoLSi 1xCoVNDHmxEqNCRh9SlFZ1u3dd2bhcxM6lQeqt3jMtH2rZuzcNzov8ul36JQq0wI8C0t 8QobfWw312bkbfUOTD1MPknO+VoDfd0+5oqCuGvtFGxGSfhL0g7jg/KuYwz2KTrRLSDi q4K8TFkmtIrPOp1+3xlOHLJPP4YbuBv1lP5vWYndGLwyXiIVt1xSIdtrfXqX8/LP3WQ7 kgOLb4klnc6ZePjgPFSuDyL82CObmu22dM6gfj91iN6vUxThsMCKGYteYA6Bz8k938jq tuvA== X-Gm-Message-State: AHQUAuYAaLSe0nNfgrZDElVi8VNF8OtfP3ug1G6WOLDYWHBLJigVTqTt HUmohcPgmd5HWG/gn46a4strClq/GHf0tw== X-Received: by 2002:a5d:52c3:: with SMTP id r3mr3974840wrv.163.1550171170243; Thu, 14 Feb 2019 11:06:10 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:09 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:40 +0000 Message-Id: <20190214190603.25030-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42c Subject: [Qemu-devel] [PULL 04/27] target/arm: Force result size into dp after operation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Rather than a complex set of cases testing for writeback, adjust DP after performing the operation. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20190206052857.5077-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/translate.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) -- 2.20.1 diff --git a/target/arm/translate.c b/target/arm/translate.c index 66cf28c8cbe..eb258958768 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -3970,6 +3970,7 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) tcg_gen_or_i32(tmp, tmp, tmp2); tcg_temp_free_i32(tmp2); gen_vfp_msr(tmp); + dp = 0; /* always a single precision result */ break; } case 7: /* vcvtt.f16.f32, vcvtt.f16.f64 */ @@ -3993,20 +3994,25 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) tcg_gen_or_i32(tmp, tmp, tmp2); tcg_temp_free_i32(tmp2); gen_vfp_msr(tmp); + dp = 0; /* always a single precision result */ break; } case 8: /* cmp */ gen_vfp_cmp(dp); + dp = -1; /* no write back */ break; case 9: /* cmpe */ gen_vfp_cmpe(dp); + dp = -1; /* no write back */ break; case 10: /* cmpz */ gen_vfp_cmp(dp); + dp = -1; /* no write back */ break; case 11: /* cmpez */ gen_vfp_F1_ld0(dp); gen_vfp_cmpe(dp); + dp = -1; /* no write back */ break; case 12: /* vrintr */ { @@ -4047,10 +4053,12 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) break; } case 15: /* single<->double conversion */ - if (dp) + if (dp) { gen_helper_vfp_fcvtsd(cpu_F0s, cpu_F0d, cpu_env); - else + } else { gen_helper_vfp_fcvtds(cpu_F0d, cpu_F0s, cpu_env); + } + dp = !dp; /* result size is opposite */ break; case 16: /* fuito */ gen_vfp_uito(dp, 0); @@ -4084,15 +4092,19 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) break; case 24: /* ftoui */ gen_vfp_toui(dp, 0); + dp = 0; /* always an integer result */ break; case 25: /* ftouiz */ gen_vfp_touiz(dp, 0); + dp = 0; /* always an integer result */ break; case 26: /* ftosi */ gen_vfp_tosi(dp, 0); + dp = 0; /* always an integer result */ break; case 27: /* ftosiz */ gen_vfp_tosiz(dp, 0); + dp = 0; /* always an integer result */ break; case 28: /* ftosh */ if (!arm_dc_feature(s, ARM_FEATURE_VFP3)) { @@ -4126,20 +4138,8 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn) return 1; } - /* Write back the result. */ - if (op == 15 && (rn >= 8 && rn <= 11)) { - /* Comparison, do nothing. */ - } else if (op == 15 && dp && ((rn & 0x1c) == 0x18 || - (rn & 0x1e) == 0x6)) { - /* VCVT double to int: always integer result. - * VCVT double to half precision is always a single - * precision result. - */ - gen_mov_vreg_F0(0, rd); - } else if (op == 15 && rn == 15) { - /* conversion */ - gen_mov_vreg_F0(!dp, rd); - } else { + /* Write back the result, if any. */ + if (dp >= 0) { gen_mov_vreg_F0(dp, rd); } From patchwork Thu Feb 14 19:05:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158430 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1753987jaa; Thu, 14 Feb 2019 11:14:34 -0800 (PST) X-Google-Smtp-Source: AHgI3IbtLF8eZQATFFUf4K1+jSOLEV/qRtGHcuFB6jlrYogrLW1Io5ZEuove0dws5zaL2U8iP1/5 X-Received: by 2002:a25:6041:: with SMTP id u62mr4827438ybb.149.1550171674026; Thu, 14 Feb 2019 11:14:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171674; cv=none; d=google.com; s=arc-20160816; b=c++Heevb3D37s0gSKJsaryQPRAJBLZusqba5e/C67NSFam/+5qXoRTLmPeMmPQBLgs 7OjBWGSFMU7rSWpFSFxOJJOoyQMzSM9sbQPa/iSH/Wx65YJWihYZqWEosyjv4HwmqJ5O ZaKeIhx7N4tud7PbV+ChHiNX+tcYQdraqZSP6CkBxipWG9G+CvJ4SaJOJDKQ84q9YpUa v0LaVETdG8F7gmrPkTKNZbS1WYfE5lH3DCVu+SlPRxP0295kapbRtWSozevIJNK53488 d9fltwbkQjCSLeJX0xvHlL03KpSJ7amSE5DIgprTzbjR+fnqigukwHjedoBoETINA64y KmWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=6CWp2jMZ1lWV4cwZJWfDicUmqPN8SFFnI7dYAgqZ+iU=; b=uoa9i5r7CSjByeGiIv5reTlqCoxZafeGwmVjWz1Z2gd+/fldv/kQfrA+1UiabFSSWn 3gvZYP5cFTFZ21lz19EAVGsaHUeK4j4pMxenGeG31gI9G7TAqjhwnk2XNu7yHHOm3FWE SpN3U7ZJcWzugIgiEa9w0TvJ1P/9OMMqN3jOk79oZnmAFrjYOk3Ko6ZNLM/HfRZ48Ry9 iyn3yBYsLsWEZydDcL8CgTZmM/wAUAthwdzomhdJazAdXcITiuOL9wAsqd9obS/1ItJ+ x9dXxLbVW7awxbbz512aRbWZgFb4UtvzDEiJfk+xf2xEQkExgMgAau7cICd18QFpRR4L C9KQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=O5SwHNqG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x6si1985286ybx.476.2019.02.14.11.14.33 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:14:34 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=O5SwHNqG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53602 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMSv-0004xN-34 for patch@linaro.org; Thu, 14 Feb 2019 14:14:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKr-0007i8-Oy for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKq-0004eq-VZ for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:13 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:36381) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKq-0004eN-P0 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:12 -0500 Received: by mail-wr1-x42d.google.com with SMTP id o17so7731228wrw.3 for ; Thu, 14 Feb 2019 11:06:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=6CWp2jMZ1lWV4cwZJWfDicUmqPN8SFFnI7dYAgqZ+iU=; b=O5SwHNqGxc7lVQJozHoUF3ga1tnbU61Lw9qDPyQDTC+rGuCr4hIUqKCOOa9UQdP3hP BvGOG8lfbqgq1d+SCeAJ2Tyj1Ar0yQBERjDlZerbBssaQcjcl88Eqs7y1IbBFZJAme7Y F+3CtRa0nz59Y/mGq8WldATATX2UHy3eFGWOssl3t8bUjneI5e8rpuLTcfi0/kAYpzmO mYOYkeU1j9A0Dq4A8CM823jhYgxRVwSAjIkq/QfCTLNbir7I5gSH+YwY2TvD+9jDnTLa 0GQKVSi98KOR225nQFBCv+zXbTrnwLM5jNKu+UBpokXicTH9mHkRuDlc+v42g4ptbU89 xBVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6CWp2jMZ1lWV4cwZJWfDicUmqPN8SFFnI7dYAgqZ+iU=; b=XzbVSoIWIhZegDN2f0/t6tNoXVFY6ygYt33U8O42HKPwrk/b8EbHWGzki8pEoEpVNg P1vVyyQohn0Nny7mQPzQjfo7OlAPw3rMmNzoZ9i96DmocB7bCOs8/j26nnovOBYpKW51 xNSI2u7ZhjqzWWf/bfzTQ5/uVTlcE2HT4VUinDyyWZ0jAqj+QC1+k7nu08uGLdY5Zm2A yLxNkNIfOAx3RBj40jpxZ+f+MwlfMkd+RpKvghIcrXav6tORZS/AkdfbU799s8qVPpWy +8VNx/Psc8xAdljL1n+YxfwPNHyFOfhB2lOgiQE+Rnvg6Qvxe74+js1UqEfSJceu34ml INtA== X-Gm-Message-State: AHQUAubbFCu4gCeJrdDJ473hNWoFZcacJ1Mqw8u36AR9SaUS66+5MTQy r3pYLhJfaqAuhc96RYnDXM/D21B3oEG45g== X-Received: by 2002:adf:ecc6:: with SMTP id s6mr4059117wro.144.1550171171465; Thu, 14 Feb 2019 11:06:11 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:10 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:41 +0000 Message-Id: <20190214190603.25030-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42d Subject: [Qemu-devel] [PULL 05/27] target/arm: Restructure disas_fp_int_conv X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson For opcodes 0-5, move some if conditions into the structure of a switch statement. For opcodes 6 & 7, decode everything at once with a second switch. Signed-off-by: Richard Henderson Message-id: 20190206052857.5077-3-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/translate-a64.c | 94 ++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 45 deletions(-) -- 2.20.1 diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index e002251ac6f..2f849a6951d 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -6541,68 +6541,72 @@ static void disas_fp_int_conv(DisasContext *s, uint32_t insn) int type = extract32(insn, 22, 2); bool sbit = extract32(insn, 29, 1); bool sf = extract32(insn, 31, 1); + bool itof = false; if (sbit) { - unallocated_encoding(s); - return; + goto do_unallocated; } - if (opcode > 5) { - /* FMOV */ - bool itof = opcode & 1; - - if (rmode >= 2) { - unallocated_encoding(s); - return; - } - - switch (sf << 3 | type << 1 | rmode) { - case 0x0: /* 32 bit */ - case 0xa: /* 64 bit */ - case 0xd: /* 64 bit to top half of quad */ - break; - case 0x6: /* 16-bit float, 32-bit int */ - case 0xe: /* 16-bit float, 64-bit int */ - if (dc_isar_feature(aa64_fp16, s)) { - break; - } - /* fallthru */ - default: - /* all other sf/type/rmode combinations are invalid */ - unallocated_encoding(s); - return; - } - - if (!fp_access_check(s)) { - return; - } - handle_fmov(s, rd, rn, type, itof); - } else { - /* actual FP conversions */ - bool itof = extract32(opcode, 1, 1); - - if (rmode != 0 && opcode > 1) { - unallocated_encoding(s); - return; + switch (opcode) { + case 2: /* SCVTF */ + case 3: /* UCVTF */ + itof = true; + /* fallthru */ + case 4: /* FCVTAS */ + case 5: /* FCVTAU */ + if (rmode != 0) { + goto do_unallocated; } + /* fallthru */ + case 0: /* FCVT[NPMZ]S */ + case 1: /* FCVT[NPMZ]U */ switch (type) { case 0: /* float32 */ case 1: /* float64 */ break; case 3: /* float16 */ - if (dc_isar_feature(aa64_fp16, s)) { - break; + if (!dc_isar_feature(aa64_fp16, s)) { + goto do_unallocated; } - /* fallthru */ + break; default: - unallocated_encoding(s); - return; + goto do_unallocated; } - if (!fp_access_check(s)) { return; } handle_fpfpcvt(s, rd, rn, opcode, itof, rmode, 64, sf, type); + break; + + default: + switch (sf << 7 | type << 5 | rmode << 3 | opcode) { + case 0b01100110: /* FMOV half <-> 32-bit int */ + case 0b01100111: + case 0b11100110: /* FMOV half <-> 64-bit int */ + case 0b11100111: + if (!dc_isar_feature(aa64_fp16, s)) { + goto do_unallocated; + } + /* fallthru */ + case 0b00000110: /* FMOV 32-bit */ + case 0b00000111: + case 0b10100110: /* FMOV 64-bit */ + case 0b10100111: + case 0b11001110: /* FMOV top half of 128-bit */ + case 0b11001111: + if (!fp_access_check(s)) { + return; + } + itof = opcode & 1; + handle_fmov(s, rd, rn, type, itof); + break; + + default: + do_unallocated: + unallocated_encoding(s); + return; + } + break; } } From patchwork Thu Feb 14 19:05:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158435 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1757913jaa; Thu, 14 Feb 2019 11:18:20 -0800 (PST) X-Google-Smtp-Source: AHgI3IaxwlXvbrXf5e1Sfq3IVUE6g708Ki7aun5dYEZaODYDd/hOT9A0eeVts+r4ntLBL/B6yaw7 X-Received: by 2002:a25:d06:: with SMTP id 6mr4922017ybn.433.1550171900308; Thu, 14 Feb 2019 11:18:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171900; cv=none; d=google.com; s=arc-20160816; b=x74RnhSgBQOlv48IHJrkpXHpTv07RKWiAPzTWehHUpMyB8kQjlWShjjeyOXk5XddVV FflgwwHs4VsBsedQMRYoju+cKbjfzPUabMONViTdgf+3R4w7CaRk96dzHIprVUxeJb6P k9SDIpIWdL00kZSNbFMX5ZD2yCSjYHwr9cQouKXdAtM2445M1ymq+8zppiHUq0swnIzM sTQFC+KTBMkbvsqxiFg8pkm0wmx5GFNdZ2wXd2fgcf4K22kDcJaD6uV7ImWm1MwRIutB oBbWzm2YwkPlT65gD9Q/ZIv/xq7mY/8Qm/rdp8MD7afHYBddMO9tlLO+40kaDKUAYmZI AvwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=MLWTlAGA+UoWxGz/xEJXz3ZE6B8T7D9aiFqsuj678Eg=; b=iLZ44tmPl6HsUew+FeF4g5kMzKNhr0IFKuGmMIisYCby+EtWegkwu+gAzcRX6kfLds TQkVi5wh7qmMJ4Rt5KqhPLQTvTL80OKlO+W11pkNdTIozHidLPgPQjBe9slHUBEZIqYe N4PGY4J/F2OnZdH8u21yZ6BEjoOWF+Lc1KktWZ+jL3WZKQkGBo6nH5WtisIsetRudh7f aXIYLrDFAQOz8BA1XEQ8CM3zggVUWOOTY1JKPQ2jDSbyHewOzHvBOWwYXP0JN1INDB6M d+L6WYN7iHKut2iCjBe4spX+Z58Zl5pfMv1qdhDKQZ88hDFXeyRvv5ae8K8dt/2qDfSF mqIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=KggvhIUB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id c185si1042693ybh.118.2019.02.14.11.18.19 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:18:20 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=KggvhIUB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53671 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMWZ-0000Kp-90 for patch@linaro.org; Thu, 14 Feb 2019 14:18:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53818) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKs-0007ix-SH for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKs-0004fT-1L for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:14 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:34491) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKr-0004f3-Qr for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:13 -0500 Received: by mail-wr1-x441.google.com with SMTP id f14so7751399wrg.1 for ; Thu, 14 Feb 2019 11:06:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=MLWTlAGA+UoWxGz/xEJXz3ZE6B8T7D9aiFqsuj678Eg=; b=KggvhIUBhRhDEP+voeu3ylp1GtlJMYsK2QxxO0rD8AaRYtNSMGiQFqJk2VzxXA52Fl U8DoXZYje0KeOzeDMXLwcvIUahiLUPYD3zeIgsXJ2wybvUBc9HeZ+snracmXNgJr1kBF IQCzABYAnnep87h4NZlD0y4D9oxen3O0Dd0a7j8nZ3z88+4OgcG+aZws4Fv7+ly4XpWZ f+QDIekp1bd3q1SLJ4c5ANkLOVh8rf8vE9qQs1qAwxUd/TBJNu++r7WXbTj5WJ8+mP6c nBeAyamJJSuLaL+TSmzLzhL0nJOfSNi84XUUtKSIni7HKKKfojIrmWVj6NZpwcAVJGXp ho2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MLWTlAGA+UoWxGz/xEJXz3ZE6B8T7D9aiFqsuj678Eg=; b=iVZY0wCRcfyBwFNlJTrW8qVBDcGLhFZDAAXska6EkAM0QJL0Ub+G6eUva2xHBwQrUh eH2ISc0mUi4xfj3bQoBZ69Ko32u8Ax9rG7bzbpyImG8AeBxtbMf9fP1bmygGBOMmPBRF z1LCiGRLzaZTSMrnA7zfdJpWX1+zLNqO5K8RLiHDNmAT4ZlFpqIxIuSr74fxrPgC4j+O KXFYUJg4BGvUugICDb7NwdWcP64p0q/qa9RHbjjGLgBJRv3qeICk1CieXH9bW7+I2a8z eHTKGIKQ3vlGINME6qI937cc7KtfHooOk/X4nvi1P1DW7NKHQ1CTtRj1gWo1PGeYdpTe mXNQ== X-Gm-Message-State: AHQUAuZGSfd9xR6bhP/F/b9wNHY7CUwhZXAgMoLrr1amJB3pIiZtEnLX p0fOn0xYidLwYuRisVE0A6mS4BKYIDfJww== X-Received: by 2002:a5d:620d:: with SMTP id y13mr3993996wru.119.1550171172537; Thu, 14 Feb 2019 11:06:12 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:11 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:42 +0000 Message-Id: <20190214190603.25030-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PULL 06/27] target/arm: relax permission checks for HWCAP_CPUID registers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée Although technically not visible to userspace the kernel does make them visible via a trap and emulate ABI. We provide a new permission mask (PL0U_R) which maps to PL0_R for CONFIG_USER builds and adjust the minimum permission check accordingly. Signed-off-by: Alex Bennée Message-id: 20190205190224.2198-2-alex.bennee@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpu.h | 12 ++++++++++++ target/arm/helper.c | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 47238e42458..c92c097b449 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2226,6 +2226,18 @@ static inline bool cptype_valid(int cptype) #define PL0_R (0x02 | PL1_R) #define PL0_W (0x01 | PL1_W) +/* + * For user-mode some registers are accessible to EL0 via a kernel + * trap-and-emulate ABI. In this case we define the read permissions + * as actually being PL0_R. However some bits of any given register + * may still be masked. + */ +#ifdef CONFIG_USER_ONLY +#define PL0U_R PL0_R +#else +#define PL0U_R PL1_R +#endif + #define PL3_RW (PL3_R | PL3_W) #define PL2_RW (PL2_R | PL2_W) #define PL1_RW (PL1_R | PL1_W) diff --git a/target/arm/helper.c b/target/arm/helper.c index e1ef2f35237..88cf4976039 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6857,7 +6857,11 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, if (r->state != ARM_CP_STATE_AA32) { int mask = 0; switch (r->opc1) { - case 0: case 1: case 2: + case 0: + /* min_EL EL1, but some accessible to EL0 via kernel ABI */ + mask = PL0U_R | PL1_RW; + break; + case 1: case 2: /* min_EL EL1 */ mask = PL1_RW; break; From patchwork Thu Feb 14 19:05:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158437 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1760602jaa; Thu, 14 Feb 2019 11:21:08 -0800 (PST) X-Google-Smtp-Source: AHgI3IaRSbYgqgWgBA9VLFbLA/QFxFcdOvEcwLHVB2KY5h9k7kz1GyCvdIquOS7R58qVJw4e9R6a X-Received: by 2002:a25:bb51:: with SMTP id b17mr4767206ybk.140.1550172068547; Thu, 14 Feb 2019 11:21:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172068; cv=none; d=google.com; s=arc-20160816; b=1Hfz/67b2evF+KCYPHDMGzY1YMLLTWaI7qUNjxdno4LTcT2WC41Luk9ZRV1ZFR089x kPvSoSVQLVbcb+DqAyyI44XESTp37YJpbpB6W4xAwxT7+MaR8B/M62bzsT29u73i1HqT +LYCtF3vWYvKX9FQValv4AAvDk5uZYTQODRm1qHAkl2lzXT/Zcz0PvFo65F3FeE6Cc0s 0nKH4DwecQLqThXv9KZbhbuqspvobPbjrxz59vt/3eq2aOJvdSnpFO8Utd4yo0cfcWKe P9abjkTaO+O/FkAy5EnPUuyqifPBpnIKhQF1NlwxD3nLmnzxn1KN6sL8kb4qbkYn9mm5 aFhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=lZfKwSdGUuGpFg4aTqYEBeTE57fpYvGiIwxpL69KCVo=; b=JYNwsdt+ohbklj6/KMCDyyEvClSILHlTKNzCZ4xhCyvKYIRFSTY0FjgPxQIjkSSz3G 5R/t+rSSyL9Rbqtb6x6the0xQw8juq9glACrQTrKp1kSiHfh2se225potwdLAbjTSkix hwqMSTdCjelcNiquhApsfmyXnyfjyQEEZE9nugqcLJ9gKf3Veahqm3AVyflcCiGF7rrF boeEUkl6xSZ+DPJpAWmS9QzUWS5cfMk0xhyC/ywhJnKSkwKEQmZD+uYQvqM4TKCycP34 51q7soqQe7t803lM22TgQO+gwpLJcXv/ht/Z6PotkXtD/tcZL693iLYYHSPHir0xlOA7 /UNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Xvb+dDkA; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l10si1885660ybb.419.2019.02.14.11.21.08 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:21:08 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Xvb+dDkA; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53723 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMZI-0002W0-2i for patch@linaro.org; Thu, 14 Feb 2019 14:21:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53838) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKu-0007jv-6b for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKt-0004gb-3Q for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:16 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:37628) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKs-0004gA-TH for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:15 -0500 Received: by mail-wr1-x441.google.com with SMTP id c8so7703693wrs.4 for ; Thu, 14 Feb 2019 11:06:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=lZfKwSdGUuGpFg4aTqYEBeTE57fpYvGiIwxpL69KCVo=; b=Xvb+dDkAyEQcN/ykxas4RYWBAou+Ozx2EhttNb2fLHsLPulKbdC62cqj4acyNb8PEk V2PGzwKnT+WbI8p2E02KMxPIsRDLeAtW2+IH5xLK9KIF95j8n9y4ki101Orxe5SACeaV nLFVOMxUzV6J4/a5/ZnhEmGq14WIYNFsrYmyDISFJOBsy0jEY0zUr4mazhxzpxa2K18p tgXN8+F4r40cE05IEuG73MF8b0iTeE2AWVBRNuYJiG5Dnebb5X/CvUfVEkeFQ15dIaQG Gl05pj+KB3VodK59ocjv3dNRlKfsNoNU+N3sOAzeFqsv4fOKJMSKHLyBYJr2afJTEboI mBxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lZfKwSdGUuGpFg4aTqYEBeTE57fpYvGiIwxpL69KCVo=; b=IoBYDf1z4ao/7kr71Qo3zEFiuYFiLiVvsYkOtzXqV/rLzqG21lkpHvP6wQU2okKffe Sdnrded4h7E4psOC1MDjioPFzdY9O5DHEsm4eKRSLfF81eW62xTsPNbr3grhUWQiMfGE Ec6qj6dht4fluZza9S5yK34Q+84zYd4BUmmX2kJl968cMh6K+OaTTUmGo9Qkn+hbglld 67c2pBJ6XPPAOOL/C8JiCKuRIk8xWff7Q3U+JN/MUjLvZCh43Xj7J4UxX55FDIMUOapT JWqRSEhFoAioN851V4AhzLB+/ue+OQwW8IHFz9m/YAdRd4HP4maZR2o9fT+Ut/u9CIc5 UbgQ== X-Gm-Message-State: AHQUAuZPgvkDAXqNaLoooy1hM3MMDmHr03hj99QfxhcuU8hf2YOSjviP h+pKw1zfnH6EI8K/3lImdrlt4WMqfzKTUg== X-Received: by 2002:adf:d845:: with SMTP id k5mr4039014wrl.145.1550171173673; Thu, 14 Feb 2019 11:06:13 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:12 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:43 +0000 Message-Id: <20190214190603.25030-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PULL 07/27] target/arm: expose CPUID registers to userspace X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée A number of CPUID registers are exposed to userspace by modern Linux kernels thanks to the "ARM64 CPU Feature Registers" ABI. For QEMU's user-mode emulation we don't need to emulate the kernels trap but just return the value the trap would have done. To avoid too much #ifdef hackery we process ARMCPRegInfo with a new helper (modify_arm_cp_regs) before defining the registers. The modify routine is driven by a simple data structure which describes which bits are exported and which are fixed. Signed-off-by: Alex Bennée Message-id: 20190205190224.2198-3-alex.bennee@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpu.h | 21 ++++++++++++++++ target/arm/helper.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index c92c097b449..7c31e5a2d10 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2464,6 +2464,27 @@ static inline void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *regs) } const ARMCPRegInfo *get_arm_cp_reginfo(GHashTable *cpregs, uint32_t encoded_cp); +/* + * Definition of an ARM co-processor register as viewed from + * userspace. This is used for presenting sanitised versions of + * registers to userspace when emulating the Linux AArch64 CPU + * ID/feature ABI (advertised as HWCAP_CPUID). + */ +typedef struct ARMCPRegUserSpaceInfo { + /* Name of register */ + const char *name; + + /* Only some bits are exported to user space */ + uint64_t exported_bits; + + /* Fixed bits are applied after the mask */ + uint64_t fixed_bits; +} ARMCPRegUserSpaceInfo; + +#define REGUSERINFO_SENTINEL { .name = NULL } + +void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods); + /* CPWriteFn that can be used to implement writes-ignored behaviour */ void arm_cp_write_ignore(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value); diff --git a/target/arm/helper.c b/target/arm/helper.c index 88cf4976039..b2abaf5b225 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6109,6 +6109,30 @@ void register_cp_regs_for_features(ARMCPU *cpu) .resetvalue = cpu->pmceid1 }, REGINFO_SENTINEL }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo v8_user_idregs[] = { + { .name = "ID_AA64PFR0_EL1", + .exported_bits = 0x000f000f00ff0000, + .fixed_bits = 0x0000000000000011 }, + { .name = "ID_AA64PFR1_EL1", + .exported_bits = 0x00000000000000f0 }, + { .name = "ID_AA64ZFR0_EL1" }, + { .name = "ID_AA64MMFR0_EL1", + .fixed_bits = 0x00000000ff000000 }, + { .name = "ID_AA64MMFR1_EL1" }, + { .name = "ID_AA64DFR0_EL1", + .fixed_bits = 0x0000000000000006 }, + { .name = "ID_AA64DFR1_EL1" }, + { .name = "ID_AA64AFR0_EL1" }, + { .name = "ID_AA64AFR1_EL1" }, + { .name = "ID_AA64ISAR0_EL1", + .exported_bits = 0x00fffffff0fffff0 }, + { .name = "ID_AA64ISAR1_EL1", + .exported_bits = 0x000000f0ffffffff }, + REGUSERINFO_SENTINEL + }; + modify_arm_cp_regs(v8_idregs, v8_user_idregs); +#endif /* RVBAR_EL1 is only implemented if EL1 is the highest EL */ if (!arm_feature(env, ARM_FEATURE_EL3) && !arm_feature(env, ARM_FEATURE_EL2)) { @@ -6385,6 +6409,15 @@ void register_cp_regs_for_features(ARMCPU *cpu) .opc1 = CP_ANY, .opc2 = CP_ANY, .access = PL1_W, .type = ARM_CP_NOP | ARM_CP_OVERRIDE }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo id_v8_user_midr_cp_reginfo[] = { + { .name = "MIDR_EL1", + .exported_bits = 0x00000000ffffffff }, + { .name = "REVIDR_EL1" }, + REGUSERINFO_SENTINEL + }; + modify_arm_cp_regs(id_v8_midr_cp_reginfo, id_v8_user_midr_cp_reginfo); +#endif if (arm_feature(env, ARM_FEATURE_OMAPCP) || arm_feature(env, ARM_FEATURE_STRONGARM)) { ARMCPRegInfo *r; @@ -6966,6 +6999,32 @@ void define_arm_cp_regs_with_opaque(ARMCPU *cpu, } } +/* + * Modify ARMCPRegInfo for access from userspace. + * + * This is a data driven modification directed by + * ARMCPRegUserSpaceInfo. All registers become ARM_CP_CONST as + * user-space cannot alter any values and dynamic values pertaining to + * execution state are hidden from user space view anyway. + */ +void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) +{ + const ARMCPRegUserSpaceInfo *m; + ARMCPRegInfo *r; + + for (m = mods; m->name; m++) { + for (r = regs; r->type != ARM_CP_SENTINEL; r++) { + if (strcmp(r->name, m->name) == 0) { + r->type = ARM_CP_CONST; + r->access = PL0U_R; + r->resetvalue &= m->exported_bits; + r->resetvalue |= m->fixed_bits; + break; + } + } + } +} + const ARMCPRegInfo *get_arm_cp_reginfo(GHashTable *cpregs, uint32_t encoded_cp) { return g_hash_table_lookup(cpregs, &encoded_cp); From patchwork Thu Feb 14 19:05:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158422 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1745608jaa; Thu, 14 Feb 2019 11:06:42 -0800 (PST) X-Google-Smtp-Source: AHgI3IbMRXLm2oMLea1dIS62gnPGKOmEbrVkx6hfdBA0uQ75zWHnOHgWGVDURRlJVxmU2ZFQvq9A X-Received: by 2002:a81:4c54:: with SMTP id z81mr4649300ywa.219.1550171202270; Thu, 14 Feb 2019 11:06:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171202; cv=none; d=google.com; s=arc-20160816; b=Oezf2+IdpQMte5cl1pdlJQ3Ko2gZsjdv3b3DvfMHSdjQUY2BcmSZ9CDShHHfmwzf9N d/HscU0dK6LXSWS279gfXzTymm4DQAr+s9PN+f6Va4gge8nOdbe06N/lyoNn6p8WorQ4 sYB9fpqUIAnq+wMTnV31OOKnjZNHIDYmMnif3v37zMCzAg9XgGZDbYH+4DxJdSD9FU+b WDj/U7mz0px8WNkqDbOczWEz2xEVX2LGv353Z9ZJlqAqjWvQnYGJZFAiRyVwSjMthXDN usd2kRhKFnvRoCPY4FeyZuKmq4nVj1428juAAvA++ysFk48Lcgwv9PQsE3GtJvH8BqKd LVew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=wu8o6K6bGJE93plhMQqvd5UtFuzltGhLBZkX4kxwg8M=; b=Tx3O0vbZsa8IbW8I83tfeb//kEiXAxC5p6n+KrvtBCywc1GZcXSycHaQKw8K9yFp9c rJS+1oJz8VnqUFA2hChnVcUgN2VTL3gTo5PGapaN2ULLFMJIbV7B/OYLIGaNRYU4dySj nsip1rXR7XkwbL+WAOru0bnsiu3b/FS+rYEfiIWwNSuAb4EzYumRJCFTMYc/aNV8ZcQY VGJIlxCKablhX3FQCV0YE8n+csSUEnBFJx5HpN8Mm1YrPuK8L5iKc7zkht8PQuFe//Gp dnSN+2o933Y+9BE/PqGM2SLaLtiFo1FELVDyzxgxZ+OW2QISIZ5MWMw1sAvFiT26D/IQ 0bbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=xZOePMmr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id k190si2008326ywd.127.2019.02.14.11.06.42 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:06:42 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=xZOePMmr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53520 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLJ-0007nh-OR for patch@linaro.org; Thu, 14 Feb 2019 14:06:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53849) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKv-0007kR-Hk for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKu-0004hg-94 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:17 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:37972) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKu-0004gr-1q for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:16 -0500 Received: by mail-wm1-x32e.google.com with SMTP id v26so7192853wmh.3 for ; Thu, 14 Feb 2019 11:06:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=wu8o6K6bGJE93plhMQqvd5UtFuzltGhLBZkX4kxwg8M=; b=xZOePMmrbBYYnK4JFn6eyHVN1tgNnjAVEZjf7K8FHCFejT5Suo6M9DqVU4jKxAvhtD ex4D0YbpmEt4iGqyHlBzW6Vr8GTNUIs3lOB+CJLHQk/d08WgtVVopUd3LjNJw5GK6cph ixP2DZZhSX9ACkgjirfty14/Xiigqa5vH3rJGfIlK6HXqQod0EsiwIbwr19HkyBVdCGY 0Kstwm/vnVEe65yKEp/bukZFwdisKXfNlLQiZc3PFjGfrknDD5tPuVoeJAK+km/nIt27 GZoNUAoWyjnY8MAyWrgScD7IQdSKxT2THzFuDu9tNCm7JHtwQYLfW0W6aZS7vZZRN47O r4NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wu8o6K6bGJE93plhMQqvd5UtFuzltGhLBZkX4kxwg8M=; b=Dz7OX20uw5KAtz7ML0szbdsTDTVkwQ/gpB7lHec5WyoO45DuLSTTksvGZWpiqExFFJ Ry8+yO7S60sPflCmJ09w70QiliCw778mDNmUb7V3mv5u1Fz4HmWaO157AEAXBwJI4kTu noGRU1uxCkO9/zknyZjLJZUzieYcQWShPMuCu8L7zv88mh6qzIEc6lj0OXVpdsDahBI9 LcvfJs+5i6KWjXwxarWdqg9BPUD6e5mb0nfPHIadJ9Kgcl55BGOhDKjbvMN5GBt3hvqv lZJMPbKid865pCFvE44yfcuCPCL8MnyI0GxZuKbTfk9Mp6yxIllhfRlmr0xFgIfojuYl RruA== X-Gm-Message-State: AHQUAuZkzxan1tFv1XNlkrnJIZzppP8+K5xPqhP9hkSMsYdvx5aX6YMs +oIO6930Ke+/Wb1931gCrQkPmBxVxrvbSQ== X-Received: by 2002:a1c:2d4c:: with SMTP id t73mr3835471wmt.142.1550171174706; Thu, 14 Feb 2019 11:06:14 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:14 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:44 +0000 Message-Id: <20190214190603.25030-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32e Subject: [Qemu-devel] [PULL 08/27] target/arm: expose MPIDR_EL1 to userspace X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée As this is a single register we could expose it with a simple ifdef but we use the existing modify_arm_cp_regs mechanism for consistency. Signed-off-by: Alex Bennée Message-id: 20190205190224.2198-4-alex.bennee@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index b2abaf5b225..77c73056948 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3657,13 +3657,6 @@ static uint64_t mpidr_read(CPUARMState *env, const ARMCPRegInfo *ri) return mpidr_read_val(env); } -static const ARMCPRegInfo mpidr_cp_reginfo[] = { - { .name = "MPIDR", .state = ARM_CP_STATE_BOTH, - .opc0 = 3, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 5, - .access = PL1_R, .readfn = mpidr_read, .type = ARM_CP_NO_RAW }, - REGINFO_SENTINEL -}; - static const ARMCPRegInfo lpae_cp_reginfo[] = { /* NOP AMAIR0/1 */ { .name = "AMAIR0", .state = ARM_CP_STATE_BOTH, @@ -6451,6 +6444,20 @@ void register_cp_regs_for_features(ARMCPU *cpu) } if (arm_feature(env, ARM_FEATURE_MPIDR)) { + ARMCPRegInfo mpidr_cp_reginfo[] = { + { .name = "MPIDR_EL1", .state = ARM_CP_STATE_BOTH, + .opc0 = 3, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 5, + .access = PL1_R, .readfn = mpidr_read, .type = ARM_CP_NO_RAW }, + REGINFO_SENTINEL + }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo mpidr_user_cp_reginfo[] = { + { .name = "MPIDR_EL1", + .fixed_bits = 0x0000000080000000 }, + REGUSERINFO_SENTINEL + }; + modify_arm_cp_regs(mpidr_cp_reginfo, mpidr_user_cp_reginfo); +#endif define_arm_cp_regs(cpu, mpidr_cp_reginfo); } From patchwork Thu Feb 14 19:05:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158441 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1762812jaa; Thu, 14 Feb 2019 11:23:39 -0800 (PST) X-Google-Smtp-Source: AHgI3IbYelOFuRAMbC91MwkdQ7yAGMt6pOsnULvaFC5DKGGRQhn2F47BVCcyKlZ1LZAqfQcIsSGV X-Received: by 2002:a25:dc49:: with SMTP id y70mr4853756ybe.288.1550172219321; Thu, 14 Feb 2019 11:23:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172219; cv=none; d=google.com; s=arc-20160816; b=HeGgCDtcTkGlsyJeCAP6z0noFH3CAAU6shlAyu64v9Dwr+3PnQ7MpvGGiNO4tehzGy 5VXYI5YfZyZcq/ZwPLxxliIzm+eabFpQCGrNgGJSw43w1jIAlFUlv39GOE5+KXzDXf2b hGiu9OS9VEaEL/HBstngMlFIr6zsHtFL3ES6kPucQFkMA2GRSwhmU2wrf2qU6iBCZSeF GNrEr5g2nDjF/N0HM5p4ZKqur+4a4wYs+uV+gkuhvgqDRHm+TVODkuA214SBZE7Vu6EN U+8IqCyqZ6ZUIC+c2+KmNnS6lz5/A28SU1DV0KuOhGgf6dKiSHwGLxG6RVyhp2JXYUrL f2VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=vE7t4oJYMOwYt9J2XE66sh/RW3EnZcN6uEdvcMKQepemlQ75Vva0UZZ9fsE7/+sEaC WjDBBqYSPwHylrPoIJCtxbP17KjOJ9nD5OCS6Hw+gaZ0DN1qdJEqVfwcdWV6qPswUXrn iacAx34nu3KSSRwD2I0DFoDTKmChRrn/uoxxIaJ/lg3coYSDvYhNEmDb0Uqn/gcWZYBx OMKvdWI9vBfF50qNIAiUc4KXzOn9rmDUwI5nDv7U3hVTU8xG7lHCrZdSEJ7LnVqAZTo0 c4v/kSzHvbQzE7VybDpu2o2V3IRMrsTWFF1CidFgC2V/1ONQWiMzXP5dec/B83F4hp+q nmJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pfnAb1nR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a141si1921707ywe.136.2019.02.14.11.23.39 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:23:39 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pfnAb1nR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53746 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMbi-0004Gt-OF for patch@linaro.org; Thu, 14 Feb 2019 14:23:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKx-0007mf-MS for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKv-0004iI-GL for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:18 -0500 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:54235) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKv-0004hr-A8 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:17 -0500 Received: by mail-wm1-x341.google.com with SMTP id d15so7512852wmb.3 for ; Thu, 14 Feb 2019 11:06:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=pfnAb1nRpZVYeHZYxxF8h+EJrYGjJzW9Hntp9m21lY/aT89TlnbyMkDdRfgpNGu0q9 rfkLvmuTVxaFRNiiD7rKOK/T+ZN7a7KMZSizcePgRPCB/0LZhCfjumWcwBeOSzDOtQzo IHqIY9Q7j83uD4beyrq8iBsiwRemUQmyJucxLQnlai0NXiWks6BzHdl2Y6tLVlhQ47Sl 4yrvJ+klzF8hra4UKahTILyI/24IIYKIJUdYzjKbxcQ/bFLMUjPUQp5OJyokPs5fMJ6N 2IHMpBkVpfXqsMlroVgoOpmYGTywb/0M5SknIAqbLet8cmwDNAXRRcEuQUXJq3hQOO9j HIIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=KFX9Lc/cxN3nLr82pgaNOPznTeMrO8MOod0B8ACV5KVkikzJw98v6IVza6lV//mrI4 sKYAZ4kpiATlIlrfZDfB2kMcomDOImzlz+QrFszIYxmgmPHt17YYIPmDmwVIoGJp17Gi BMbowkbhSVsUZrUD62r2wKE7SyJqNqNV9mlv4uJRPGUSidb5C5rFfZ+zuZnvst9tFZzJ pc6g458mN2XvHhjMayBfk1y6z+CzhBG25oO00pQ53tcZ0XIISKiVWe6zsA/8HITP7Cv+ ueHRfdEV52QEQtBGkdNd/4CmQT4apG7YDEngiPISGY/TGLp78VB45lZ60mjjPumbH6aA dyIw== X-Gm-Message-State: AHQUAuafN3BTmJlZY1vhAbPLf7MZlbrq04xK49VSnG57z+8eGY5JeOgl HdKSo6efxeBrDdZXoLC3m4cN02RI7RdS3Q== X-Received: by 2002:a1c:1d15:: with SMTP id d21mr3570101wmd.132.1550171175897; Thu, 14 Feb 2019 11:06:15 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:15 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:45 +0000 Message-Id: <20190214190603.25030-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PULL 09/27] target/arm: expose remaining CPUID registers as RAZ X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée There are a whole bunch more registers in the CPUID space which are currently not used but are exposed as RAZ. To avoid too much duplication we expand ARMCPRegUserSpaceInfo to understand glob patterns so we only need one entry to tweak whole ranges of registers. Signed-off-by: Alex Bennée Message-id: 20190205190224.2198-5-alex.bennee@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpu.h | 3 +++ target/arm/helper.c | 26 +++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 7c31e5a2d10..f0334413ece 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2474,6 +2474,9 @@ typedef struct ARMCPRegUserSpaceInfo { /* Name of register */ const char *name; + /* Is the name actually a glob pattern */ + bool is_glob; + /* Only some bits are exported to user space */ uint64_t exported_bits; diff --git a/target/arm/helper.c b/target/arm/helper.c index 77c73056948..5ac335f598c 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6109,19 +6109,27 @@ void register_cp_regs_for_features(ARMCPU *cpu) .fixed_bits = 0x0000000000000011 }, { .name = "ID_AA64PFR1_EL1", .exported_bits = 0x00000000000000f0 }, + { .name = "ID_AA64PFR*_EL1_RESERVED", + .is_glob = true }, { .name = "ID_AA64ZFR0_EL1" }, { .name = "ID_AA64MMFR0_EL1", .fixed_bits = 0x00000000ff000000 }, { .name = "ID_AA64MMFR1_EL1" }, + { .name = "ID_AA64MMFR*_EL1_RESERVED", + .is_glob = true }, { .name = "ID_AA64DFR0_EL1", .fixed_bits = 0x0000000000000006 }, { .name = "ID_AA64DFR1_EL1" }, - { .name = "ID_AA64AFR0_EL1" }, - { .name = "ID_AA64AFR1_EL1" }, + { .name = "ID_AA64DFR*_EL1_RESERVED", + .is_glob = true }, + { .name = "ID_AA64AFR*", + .is_glob = true }, { .name = "ID_AA64ISAR0_EL1", .exported_bits = 0x00fffffff0fffff0 }, { .name = "ID_AA64ISAR1_EL1", .exported_bits = 0x000000f0ffffffff }, + { .name = "ID_AA64ISAR*_EL1_RESERVED", + .is_glob = true }, REGUSERINFO_SENTINEL }; modify_arm_cp_regs(v8_idregs, v8_user_idregs); @@ -7020,8 +7028,17 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) ARMCPRegInfo *r; for (m = mods; m->name; m++) { + GPatternSpec *pat = NULL; + if (m->is_glob) { + pat = g_pattern_spec_new(m->name); + } for (r = regs; r->type != ARM_CP_SENTINEL; r++) { - if (strcmp(r->name, m->name) == 0) { + if (pat && g_pattern_match_string(pat, r->name)) { + r->type = ARM_CP_CONST; + r->access = PL0U_R; + r->resetvalue = 0; + /* continue */ + } else if (strcmp(r->name, m->name) == 0) { r->type = ARM_CP_CONST; r->access = PL0U_R; r->resetvalue &= m->exported_bits; @@ -7029,6 +7046,9 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) break; } } + if (pat) { + g_pattern_spec_free(pat); + } } } From patchwork Thu Feb 14 19:05:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158443 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1765021jaa; Thu, 14 Feb 2019 11:26:02 -0800 (PST) X-Google-Smtp-Source: AHgI3Ib0Lb6oLyP+owndokoPSmq9YagaUIdgHi8seIblzRZVilG++AYUaTJ33a1EpHtrKo+PWfYR X-Received: by 2002:a25:254f:: with SMTP id l76mr4729432ybl.347.1550172362640; Thu, 14 Feb 2019 11:26:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172362; cv=none; d=google.com; s=arc-20160816; b=CztTtW0j1n4tLLJfYDK1tahS8yLGT1uq3/Ru7fiuZKCoPotiUuX+TbH2E2hb4h5X2H 5EXxdioodDBLdtBGzjCGw6iiCeSum8K3HjaZsGkiIOpxSoNRg8iBb5dEZowKNDFDKX+5 qKYN+zOToMPBbNJCucQvHq+K9TJ/MbwZo2lbwrovuVBVKFmUD8VMn7P8lcd39K2vUcax JVBllVvVd3uMoSu4Arc01SZp1cdGv6FQlVxjP5QIOBDx5uBXlQBZjo27O32YWROEGwbv NfOpORUlFmC4xkPJCAHKyy4jnx/3m3ZE4u4vHh+187chn7caezuKGWYtV3dcPLAxYTn3 S9Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=LICwmtCx3JiCh6X0JwhhiyFC0QYKpcXruWHUMrH4oqs=; b=IBeykvw2thqOT6XPinIB0a/tZzvfCBvR40lO/YfmKquTbE9xLboiAU0/571MYJcWze 2qiOX9aUqflzIvueb1CK6uTWf0+8n0cLp8qLQs4A6teBIY7IafKLvjlEOJvL5cx2uo6b d5lrKFfEnzX30tBJz8Gd/OlMNAKpVbBO7HBBYK5wAghpFHi2fcN7a6RZP8DGgJIuXzl7 Z63hz8cQsfpYYlZm5OZdz7KLdNYDRv4NdfjiUHGI15O5iMtwwsgi4aenCzDkEcEmwLfe +0+oOlkTbnrKH70tw8x6fw/TEDVMZxdTMWLk5s27D49t8i+Z98xZ8HrHzJopAw3y/gq8 a72w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=jzjCvh+G; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r66si1996493ywg.247.2019.02.14.11.26.02 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:26:02 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=jzjCvh+G; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53796 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMe2-0006D2-5R for patch@linaro.org; Thu, 14 Feb 2019 14:26:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKz-0007oG-MH for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKx-0004jL-Nx for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:21 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:36838) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKw-0004iR-9m for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:18 -0500 Received: by mail-wm1-x331.google.com with SMTP id j125so7206816wmj.1 for ; Thu, 14 Feb 2019 11:06:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=LICwmtCx3JiCh6X0JwhhiyFC0QYKpcXruWHUMrH4oqs=; b=jzjCvh+GfOv07LiwhHZgIgh+EWBiPqZ/cxlOr7t6sDjUSBHMxfus81ptv0BSbo+h8I MAf4XQL+pgN0wvD1rMpFqFAu4pmFtH/ALC63MomyoYYr5efjSMUQT5oZ5ldCvhMcnkoi yuQJMxdQ9lky0YLzKo7JTKLiVsXoUrBf6CtzUXl0Jd0tbuhle0efxqnn93T2QUCb7ale gBoWigvsU7AgV9UIg7KZiIqCZz+yBBenTDB7Hmc5Fm0d7jJe1JRJaWX32seE9VmJCQF4 btw/JZHqHDPWEf1ckKTrJgDJ/fW5O6Qw3MXUyfzeZklYOen6NbUfxIdB6sSD633KHI34 qtqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LICwmtCx3JiCh6X0JwhhiyFC0QYKpcXruWHUMrH4oqs=; b=pdBsoqcm5VcYgJ3/ARnS8mRYWanZuCYRk/PFnEUGKCVoHoBvlk0JWVuJri5FmwoVlb shCARP+PDFfv6+5B7F+gAKcKdzNKzy6U5oBRMjI3RM8FcLWn8aayTYj48sb2RjmaS4kQ ZReVlkaJfgivaKzoWmh6LTW8XmHpXPLoVSlBcMk0IZBIenJNWOfGKQx+OqlfZz6nMhdX MkkBafZYi0xE9bYKCxgavRdt0qpsYmJIrhV6wPkT126pjYMKSVMlo+5orMhuNr6+7Y0w GJPr+CgpPhg+NyGnMgaPyt3MctAelEhrHpIeKXzTNexu4iniWelU3VEGKYVkIoLPBl51 tgaQ== X-Gm-Message-State: AHQUAub2G+ynLQg3tDR7OPzSVxFi8sWGlkpz0KMtJQ3HPhXW9O1IRlhb 2wQVoEHrSJLeJUxc4k0ibtrCaPkVXehUyA== X-Received: by 2002:a7b:cc03:: with SMTP id f3mr3661137wmh.95.1550171177059; Thu, 14 Feb 2019 11:06:17 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:16 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:46 +0000 Message-Id: <20190214190603.25030-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::331 Subject: [Qemu-devel] [PULL 10/27] linux-user/elfload: enable HWCAP_CPUID for AArch64 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée Userspace programs should (in theory) query the ELF HWCAP before probing these registers. Now we have implemented them all make it public. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Message-id: 20190205190224.2198-6-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- linux-user/elfload.c | 1 + 1 file changed, 1 insertion(+) -- 2.20.1 diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 775a36ccdda..3a50d587ff0 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -580,6 +580,7 @@ static uint32_t get_elf_hwcap(void) hwcaps |= ARM_HWCAP_A64_FP; hwcaps |= ARM_HWCAP_A64_ASIMD; + hwcaps |= ARM_HWCAP_A64_CPUID; /* probe for the extra features */ #define GET_FEATURE_ID(feat, hwcap) \ From patchwork Thu Feb 14 19:05:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158424 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1748926jaa; Thu, 14 Feb 2019 11:09:41 -0800 (PST) X-Google-Smtp-Source: AHgI3IZtFnxJFJNeXRO2zndvW3rcBztdMAXmLUJniUMhKgQzK1EQ6p4LDrGBOOSo7jaz1+c/oSXh X-Received: by 2002:a25:3f86:: with SMTP id m128mr4614939yba.315.1550171381354; Thu, 14 Feb 2019 11:09:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171381; cv=none; d=google.com; s=arc-20160816; b=LcZP4WJ3G+jTIHYYPBYeDMU8eo22i95AnCNqymuQT3x3NnfR9asasrjo9kGTmD8Z33 FC6VQCVs3ubxf0slAgWAwBc6XwJ6+A9LSXk7zbaw/yF2ZmtEOUXRL/u6OjwavY85G1A1 hWAyIHuTiASmk1nfmdUdTH2azbiJMLMZHBd4FOtvBCE2f5ezSU01siE0pevAWs41H5n3 SZz9s/4aKTXl1tKGPrEg9HV9D4XzB13moH0BLGPD8r3aVON4xV5l6jgXAHzVwpya0LNZ TGwtY7AsGbjaeXgrwnk4Yx8GX+Rf8YkkH7JFjk4mlQubzW1A42iqZLyzvgjAlpAGF1AP AZqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=22nNw7/VDNTg9qQQj/YS2AxRLDoTualsnQ1OwGx+6vs=; b=xke9pnhbYzxgQTUP0uk/TQqxp/nRJt2SKn0btJIqrWiXryvtgiMVzJZ6MauJ7Prw9u +5/ciXmvhf4gcBf4IbQw2Ted2FvxaapJc8sd1Xf7tlA5TvIPUeSCIfhtS2QyHh8YA74R PQ+QCD+ClTLeLnaWzA8Gaq6ShRB9EqVctp4qXqBLi+m59nNlJ9RaryVhZPClf6fjvLf2 YjVqb2OykYeyZZGUv4GHEexHu/l3KYvQbxPBhpSD1767vGpt38GgY5LytFBMMVVmtA4b NsekgBsAntCtCgE2buSdo+9wxWW5VLzr83BfDdEcDSl0lXQeU9VHmNd94MbtMJfJutJh j2sg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=YBOEEqa0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x7si1941192ybj.126.2019.02.14.11.09.41 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:09:41 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=YBOEEqa0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53530 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMOC-0000pj-Pp for patch@linaro.org; Thu, 14 Feb 2019 14:09:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLD-0007zY-O0 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guML4-0004mh-U3 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:30 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:37974) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKz-0004j4-QY for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:23 -0500 Received: by mail-wm1-x330.google.com with SMTP id v26so7193031wmh.3 for ; Thu, 14 Feb 2019 11:06:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=22nNw7/VDNTg9qQQj/YS2AxRLDoTualsnQ1OwGx+6vs=; b=YBOEEqa0U133lS6R/GNAVVNnhJoF6pNT+IPQWuwRzIK5Iu2ooJyjhxVa/RzYZ0QnDJ EtD54hoxf0f8wQgIj/4o+s+Ioa7ZHzqimGtmdEHzoBJXeJnC1SFcXOP8fBGVcfBZfi/z KgqfbAXcOVmApPS9eYn8X4ZQzkqacfbveeX4VS1T9VNW4S7mGsGF4LO5lpt7IQj9J0sp mdlomCdkLQ3AzHJUBnJSeodgh737+LXhNL3Y+WcQYDZaGPmGp6QYqLFF7eL2L4NkWwBf iE8dJ6cBkaxqt9WUR86aIRN/U8A5xPeyWfDsRaEoHNe7BSrix6ZhjPrSRTFK2sYalA+i JswQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=22nNw7/VDNTg9qQQj/YS2AxRLDoTualsnQ1OwGx+6vs=; b=fkdOIpYhWWrTtNGWMNyw3Dw95RJ8S4BXJUEMHjpF/lw2BU0mL9KkEiS1jdc8jWi/+R eR/0hfUyrRPPniEq9PSCvFZVBqtu9rydS+sfsHqHAThcPynD+d3ofEo5lZv2DFFk1hbJ C6tCH37NfmnzVZ2pE5rTP2vYaRLWFu8VS5aZCEjrSOKWzzbYByMYpdZa378x4QanQfFK Dpd0g88v97SGfzKx6He/myBQh7d49UcF3N+mp4PgJb7NXn1TyO3YDMuff48I9WBEM1Mz SFHCn40Dn81VuQfij4g+JzEGCzfGeZ7kY1h+z4gT64LwOlJlxU/58EDorJWG2oUkttCl D1vg== X-Gm-Message-State: AHQUAuZoYLOnvc9sNqmo+wcMgK0oJ9ROC8x8qGJc3kBO8iOS0ICHb4KI +Pxc7rEyrPE0FGueCgu41RahXUuq8ERFbA== X-Received: by 2002:a7b:c04e:: with SMTP id u14mr3865515wmc.113.1550171178571; Thu, 14 Feb 2019 11:06:18 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.17 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:17 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:47 +0000 Message-Id: <20190214190603.25030-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::330 Subject: [Qemu-devel] [PULL 11/27] arm: Allow system registers for KVM guests to be changed by QEMU code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" At the moment the Arm implementations of kvm_arch_{get,put}_registers() don't support having QEMU change the values of system registers (aka coprocessor registers for AArch32). This is because although kvm_arch_get_registers() calls write_list_to_cpustate() to update the CPU state struct fields (so QEMU code can read the values in the usual way), kvm_arch_put_registers() does not call write_cpustate_to_list(), meaning that any changes to the CPU state struct fields will not be passed back to KVM. The rationale for this design is documented in a comment in the AArch32 kvm_arch_put_registers() -- writing the values in the cpregs list into the CPU state struct is "lossy" because the write of a register might not succeed, and so if we blindly copy the CPU state values back again we will incorrectly change register values for the guest. The assumption was that no QEMU code would need to write to the registers. However, when we implemented debug support for KVM guests, we broke that assumption: the code to handle "set the guest up to take a breakpoint exception" does so by updating various guest registers including ESR_EL1. Support this by making kvm_arch_put_registers() synchronize CPU state back into the list. We sync only those registers where the initial write succeeds, which should be sufficient. Signed-off-by: Peter Maydell Reviewed-by: Alex Bennée Tested-by: Alex Bennée Tested-by: Dongjiu Geng --- target/arm/cpu.h | 9 ++++++++- target/arm/helper.c | 27 +++++++++++++++++++++++++-- target/arm/kvm32.c | 20 ++------------------ target/arm/kvm64.c | 2 ++ target/arm/machine.c | 2 +- 5 files changed, 38 insertions(+), 22 deletions(-) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index f0334413ece..bfc05c796a5 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2535,18 +2535,25 @@ bool write_list_to_cpustate(ARMCPU *cpu); /** * write_cpustate_to_list: * @cpu: ARMCPU + * @kvm_sync: true if this is for syncing back to KVM * * For each register listed in the ARMCPU cpreg_indexes list, write * its value from the ARMCPUState structure into the cpreg_values list. * This is used to copy info from TCG's working data structures into * KVM or for outbound migration. * + * @kvm_sync is true if we are doing this in order to sync the + * register state back to KVM. In this case we will only update + * values in the list if the previous list->cpustate sync actually + * successfully wrote the CPU state. Otherwise we will keep the value + * that is in the list. + * * Returns: true if all register values were read correctly, * false if some register was unknown or could not be read. * Note that we do not stop early on failure -- we will attempt * reading all registers in the list. */ -bool write_cpustate_to_list(ARMCPU *cpu); +bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync); #define ARM_CPUID_TI915T 0x54029152 #define ARM_CPUID_TI925T 0x54029252 diff --git a/target/arm/helper.c b/target/arm/helper.c index 5ac335f598c..7653aa6a50a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -264,7 +264,7 @@ static bool raw_accessors_invalid(const ARMCPRegInfo *ri) return true; } -bool write_cpustate_to_list(ARMCPU *cpu) +bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync) { /* Write the coprocessor state from cpu->env to the (index,value) list. */ int i; @@ -273,6 +273,7 @@ bool write_cpustate_to_list(ARMCPU *cpu) for (i = 0; i < cpu->cpreg_array_len; i++) { uint32_t regidx = kvm_to_cpreg_id(cpu->cpreg_indexes[i]); const ARMCPRegInfo *ri; + uint64_t newval; ri = get_arm_cp_reginfo(cpu->cp_regs, regidx); if (!ri) { @@ -282,7 +283,29 @@ bool write_cpustate_to_list(ARMCPU *cpu) if (ri->type & ARM_CP_NO_RAW) { continue; } - cpu->cpreg_values[i] = read_raw_cp_reg(&cpu->env, ri); + + newval = read_raw_cp_reg(&cpu->env, ri); + if (kvm_sync) { + /* + * Only sync if the previous list->cpustate sync succeeded. + * Rather than tracking the success/failure state for every + * item in the list, we just recheck "does the raw write we must + * have made in write_list_to_cpustate() read back OK" here. + */ + uint64_t oldval = cpu->cpreg_values[i]; + + if (oldval == newval) { + continue; + } + + write_raw_cp_reg(&cpu->env, ri, oldval); + if (read_raw_cp_reg(&cpu->env, ri) != oldval) { + continue; + } + + write_raw_cp_reg(&cpu->env, ri, newval); + } + cpu->cpreg_values[i] = newval; } return ok; } diff --git a/target/arm/kvm32.c b/target/arm/kvm32.c index bd51eb43c86..a75e04cc8f3 100644 --- a/target/arm/kvm32.c +++ b/target/arm/kvm32.c @@ -387,24 +387,8 @@ int kvm_arch_put_registers(CPUState *cs, int level) return ret; } - /* Note that we do not call write_cpustate_to_list() - * here, so we are only writing the tuple list back to - * KVM. This is safe because nothing can change the - * CPUARMState cp15 fields (in particular gdb accesses cannot) - * and so there are no changes to sync. In fact syncing would - * be wrong at this point: for a constant register where TCG and - * KVM disagree about its value, the preceding write_list_to_cpustate() - * would not have had any effect on the CPUARMState value (since the - * register is read-only), and a write_cpustate_to_list() here would - * then try to write the TCG value back into KVM -- this would either - * fail or incorrectly change the value the guest sees. - * - * If we ever want to allow the user to modify cp15 registers via - * the gdb stub, we would need to be more clever here (for instance - * tracking the set of registers kvm_arch_get_registers() successfully - * managed to update the CPUARMState with, and only allowing those - * to be written back up into the kernel). - */ + write_cpustate_to_list(cpu, true); + if (!write_list_to_kvmstate(cpu, level)) { return EINVAL; } diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 089af9c5f02..e3ba1492482 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -838,6 +838,8 @@ int kvm_arch_put_registers(CPUState *cs, int level) return ret; } + write_cpustate_to_list(cpu, true); + if (!write_list_to_kvmstate(cpu, level)) { return EINVAL; } diff --git a/target/arm/machine.c b/target/arm/machine.c index b2925496148..124192bfc26 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -630,7 +630,7 @@ static int cpu_pre_save(void *opaque) abort(); } } else { - if (!write_cpustate_to_list(cpu)) { + if (!write_cpustate_to_list(cpu, false)) { /* This should never fail. */ abort(); } From patchwork Thu Feb 14 19:05:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158425 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1748965jaa; Thu, 14 Feb 2019 11:09:43 -0800 (PST) X-Google-Smtp-Source: AHgI3IZ+q6T/uB3eXuJD1Mpzpg2m7zEJ5RRNCaZv2wMVMJNH39skqI10EbW8KCGkQ5xSTvwxW7yd X-Received: by 2002:a0d:ea8a:: with SMTP id t132mr2474884ywe.246.1550171383316; Thu, 14 Feb 2019 11:09:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171383; cv=none; d=google.com; s=arc-20160816; b=ULim32X2rwRreBi0sJUvragkF0iZx/K/RKESEx2oN/m95X11tybij3ADB4aBMHofub Cgu9dDiMmHwLVsQ8Q/0Uo1vEEZbJOZnLa7fn36QMFO72ePXlv/fl+0EnnJDxDaXCsnUu jW/Vktd5DV8NsIqmA0fA/KAg2JAMZoyDae/5BZiOFA92SiB2yG9hSDVkJ/C8raf9+Aky D51D+loll6fKPoIicsadHgD8wBVf75b5Q8a9fxqwDvdh79X+3loeV6woEMEqxM7vVHQ9 GAQLKhQyi2rOoW58yne8H5ncLFqNiwWl64J8SEr39KhInsw6I4A6zFIMT8CvWUtih7TJ IzGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=3UN3aXjzZHo2ESXHDqNQ3QNuWYSXG1BQj7B1fVlz9pA=; b=ZiUjaPHynqpRMo9TBxUHn/ABHoHUEySUf3pSoYooiU0MNKLO28wykSaHj2P8uMR8eJ iiqAYfvl7IcNCSrtoGvappCGN7rw25442+PmBkvfCJBaEAMVLB9vwOz7V1VVr8mqASFW pJ119raM3AyhZqCZkTjU/4sm/DaUlYm6Eq+YDQ55vc9plZZm4DlSnihhiAI0UgQlqAxn ATig5PCQJ2k7iJZW6CWYE9nOHDfoVtlTnZP1gc4o2rBHFeg//KpBSgtQ62xjvENoI3TI ypu4AAoJ0eWAUGJBxF2ReLnl495+WstD3Dv3SW6YZ3vaZmo172U78snoxQ+ZjDzL9M07 x7lQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="G0/9MBvs"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p13si1928388ywm.58.2019.02.14.11.09.43 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:09:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="G0/9MBvs"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53542 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMOE-0001mO-PZ for patch@linaro.org; Thu, 14 Feb 2019 14:09:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53920) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLD-0007zC-9N for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guML4-0004mf-U9 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:28 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:37976) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKz-0004jy-PZ for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:23 -0500 Received: by mail-wm1-x332.google.com with SMTP id v26so7193062wmh.3 for ; Thu, 14 Feb 2019 11:06:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=3UN3aXjzZHo2ESXHDqNQ3QNuWYSXG1BQj7B1fVlz9pA=; b=G0/9MBvsu4oTpjdcjT3uq3VdC1r/XtRImOuEJpbivQAf9YFX0/WU2YVnI9a5eSD4Xk 5oiWE04aWd6+vVlOEe2mh9PIw05iRFiUb8Onu7s1Br0lD081XwRBvZcEQxZ0b6rm86jS gYwKhadZ4fTBp6lubO3hOsEXxmBvr0QGxy8I7yd6PJ3GPPnkheCzHqZk/Vm6IRI4lE/l 0MaBtcPS3I5EMsBX4Hn3h2fljeZ8W9/dI3Mg+S2H5IBYQYSHmyEHuFVExwYGJIR1nTzn RE0Akyl4NzVhB7bgY9r0IVvjen5LuLKPUibTbNJsJX1mlgz/nasCzQe/Ojn9+4/0uaJl Tycw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3UN3aXjzZHo2ESXHDqNQ3QNuWYSXG1BQj7B1fVlz9pA=; b=Gamhr+0FowYkMQF9WCXXcvzkB3oUv5If7Ic60qOd1X/jO6f5GXoxD9GnUg3R7IOHZT lYjSoueFC/iMf4Na+dkXTs0q7HZRGKPWwXWLYtiijbKnsN6Mg8RrF/NwghdiYlxdf7fD SfAgevR/zQzutuDVWgYGR49EPxjbjudu/413xL5EyIXqBVyCPyUyv+9sFqt1jUv07cMK NyPTs5Pt0DVPvLUHCKXvTAyhRcC3OqAD/HqItfHgpu0EMsJyfL5JPySN8rKl6n6ksBxu 2lul/cJyftc52niDnfYMeoz0R/Vudqr1UvonXvU6DE/MKQljuDacy6Uq38rRfYEzPXmk Ai0w== X-Gm-Message-State: AHQUAuaqXoPAq4jwUa/LxIemjoguA0YOc8qJN6nLSqZWMkL5dVmrA3Yg IVcWL3UaVOIqQHWZ/3TZTrrYeV3UuGurag== X-Received: by 2002:a1c:be11:: with SMTP id o17mr3821698wmf.141.1550171179892; Thu, 14 Feb 2019 11:06:19 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:18 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:48 +0000 Message-Id: <20190214190603.25030-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::332 Subject: [Qemu-devel] [PULL 12/27] MAINTAINERS: Remove Peter Crosthwaite from various entries X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Peter Crosthwaite hasn't had the bandwidth to do code review or other QEMU work for some time now -- remove his email address from MAINTAINERS file entries so we don't bombard him with patch emails. Signed-off-by: Peter Maydell Message-id: 20190207181422.4907-1-peter.maydell@linaro.org --- MAINTAINERS | 4 ---- 1 file changed, 4 deletions(-) -- 2.20.1 diff --git a/MAINTAINERS b/MAINTAINERS index e170a4c7337..ffb029f63ac 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -110,7 +110,6 @@ Guest CPU cores (TCG): ---------------------- Overall L: qemu-devel@nongnu.org -M: Peter Crosthwaite M: Richard Henderson R: Paolo Bonzini S: Maintained @@ -1345,7 +1344,6 @@ F: tests/virtio-scsi-test.c T: git https://github.com/bonzini/qemu.git scsi-next SSI -M: Peter Crosthwaite M: Alistair Francis S: Maintained F: hw/ssi/* @@ -1356,7 +1354,6 @@ F: tests/m25p80-test.c Xilinx SPI M: Alistair Francis -M: Peter Crosthwaite S: Maintained F: hw/ssi/xilinx_* @@ -1766,7 +1763,6 @@ F: qom/cpu.c F: include/qom/cpu.h Device Tree -M: Peter Crosthwaite M: Alexander Graf S: Maintained F: device_tree.c From patchwork Thu Feb 14 19:05:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158442 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1764701jaa; Thu, 14 Feb 2019 11:25:40 -0800 (PST) X-Google-Smtp-Source: AHgI3IYHjz0sbEMWU277XjSIZ3bBRymy2haIB4MnHwtkaGvdqGIyZx5G813NLV4FuVdo+QWIS7bX X-Received: by 2002:a25:b21b:: with SMTP id i27mr4883387ybj.108.1550172340051; Thu, 14 Feb 2019 11:25:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172340; cv=none; d=google.com; s=arc-20160816; b=V31dN+YTlbpNuE7fFTOO2l1zpjtYzOtJ09EMPqmoN3MvejiJ4fBuOQe8huEb4bdWcU hYz95/lHkx64vuW/b9yUeyU5VZvROHw273kxF6lNJHg7IyP4rbLe1OX9SsDmZtYqyBMU qT0njshzXox/W6/n+Oae1tlpHkDUa5OW/a6S4qR8btl9S3mLyA2HLksLCB3pgZoxe2Cs AeOKrb6/cW0eaAwPyB2zbe4ZP0isSGF1J0E3nY5en4qdrXJjIrW377qs+QbfMKZZWxF+ ELEO7RQik4FaLx8wz+Rn9fftGSEIIbmR8Bjrmff79rDVCK3wm0awPo2F1TgMwOjcH56G WuGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=ZgvlXUrla4aqO6Uil7LenvUSTmqMUy+IYTYM123dAPA=; b=GRotuKr6zxdwTB2Vvi5gB1TfiVQEuAb9Sjx9wXtw8GH4Zl9FF2ZzmTqvnBCmkaBlEZ U6Yk2KjB+nh4I/UxxM7huKADsBYTU8xo6Owc4nPA5Xtrb0cKixaZAs3d7uLZYkbS99oe 5sQDVwqv94LznITloLpRkOam0+XV2kuuwENQQJPJ1YmEJfPXuFEEIcfCeoS9fbUrAU62 4QRft3Bd2qeMyw8WgMxL4Pchb2TfYcnr+ppERk5PlINTo1UsL2ixOHD4gcQoz+RFIPAT lU3nLUl13MLP74APecHNogDfdeSI7G8v3dAqqhQnzLvPsAa4oCgFMOeRidZUhZ6wqUIN aQpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=mbJEHfM2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v63si1948159ybc.190.2019.02.14.11.25.39 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:25:40 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=mbJEHfM2; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53758 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMdf-0005Dr-2B for patch@linaro.org; Thu, 14 Feb 2019 14:25:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54024) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLJ-00082q-US for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLH-0004so-Ua for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:41 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:54358) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLH-0004kk-Et for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:39 -0500 Received: by mail-wm1-x329.google.com with SMTP id a62so7506563wmh.4 for ; Thu, 14 Feb 2019 11:06:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ZgvlXUrla4aqO6Uil7LenvUSTmqMUy+IYTYM123dAPA=; b=mbJEHfM2PAqyJv7zEumStloDGOy4NCn3JDHGPOk/EceiV+s+xxO+WmXdCu5imk2K2i dBvkMqErC2DKtPsuDp+Lkow3rJD5Mp7sGKZ6NsXrXRP4pDIPsgKIyqbc2Znjuh5aDrS+ p1XYY2jPLwtnB1nln3NyGtF4RSnu6f3i19Rf3XrSgjQlJg+aeuJIoKsgXpG8PkSePWsD +Tx679xz5YDZR85fMD/w1R4A37WsHT53nHDqxj6QuQOmgb9jYkpooLNDuwjQuBTGYURd +Vqtn4uwk9CPRB1YqQKUy1+h6Rl9yN5DEEtuLUhklTTXVSehQCEBy0qa6BjPHvaqbLGr 4aLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZgvlXUrla4aqO6Uil7LenvUSTmqMUy+IYTYM123dAPA=; b=PGaoeBSJ3SYDjabWvCmkpvfL2n6fVPfzsvsX0+ghAuZ8Sx5RGaTijBKv3oOPMv5cKL SyCttHpJ2un2aAWtsaQmiw6a1Z/X2hNkvbB27N7868jB23OGoWXGpigVOdKTgJ3FWUqr jJ5OjvzDB42maHAciuYicSZq8QgtqwPXONxWHNlTQflTZxuNYrQQtabjbax+xcEZUiUZ MrsRl4MPF81CVBuKW8uapi3906I7rrlfH7T0Fhf87iQwwZ/Rg5zlSIUl4lmarmlFAwoS K+CECahu6Wmk46sNLXFn98ArUjNGo6xlB+hx8jJaElFAX7NrI2jlbl7HwueqHS6T+D6n jBIw== X-Gm-Message-State: AHQUAubumWw9epRTkcfQzd+NsGL4WH25ti71NR0yTVzDUS+aA5k06uPK n/SNQXqWBc0FgJggXyxtAPRG2uZXePKbBg== X-Received: by 2002:a1c:2457:: with SMTP id k84mr3756550wmk.139.1550171181217; Thu, 14 Feb 2019 11:06:21 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.19 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:20 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:49 +0000 Message-Id: <20190214190603.25030-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::329 Subject: [Qemu-devel] [PULL 13/27] hw/intc/armv7m_nvic: Allow byte accesses to SHPR1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The code for handling the NVIC SHPR1 register intends to permit byte and halfword accesses (as the architecture requires). However the 'case' line for it only lists the base address of the register, so attempts to access bytes other than the first one end up in the "bad write" default logic. This bug was added accidentally when we split out the SHPR1 logic from SHPR2 and SHPR3 to support v6M. Fixes: 7c9140afd594 ("nvic: Handle ARMv6-M SCS reserved registers") Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé --- The Zephyr RTOS happens to access SHPR1 byte at a time, which is how I spotted this. --- hw/intc/armv7m_nvic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.20.1 diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index 790a3d95849..ab822f42514 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -1841,7 +1841,7 @@ static MemTxResult nvic_sysreg_read(void *opaque, hwaddr addr, } } break; - case 0xd18: /* System Handler Priority (SHPR1) */ + case 0xd18 ... 0xd1b: /* System Handler Priority (SHPR1) */ if (!arm_feature(&s->cpu->env, ARM_FEATURE_M_MAIN)) { val = 0; break; @@ -1956,7 +1956,7 @@ static MemTxResult nvic_sysreg_write(void *opaque, hwaddr addr, } nvic_irq_update(s); return MEMTX_OK; - case 0xd18: /* System Handler Priority (SHPR1) */ + case 0xd18 ... 0xd1b: /* System Handler Priority (SHPR1) */ if (!arm_feature(&s->cpu->env, ARM_FEATURE_M_MAIN)) { return MEMTX_OK; } From patchwork Thu Feb 14 19:05:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158427 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1751819jaa; Thu, 14 Feb 2019 11:12:30 -0800 (PST) X-Google-Smtp-Source: AHgI3IYLy0NXI620KGQ/ZrKM40jUYb6FaAzj/XM/tbOS9jyA8DMBlVfWU1eWJIVbDd6t86kM7lXr X-Received: by 2002:a25:2fc7:: with SMTP id v190mr4606035ybv.452.1550171550041; Thu, 14 Feb 2019 11:12:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171550; cv=none; d=google.com; s=arc-20160816; b=cxoO9a5M/9OiXaFvWc+gwHkQc+0acClq5cCe5AU0j7fNMYQl2lVAUMb+fvTeMWNA+j dSTO8bbBFThBYxu8D+g8RQqIv8B2rvqC1ivEesMLwZYgvCu4lfDyoQJ1ME976Mhwu/bL uYZo8dtOvqtZb9pKmTpobOyjeB92Ikq0REMrr9JOLI/oA+e8OtwXpKlv9qayeco1nt2N fC3BgCzm9u0Fi+JXHqgT8I12VpnxVK44lIHxnCQMt2UYg8AxUSdwLB6GrlkFrDF/y28M DlQa14GPigsPCKbRTFr1IyMbsAjvAHrpKED++zalVEjZbt3BoSO819ejevlHhYaoKudB XtqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=xO0SmjJi87cMCHBDYE6Aqyprx2bqu1BuqChTWfqFWYg=; b=ejhER6Iz+RZI/GMM749ny5OsiRausFtnHM6etUoTfZl1BOnJugo8fWNCkRHeWxjpU5 A5x9ZWWq71JW06Lw2+LcYmcBDOUxwsvEUvX3w0mlYOMzgj4QVy7wi3mNf6Xu/HW3r8sE 9qW09cHz6kfKLrZFQl8i4RUSuxRrRtEZpMP8W8VwGQiaomJ4C/uP2s6vyMDKX84VZH9K 8CAon8B16PrKiI0TV9wjMDyDb/a6s20oDMPIiFXDNN3UcCR9NaXtjjg2bPvoAKgW8Zu3 +PDgDfzJxlqnDNahJIq3VCfLYRsVe+nvS44LIWFXau5kA9ABtk0+W+a81b97y9P/Ru/y JeVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=OtYT2dSv; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h186si2036250ywb.23.2019.02.14.11.12.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:12:30 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=OtYT2dSv; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53584 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMQv-0003La-Eb for patch@linaro.org; Thu, 14 Feb 2019 14:12:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLF-00080n-RV for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLD-0004po-AT for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:37 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:32862) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guML4-0004l4-T7 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:28 -0500 Received: by mail-wm1-x32a.google.com with SMTP id h22so4985475wmb.0 for ; Thu, 14 Feb 2019 11:06:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=xO0SmjJi87cMCHBDYE6Aqyprx2bqu1BuqChTWfqFWYg=; b=OtYT2dSvArbrIWALCeyfl19FpKPL62cbrnj9mlKehrVM5vCT+qgZcT3qnGAI4SN2Rs jcba7w4Yaw6oq+Iin2593Qy+Ccpm5b0vtFsVeL9LzqmBnfYB9pU4s6IuYmn8qRDEluOP 5N0ExQq8TPcDHIbxJjkm0bDP94eWIbgVqnlYfb5HSrtuGfDyJ+9ISLxNxsYCYDa0cFEP QzJNKMsOEebJtWr2udbpP70tr/cNFogCrvk8M7f3RLTz6rVlRFohFFF4sa5159hxpnbH iWbQI92EsYljKxUUM3vfIVEbq16X6+Hky5c3+Qb8I04T5NKX8VfIVwyOM5H+rL9w1JvY BVZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xO0SmjJi87cMCHBDYE6Aqyprx2bqu1BuqChTWfqFWYg=; b=rnvFvlJFy5yk4nd04+ijw40FqgbYMv+0l2klbu1/inbuL+uie/JPZeGEW/wgHk3F0Q aohvH4zpW1vxH6TpQ+wfCwI94uEqDc8dIaz8Nfh/5ZK/cyZNkA1cSKy8LoY+umWYu4Qb oJ767nqd/eIIbk5yni7jZ2OTVU+0laWu8lOsDgZybG7uKDafMOgf1bFYECelLyp1/zDV cqrlCEYVBQaZZrlhWO0Chk4s7q0qqkc5YJUrlmrytpjg3GagrQPM1hIlj67Ha24ZvXt7 N5FGoKrx90EbP6VvnqNHG4dJdNUINFdYxDbKGwyXsp8S98anM+dTO7cV5c+RpVHgcq+d 8BUA== X-Gm-Message-State: AHQUAuYYWlrCLMyNSlAnQJnD0LE1uLRxkqpVOsYaghFzWYZpOszQEyGQ 4YCu5lhU8zYtNotiPtu4OvuCyyDNULbW/w== X-Received: by 2002:a1c:2d4c:: with SMTP id t73mr3835793wmt.142.1550171182342; Thu, 14 Feb 2019 11:06:22 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:21 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:50 +0000 Message-Id: <20190214190603.25030-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32a Subject: [Qemu-devel] [PULL 14/27] hw/arm/armsse: Fix miswiring of expansion IRQs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" In commit 91c1e9fcbd7548db368 where we added dual-CPU support to the ARMSSE, we set up the wiring of the expansion IRQs via nested loops: the outer loop on 'i' loops for each CPU, and the inner loop on 'j' loops for each interrupt. Fix a typo which meant we were wiring every expansion IRQ line to external IRQ 0 on CPU 0 and to external IRQ 1 on CPU 1. Fixes: 91c1e9fcbd7548db368 ("hw/arm/armsse: Support dual-CPU configuration") Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé --- hw/arm/armsse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.1 diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 5d53071a5a0..9a8c49547db 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -565,7 +565,7 @@ static void armsse_realize(DeviceState *dev, Error **errp) /* Connect EXP_IRQ/EXP_CPUn_IRQ GPIOs to the NVIC's lines 32 and up */ s->exp_irqs[i] = g_new(qemu_irq, s->exp_numirq); for (j = 0; j < s->exp_numirq; j++) { - s->exp_irqs[i][j] = qdev_get_gpio_in(cpudev, i + 32); + s->exp_irqs[i][j] = qdev_get_gpio_in(cpudev, j + 32); } if (i == 0) { gpioname = g_strdup("EXP_IRQ"); From patchwork Thu Feb 14 19:05:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158428 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1751829jaa; Thu, 14 Feb 2019 11:12:30 -0800 (PST) X-Google-Smtp-Source: AHgI3IYGFB2lDXnVb5JGT4FTSJNjGQbhcvKfx1blBxBIq0a17jgB/yq9KGN6w1vckO6CjbrebOXt X-Received: by 2002:a81:5489:: with SMTP id i131mr4595958ywb.459.1550171550373; Thu, 14 Feb 2019 11:12:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171550; cv=none; d=google.com; s=arc-20160816; b=cGN3RRgBVig0roqC/YzTevgZXzWb+2hjUNQ/ueuZci9Z+2G6eoUcoSD1jpkC/dYbmL 8pzY+05wwZ0F86NdrFyKaWaR0oVZmlYvfG72YkutUdJeiuy6k2VoleULEW7ciyhGxmmO b0cJC8pibBybSuzPb3sajmpoHfVbB1YN/zZMe14NzcBKd/fUX1d23Rm1OEkXcZK+GDgo Uw9mBokRSmAqbFfFPYPZTctJx7De5dR0FprgPsiwMrjmfrrzDTS0L8ht3H4OpJdu5vKC fTsXwjkeuyOO8X+huWsOYfnLxMh3KM4oEM5CTej3zIW5XNnQ/d46HU0yYx1UMg5kQqbs xKkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=K5z2K+pISplFt07bLffDli8q+ajoIGkAE0CvOPLrYZ8=; b=P3TIRJiYMf0pBTU8wjblvdREzyEQgY/wqeEnXxX+YnJiChV8Si2JmJxdki8SYhYF2E H8Ub14BgZFTqAdbkXHG5/wDRtKQrQwpmRxRKgZc+zhvIfta+xBlDJ7rzMY8F7H3ihQYS NJaepCY432+GddILPrraC3qhzdgq0+ddNU+yPqeSfTdpRoIlULq1og7pYi5IGm1qLBQC CuT/Cy9j9zhXCzDNI3KICLUmKGcAF0R7Elc07KxTy20H9hnl8QwZVcYENvkBsoEaRNV1 2pG+ALW4Slv/K2m7DthgHPxc+iz7HjxKZ4/fJreKtoYcvEjWfH+W/UT/Sc6mXdjscq82 CsFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=rosv03WH; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h32si1931681ybi.219.2019.02.14.11.12.30 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:12:30 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=rosv03WH; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMQv-00047c-O9 for patch@linaro.org; Thu, 14 Feb 2019 14:12:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53944) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLF-00080m-RZ for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLD-0004qA-Rs for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:37 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:36835) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLC-0004lc-Gg for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:35 -0500 Received: by mail-wm1-x32d.google.com with SMTP id j125so7207131wmj.1 for ; Thu, 14 Feb 2019 11:06:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=K5z2K+pISplFt07bLffDli8q+ajoIGkAE0CvOPLrYZ8=; b=rosv03WHNmHM04HyUv7kSP1wZoaqHb7ZQR5tM+HTus27+o/F0OsfiPa/xhR2sLg81J Tj9g8GIcTc7dDWA5ZXgrnZqbHYW7DHw6N9MPeTH0KGutVIzD2jbSCtZFrl07mVyKRiKq D/HPEbMPK3RI6LJG6yyzXzr2jhOVZD/QRLROwz5XzRWAeVMf1Yrc1WHhppAO/kowWn6s U67N3d+RdGngUQfGls0A+xb2c53S3dLC4FjabTUyObb7Ld98h3AyXXV/MLv/08ltDISU ArYj7LU+7jU/Upx6LjNCn3N2DtaeItfyfkWm25E49mY809j2pjah8+NkCXmOd401NSr1 Q3ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=K5z2K+pISplFt07bLffDli8q+ajoIGkAE0CvOPLrYZ8=; b=Cxuc0+wwFrvmGFSSPxTOEvRTFFDh9nqH8qEpTOqwgvTLjIsIT+7IuyFYshYXN3xvdS 9eNRshn/NLfRSe5KWnH4ORQiCwuIxijb7JncUt0dktgvRliGBVBZtbjgBfMRJlu0SuvC P+VyRKgDFoVbXgdhKKT5fK51tTqtAq/D8AwlFZ6MmlIIxCVuY9Qk3lzjYwiXjVVK8e5o cdhLUeKf+PlmCEhBFitZ76ZepOAqjMap0BP/uqna8sz2AgYxIMiRaEGhIZ6XdjyCafwK PbWpD/nAr6AFDPnWj7W5LccfCTV2wOKOPqT25HPl6DyXFExL3miKFCFzbZxfIWT0AMJL xynQ== X-Gm-Message-State: AHQUAuarCUOyOjk9X46zE//sCySk+mZxuLEMy5UnzWOAU8jWmnW2IAeV SWjI62IXiTyFwFOe8vj6a//qiVzqSV2arg== X-Received: by 2002:a1c:1d15:: with SMTP id d21mr3570391wmd.132.1550171183807; Thu, 14 Feb 2019 11:06:23 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:22 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:51 +0000 Message-Id: <20190214190603.25030-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32d Subject: [Qemu-devel] [PULL 15/27] target/arm: Rely on optimization within tcg_gen_gvec_or X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Since we're now handling a == b generically, we no longer need to do it by hand within target/arm/. Reviewed-by: David Gibson Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/translate-a64.c | 6 +----- target/arm/translate-sve.c | 6 +----- target/arm/translate.c | 12 +++--------- 3 files changed, 5 insertions(+), 19 deletions(-) -- 2.20.1 diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 2f849a6951d..08c13484cd7 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -10652,11 +10652,7 @@ static void disas_simd_3same_logic(DisasContext *s, uint32_t insn) gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_andc, 0); return; case 2: /* ORR */ - if (rn == rm) { /* MOV */ - gen_gvec_fn2(s, is_q, rd, rn, tcg_gen_gvec_mov, 0); - } else { - gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_or, 0); - } + gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_or, 0); return; case 3: /* ORN */ gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_orc, 0); diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c index b15b615ceb3..3a2eb515664 100644 --- a/target/arm/translate-sve.c +++ b/target/arm/translate-sve.c @@ -280,11 +280,7 @@ static bool trans_AND_zzz(DisasContext *s, arg_rrr_esz *a) static bool trans_ORR_zzz(DisasContext *s, arg_rrr_esz *a) { - if (a->rn == a->rm) { /* MOV */ - return do_mov_z(s, a->rd, a->rn); - } else { - return do_vector3_z(s, tcg_gen_gvec_or, 0, a->rd, a->rn, a->rm); - } + return do_vector3_z(s, tcg_gen_gvec_or, 0, a->rd, a->rn, a->rm); } static bool trans_EOR_zzz(DisasContext *s, arg_rrr_esz *a) diff --git a/target/arm/translate.c b/target/arm/translate.c index eb258958768..eaa6e297384 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -6294,15 +6294,9 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) tcg_gen_gvec_andc(0, rd_ofs, rn_ofs, rm_ofs, vec_size, vec_size); break; - case 2: - if (rn == rm) { - /* VMOV */ - tcg_gen_gvec_mov(0, rd_ofs, rn_ofs, vec_size, vec_size); - } else { - /* VORR */ - tcg_gen_gvec_or(0, rd_ofs, rn_ofs, rm_ofs, - vec_size, vec_size); - } + case 2: /* VORR */ + tcg_gen_gvec_or(0, rd_ofs, rn_ofs, rm_ofs, + vec_size, vec_size); break; case 3: /* VORN */ tcg_gen_gvec_orc(0, rd_ofs, rn_ofs, rm_ofs, From patchwork Thu Feb 14 19:05:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158447 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1770682jaa; Thu, 14 Feb 2019 11:32:19 -0800 (PST) X-Google-Smtp-Source: AHgI3IaJ8QgWsIpss2FBkujA2M6QdgAz4aYsqaWSiyyrV8w0a3lorE3DaRLXQL1gSoX2bevHX/hD X-Received: by 2002:a81:4c54:: with SMTP id z81mr4750439ywa.219.1550172739545; Thu, 14 Feb 2019 11:32:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172739; cv=none; d=google.com; s=arc-20160816; b=VfkBscfuRU9C9R3XIKD4xJUi5b4JQp8l/rD8sfN0WRyOQ7EZVPnlt/8Yifk/iRz2t3 Lugszi29N953WHhaSgDg60SMObUhAVYsVo8nCpuxsiOZIsC2xDc5k49dE0u/RgWOlKjw 7oEPwlqrBCSTufbGg36rSIaNAdShktxUvwZtAoP0LDSfuFOS4pqRcf6tgIHoW44lWglm 82qCSRDP6s2oPup1M6+wdwM7QzzsGRoRz3g5xY9H1LqNwl5FkFBI3Z9z3G77Rfdj58Ye UtHzxaj/LcfGJFNM9EE9Tpp1LReknGmTgWtg4au4AtGZbClEYMCyW0QNPPuM2CXBLnyQ pwrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=Mg+D+txWM617fWmHGA4/LyB+qm2vf6eI5BjX29D1oeA=; b=HcsWEF33fXX21T/tDbICmxsjYeWyp4qlrubkBmXk5TElOaQjrsf93TYlwVATcI7Ocz 5ZLsecOUwDruG2zagZUwpCOzJ8QSVaA+VMcZa9dAFognpg+O231zi0icusrmmHh/iaqe lDwF3usxdcxEKk79/tomhQ/F7lGT6y/qxRpdGo4q93S7kYAMP3uinYejWsVscdLSOQSK XcP/fum9B2jbvtIfzPtggGbk+sNFR9twGtOjO9Zc+eYrR17rSvddtiMzpSBCobgj3aIq VYBJK4eAmeZA/dmXDcJcM4CO/U6CMaOtZAzznisWGnLd27Erooz3Vguq2GRNqJiHeNFR 3c/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=OOxTIE7f; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g124si2028439ywa.179.2019.02.14.11.32.19 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:32:19 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=OOxTIE7f; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53892 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMk7-0002BS-3W for patch@linaro.org; Thu, 14 Feb 2019 14:32:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54130) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLM-000852-IY for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004v1-Fl for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:44 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:45746) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLK-0004m5-6M for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wr1-x430.google.com with SMTP id w17so7677857wrn.12 for ; Thu, 14 Feb 2019 11:06:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Mg+D+txWM617fWmHGA4/LyB+qm2vf6eI5BjX29D1oeA=; b=OOxTIE7feo7Jio3CeUtsjnS2ICA+sp+BM+r+rmaKlRl8slpOpgv+NzqGz+WAsHU4PJ oHBY+sbTwSNbxQm/R4LLMO1qZwJjmjTdCWqg6hQ+cmJHKrQw5lTalz6n9laUibZRF1Xr 5AQ4ahSFpaAP7MFX2WarsWp9MXJVQQ8K0oldYGomqJGwfpqhbYQ1BfLRJLaanVwp8ExZ 0g5LOlnPO0Pl9VhpyR2xktSgqFehU60SFEA8jbvRwUURaWEWPBvvWIkoUNqQsIeYnRz7 2CtOyOp2QzC6w5OhorVPZxn8nTZKcbE1W9EhHLdEjIQDefn3QQPUtqQBK7tQgS1EOrz3 u5uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Mg+D+txWM617fWmHGA4/LyB+qm2vf6eI5BjX29D1oeA=; b=IK6Iyu2lx1L9EXR8gm7rrex6Vpg6OqHftk/530Y1OC3QYBeJVZPdMecT81SV5Dtj9g WUOf2tAqlgW3VVYRDRd+NuAcsvZdywOc7BsdyTTnsrQ/D0tZLfnLVtNZBhFVWs7a7aej 7unVOYvV0RqP+J3RO85BLAmgH+MXY9oCf+dvVCXJ4HnG4/pnOVTYCTIHNm63eP1T0Nxj J/pzgaSRYaDjIJVC7Jp1EehfcLnfhOjnjoSvA9ii+qCfxU2FUTtoTDoxeaAucoAS4/r9 n7XU1+v5CngbV/mjK/5+HDfo3Q6fX25yE3VioubWYGMUUThDyJWVCL3nQ5eVgky3/hX2 x2Hw== X-Gm-Message-State: AHQUAuaXEOG1vuXVkVDI+YMU2vDg2KrIsOLJz7ffNFI7j3wnQlyUia0W TcREomBWeW3SJwFxFYAHZhDT6j4AiDgqtQ== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3928374wre.215.1550171185043; Thu, 14 Feb 2019 11:06:25 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:24 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:52 +0000 Message-Id: <20190214190603.25030-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::430 Subject: [Qemu-devel] [PULL 16/27] target/arm: Use vector minmax expanders for aarch64 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/translate-a64.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) -- 2.20.1 diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 08c13484cd7..bd9a1d09e72 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -10952,6 +10952,20 @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn) } switch (opcode) { + case 0x0c: /* SMAX, UMAX */ + if (u) { + gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_umax, size); + } else { + gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_smax, size); + } + return; + case 0x0d: /* SMIN, UMIN */ + if (u) { + gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_umin, size); + } else { + gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_smin, size); + } + return; case 0x10: /* ADD, SUB */ if (u) { gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_sub, size); @@ -11113,27 +11127,6 @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn) genenvfn = fns[size][u]; break; } - case 0xc: /* SMAX, UMAX */ - { - static NeonGenTwoOpFn * const fns[3][2] = { - { gen_helper_neon_max_s8, gen_helper_neon_max_u8 }, - { gen_helper_neon_max_s16, gen_helper_neon_max_u16 }, - { tcg_gen_smax_i32, tcg_gen_umax_i32 }, - }; - genfn = fns[size][u]; - break; - } - - case 0xd: /* SMIN, UMIN */ - { - static NeonGenTwoOpFn * const fns[3][2] = { - { gen_helper_neon_min_s8, gen_helper_neon_min_u8 }, - { gen_helper_neon_min_s16, gen_helper_neon_min_u16 }, - { tcg_gen_smin_i32, tcg_gen_umin_i32 }, - }; - genfn = fns[size][u]; - break; - } case 0xe: /* SABD, UABD */ case 0xf: /* SABA, UABA */ { From patchwork Thu Feb 14 19:05:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158446 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1768515jaa; Thu, 14 Feb 2019 11:30:10 -0800 (PST) X-Google-Smtp-Source: AHgI3Ibyfrj0+KEpZwaaXpO6YdpixnXnK9aKwTd9VbfW8ExoGYzPJHRp2K9ugrWc+NoiAwMlo8Lv X-Received: by 2002:a81:7c86:: with SMTP id x128mr3956407ywc.37.1550172610873; Thu, 14 Feb 2019 11:30:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172610; cv=none; d=google.com; s=arc-20160816; b=nK4CwEUkjroylzVdy27GuJxCNMl/rkZjBuYUam4v/SCh8yldj6n/xfL0g6qdLAzjWm KGv89qQb6h7jfGKgktkvTixuwBDdR7GvpOUANIsg/rqhmLL+9/JFS3Ce1lG6LAGDNirj mfD2/NclSNVN+enYYoXZ4QW4YSlfNNKuagDaVlwkLOmwlDbfyW0MNFXi/pXwTMNm2O31 41TLqVU8YycdVA3RIPfCqll8g/LTVtweNgE1fxJjFkQVuXckJDa4f+wEVZyIsOGrTqx/ 3RMSlBzJx5x7vRBwfJW9hfEcmR+G2tR7hfikh/9y9YRS4Xh285sitviuASFwMxJRoD+u wjbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=sWKKBtYyKiyvOlJ6wKcLuu8YLiT0X0kIFiIHVXmLm1Y=; b=bVbCH7k9GR7jcvophvMl9HNGDTvIttKOdU8RWgvcYloJFKk2GoZspNBV+arU/XshZn UEXugcaXFY9vNdZSLLa2zZuB7UzS2tVnT6dxNSiceC2oP/s2WLPddMHb5T2bhF6ezVf+ 9wia8MmKgOFVwflVallYKS9qgZi9nlOQtbaCufOU0PqNFk4qvE4m45saxPkeVqlJzOwt lBYUmfgizNehXAQSM8JP9gkF6K5Xn0qsdUUsywRh+aVK+X1nz21+HHzJ8O69QSUbDbQl ckbVI6FPnM2VlV07VrldGqSJSBQEvUkRDYaculNV6xOzMb4bnen8uyDQA7fDAwcFJaMO 3Tpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=wmfiVDxS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i3si1250891ybe.457.2019.02.14.11.30.10 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:30:10 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=wmfiVDxS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMi2-0000Sa-Cy for patch@linaro.org; Thu, 14 Feb 2019 14:30:10 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54081) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLL-00084G-IV for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004ue-Bh for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:34785) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLJ-0004mo-W2 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wr1-x42e.google.com with SMTP id f14so7752111wrg.1 for ; Thu, 14 Feb 2019 11:06:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=sWKKBtYyKiyvOlJ6wKcLuu8YLiT0X0kIFiIHVXmLm1Y=; b=wmfiVDxSRTaYEPznp3OsYi2CwJ3uIxiz87cBI/jFCmbDzbTyyOoNHLw9dENL1b2nLT GayqOZz67Xvrmm/KLJLLWplSCPXXP7teRDto0gAc3I77voalBk4DQ9zqB1OgPccMlsao tG5uWpcUoXa8PYiIxqRtZ/gziznI1FlKn3wC1ZHuj8KxFXiGAezigO0hnP0joK4Zs7ZE BjXWVYs4qTMnvaLT6My/ami2L/FTuQSd6Tl7S7y2nGBt5CUzAK18UUclChhsNKbWsm2C RrELQ5YHMmSuUXWsfAaGwyk2gQnrOfipiKtS726qFyLkVKDPelgKNH+DHw0Ae+Q3jYpl 7zBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sWKKBtYyKiyvOlJ6wKcLuu8YLiT0X0kIFiIHVXmLm1Y=; b=LmyC+FSJs2n6YqHih0s4tlpT/Ops3zL+e8JMAWxwaLMEnJk1zOxVW23eUHiDAqy0d3 lGS3PFTUYt+r9xVBqAhmT8OJOw+0RWQWVfI8RjyUaonuzHW4T3KeBzfVA7YIakHulFL8 OY/tnPkGd0V8slGxljwdNd7K/smI3PZJaXVUoGGOi4cvILB5m7gy2WkWBjGnhP2Yb7Em 94F8MwndXEIn6XObVft9RQ1BwBkHtSoDFH6kPPFWYnLfIqjwUTzuJyuuWgHiebT7fb8/ QHE1ZMqHGHXZwWyPGKgxqhzMz5MA2QSo2gOj/GAdkQdulcbZkFspDFiTfScsFuzX9lN2 NqHg== X-Gm-Message-State: AHQUAuZUCS8v9bVYOxBlgmXwIZ7EUMa/FZr7ikkX9llvcVvByQRgdbC/ TWSNWG2ne0Uz7si7cO6rqTIvLl9HKFgGmA== X-Received: by 2002:a5d:52c3:: with SMTP id r3mr3975539wrv.163.1550171186332; Thu, 14 Feb 2019 11:06:26 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:25 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:53 +0000 Message-Id: <20190214190603.25030-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42e Subject: [Qemu-devel] [PULL 17/27] target/arm: Use vector minmax expanders for aarch32 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/translate.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) -- 2.20.1 diff --git a/target/arm/translate.c b/target/arm/translate.c index eaa6e297384..61760dab917 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -6368,6 +6368,25 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) tcg_gen_gvec_cmp(u ? TCG_COND_GEU : TCG_COND_GE, size, rd_ofs, rn_ofs, rm_ofs, vec_size, vec_size); return 0; + + case NEON_3R_VMAX: + if (u) { + tcg_gen_gvec_umax(size, rd_ofs, rn_ofs, rm_ofs, + vec_size, vec_size); + } else { + tcg_gen_gvec_smax(size, rd_ofs, rn_ofs, rm_ofs, + vec_size, vec_size); + } + return 0; + case NEON_3R_VMIN: + if (u) { + tcg_gen_gvec_umin(size, rd_ofs, rn_ofs, rm_ofs, + vec_size, vec_size); + } else { + tcg_gen_gvec_smin(size, rd_ofs, rn_ofs, rm_ofs, + vec_size, vec_size); + } + return 0; } if (size == 3) { @@ -6533,12 +6552,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) case NEON_3R_VQRSHL: GEN_NEON_INTEGER_OP_ENV(qrshl); break; - case NEON_3R_VMAX: - GEN_NEON_INTEGER_OP(max); - break; - case NEON_3R_VMIN: - GEN_NEON_INTEGER_OP(min); - break; case NEON_3R_VABD: GEN_NEON_INTEGER_OP(abd); break; From patchwork Thu Feb 14 19:05:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158436 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1758031jaa; Thu, 14 Feb 2019 11:18:26 -0800 (PST) X-Google-Smtp-Source: AHgI3IYZGgwSFaV5NaA8rRiDx126hn3bglsHRK/IlxXHlHD72I2w09Hi5vC4bj24P1PewFLMX5iV X-Received: by 2002:a81:615:: with SMTP id 21mr4785540ywg.295.1550171906621; Thu, 14 Feb 2019 11:18:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171906; cv=none; d=google.com; s=arc-20160816; b=P6pxu7lAnnlvfJjZctODk2A3CMasxcQv6bKQee1oUvxHTu+0rW11Y2fmhWqv7ZwhgK TzexohRspxHn2g37bPrSGt+WWcHZsp3XFl18jhWAMW86NI3CBzrRwLmyV/COIa/qNadY C+5ebobT3Y/8U00CNOaeqGxhJC7S9gZ7IKij1+rLN6KL9a6clfm/KIpenCj6SpKJC2ay s7h2T2bRoqqXXCY/HH8ZaTYh5X5X5at/QzGCPPllL+yz9DU1o3Zgp/vpUeCy5MADesJq OXpxOo4kZpbXlxvUuMNJgK8jc58yZToowkEfb0d08fvvmGdGiKh7Bi3+9gVRNuo6f5Ti +4Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=3+9AuBSF629s5q5HS3C//vwConG+19rWTbX1v7A9Hmk=; b=F9M/OYy9PXJU3q0nHj6ocEcDMMtHrFH/tFON1CWjDvhlXWjRTsQ3ya+1WD3gKkZg3R C5WRCX3bv04wMAaQBlehlQzbE/erFLUvs0/AVkNseNCl7oXRAgbW+IwFamHCt2lw/Djw 1JN+TDgxBYYXXhabcm6Ek/O/6W2YA8er3L7QeNVzbctvdY3Rsixyb8nJdl/08kFXc+A6 6EResSqZdSKp93AzuA/lfb3B7jTCpzKPzouMidDSwqSpExxSa3JShMq1wpFYXxxTCqYT iWZ2lF9nekYBhxFvDvQkgelL5J/dUpeBwG1csL7qZ/q64kNUoTzdYy77h5EYCPCgB0/Z pppQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=n4swD6dO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id s195si1912612ybs.199.2019.02.14.11.18.26 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:18:26 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=n4swD6dO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53675 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMWg-0000QN-3R for patch@linaro.org; Thu, 14 Feb 2019 14:18:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54020) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLJ-00082m-Tk for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLH-0004sS-Rz for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:41 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:51855) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLF-0004nG-Rj for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:38 -0500 Received: by mail-wm1-x332.google.com with SMTP id b11so7522607wmj.1 for ; Thu, 14 Feb 2019 11:06:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=3+9AuBSF629s5q5HS3C//vwConG+19rWTbX1v7A9Hmk=; b=n4swD6dO/EFWGOkB5IkF7WT5fryI7d107HZKMfwanqQuQGtSD7ClYDCRhqp7ZTiyhR TKVZFGIxU+BvH47F0SZ/SilJVB14wVEWrbSQUhLhTWJWYzxWnDA0fUvdR9RfJcIE9sfo 82/Tl36xURVB/87Ob2pm9vpyCp7hTaXTCsy8oN2v6kyuifYD42SLHNiDY9S9Y5dcMc4A 6d8CgA55UXqRowxP8XvvNxhsUHpV6EjUKJHh/Q+vZHcUe0Y4iITD7piAwOe1fj4wTFN6 qls+B8jAuSipNr/l1/yPhmjDxZGlLQUPxJn6SkHzUMd4aoibAlN6OUqY3uPJT2dGRxPO A7Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3+9AuBSF629s5q5HS3C//vwConG+19rWTbX1v7A9Hmk=; b=VdFcp/JLIHSbPqcF+aUVlduRW0CWla7+bGiamG3m+4VI3ftLiioloxKB4ToMAwMMDk z9O+yW6lOUsAim+ZmHGxN3F/rPe7Q211oKHd/lT8njOMVrPHyyID1ZCWwgoYTXG3zjVx m6NcIrNwoTM/z/teOjzThAVnoalf7SDj2VRcP7c75Bxi3+9ltUEr8L8Ika1c4pRXipg9 lGdiLCPL+c4kdWIDd/jvlr8Q7c/DXipoMIsfda0pTteagQZnyB2xTOyNdDNHXNMEtzgY jY2Kh9nyV9aLrMXq06THVMiBsKhA73pSauk0RyZLujYeY9ELJxuIDW6Go4ml21Qdzzfd b4PQ== X-Gm-Message-State: AHQUAuYUvUBmjLdxv6Ei28lKn1mSxKklApxaZMoojpdFvSbdai92CyCd 0N9+YZpLEIvx3b7k7ojKycGBTcyiKEOEGQ== X-Received: by 2002:a1c:eb0a:: with SMTP id j10mr3786140wmh.115.1550171187560; Thu, 14 Feb 2019 11:06:27 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:26 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:54 +0000 Message-Id: <20190214190603.25030-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::332 Subject: [Qemu-devel] [PULL 18/27] target/arm: Use tcg integer min/max primitives for neon X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The 32-bit PMIN/PMAX has been decomposed to scalars, and so can be trivially expanded inline. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-5-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/translate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- 2.20.1 diff --git a/target/arm/translate.c b/target/arm/translate.c index 61760dab917..103b4f1821a 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -4760,10 +4760,10 @@ static inline void gen_neon_rsb(int size, TCGv_i32 t0, TCGv_i32 t1) } /* 32-bit pairwise ops end up the same as the elementwise versions. */ -#define gen_helper_neon_pmax_s32 gen_helper_neon_max_s32 -#define gen_helper_neon_pmax_u32 gen_helper_neon_max_u32 -#define gen_helper_neon_pmin_s32 gen_helper_neon_min_s32 -#define gen_helper_neon_pmin_u32 gen_helper_neon_min_u32 +#define gen_helper_neon_pmax_s32 tcg_gen_smax_i32 +#define gen_helper_neon_pmax_u32 tcg_gen_umax_i32 +#define gen_helper_neon_pmin_s32 tcg_gen_smin_i32 +#define gen_helper_neon_pmin_u32 tcg_gen_umin_i32 #define GEN_NEON_INTEGER_OP_ENV(name) do { \ switch ((size << 1) | u) { \ From patchwork Thu Feb 14 19:05:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158432 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1754420jaa; Thu, 14 Feb 2019 11:14:58 -0800 (PST) X-Google-Smtp-Source: AHgI3IalPv3kA9R8XYkovGKlsIRwaKiV6u8ZOJUH6jtSqd+bDzOEvWi1tyVpjP8qIAxdCU5cZ73G X-Received: by 2002:a81:28c3:: with SMTP id o186mr4523917ywo.309.1550171698342; Thu, 14 Feb 2019 11:14:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171698; cv=none; d=google.com; s=arc-20160816; b=qmX6wZuC0Z/QD+3qfMrmtn95vC8F3+jIIz5EF3U4hEHgYjxue/FtDHXrMPEqo6Ardd dU0DsLeuzzcW6B7xPNPlKRE95g5OAJpl/KssXLHm0fdiyElCS3MqAlyvpeYduopnuzzH +Cjra5njmfxAAg0kP/0x6q6hMo5LMYCt+hDdfa3DcJeBO4oAN2ssHNGEmJawoGgtlQ59 PhK5oHbi216ozvrGoNVtU8HxGWx7SPXlhGO00i09BeGpdDYkjFWt6yqG4f8InFOWaRgr qkFO8fMF8I3i+RIAQhMSRCziAUv7qcmf/FIaleHArroSuKMjzK/tZ+g+ZLMXNPwBAUHK rBjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=ure9WLhx4TEFYyh3lBkGdsBbLFd5XDFbsPP7MpnmzlY=; b=nyb9k9Olph4vXVJWYaQgY6btMuqdpNX/S+oe3nrKNdFnFmSoFgNG0drbyKS0z1NfU/ clLVe9YI6wtEIL/hb+gFbKJhkdoUnSRyd5U4xDCixkri2jdslh/JVQBFDKe2f4dPjfWw bbMRnApjSpJdzNjH1f3V1psvat21F/aYaKuESeLZUR3lPNzu1i0ZqMxTji7HcAAvZmm7 +ZgjEPE+cxRZW7ALtJ/ukoGY3m2ijWNHcFjSMDUkOSQ+pRRGc6flY4lbZfNjBphsJFNd +8wvHSEfgZAgHrzv7Vtg/7WVDvThLYDc8T49b4sWRywAij0KpjH5ou3wUEqJe28Kuaki INEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="dKjj/inR"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p2si1934574ybl.241.2019.02.14.11.14.58 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:14:58 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="dKjj/inR"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53613 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMTJ-0006EU-QL for patch@linaro.org; Thu, 14 Feb 2019 14:14:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53983) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLH-00080q-S4 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLG-0004ra-5M for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:39 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:37972) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLF-0004oG-OT for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:37 -0500 Received: by mail-wm1-x32d.google.com with SMTP id v26so7193444wmh.3 for ; Thu, 14 Feb 2019 11:06:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ure9WLhx4TEFYyh3lBkGdsBbLFd5XDFbsPP7MpnmzlY=; b=dKjj/inR9JMPzgeu1d+ReDUQLabTMaoOnKl7KzLwLPuELWKPw6KUvXQDgFjWNtcB1O Fb3ykSv5U62k/+Pnc0vSsJm+jKWcVbFv56TatXi6QUO754zyRhVNjfrN/J/Ytij3SkXJ Id7nTOujTdGzySblOhazSd0zvV8P/xz7Y/nt3sQVrklqly7vvJdFJKCh34gEMcwSwz4E XOL4VrjBxiCXZf7cZiTryem+p4C+pKMhjvbiSzlUg+REUa+gAVbWVSbVezy47lmcCA/5 XIAREgxKPs2I4gJ54wSBLvZL/FmtsxGkNr73QN5bMHxUgBqIZC0E0MdaMp1zCZwZiJ/V MBLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ure9WLhx4TEFYyh3lBkGdsBbLFd5XDFbsPP7MpnmzlY=; b=nrjOaZw38nMGydq/EHrXhsZrqLVSEgLc3lHwQeChuGWJyOVmivL4g7jU3p+jytD3wd xfbFfyLvWWMH7tlDXUokhF71AZWqadQdsbONSCFqfndyWDbK5xLv55u3L06tkpLNe45b ZkJ7XYuHOU9ESghcz1ebAa8mzNSR8LqF3/iaLOQ1SWQqEFfRR6avAFM0Q3AkxV5+aEur mZSNzURQX8HluE8T2Dsbn5NiPNIRr7wkrMk2gUsX6RJa86bW12A+DlyLtlznkk4tQlch SyfVfdf+Bj2pHd6HVQepQMSfL34v1GOZvjToNHmGJmJDNC0NltTcjp5r6urPjy7xxQ4b p5dA== X-Gm-Message-State: AHQUAub2LivHo3fqy4lxVtMyytyr1/641kNUa9ffVYtWPZWJJZ54+pw4 hCzDOy01WNAq/65wHQqmSTl80uJfWokG5A== X-Received: by 2002:a1c:f30d:: with SMTP id q13mr3714366wmq.121.1550171188681; Thu, 14 Feb 2019 11:06:28 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.27 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:27 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:55 +0000 Message-Id: <20190214190603.25030-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32d Subject: [Qemu-devel] [PULL 19/27] target/arm: Remove neon min/max helpers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson These are now unused. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-6-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.h | 12 ------------ target/arm/neon_helper.c | 12 ------------ 2 files changed, 24 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.h b/target/arm/helper.h index 53a38188c66..9874c35ea97 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -276,18 +276,6 @@ DEF_HELPER_2(neon_cge_s16, i32, i32, i32) DEF_HELPER_2(neon_cge_u32, i32, i32, i32) DEF_HELPER_2(neon_cge_s32, i32, i32, i32) -DEF_HELPER_2(neon_min_u8, i32, i32, i32) -DEF_HELPER_2(neon_min_s8, i32, i32, i32) -DEF_HELPER_2(neon_min_u16, i32, i32, i32) -DEF_HELPER_2(neon_min_s16, i32, i32, i32) -DEF_HELPER_2(neon_min_u32, i32, i32, i32) -DEF_HELPER_2(neon_min_s32, i32, i32, i32) -DEF_HELPER_2(neon_max_u8, i32, i32, i32) -DEF_HELPER_2(neon_max_s8, i32, i32, i32) -DEF_HELPER_2(neon_max_u16, i32, i32, i32) -DEF_HELPER_2(neon_max_s16, i32, i32, i32) -DEF_HELPER_2(neon_max_u32, i32, i32, i32) -DEF_HELPER_2(neon_max_s32, i32, i32, i32) DEF_HELPER_2(neon_pmin_u8, i32, i32, i32) DEF_HELPER_2(neon_pmin_s8, i32, i32, i32) DEF_HELPER_2(neon_pmin_u16, i32, i32, i32) diff --git a/target/arm/neon_helper.c b/target/arm/neon_helper.c index c2c6491a83e..3249005b627 100644 --- a/target/arm/neon_helper.c +++ b/target/arm/neon_helper.c @@ -581,12 +581,6 @@ NEON_VOP(cge_u32, neon_u32, 1) #undef NEON_FN #define NEON_FN(dest, src1, src2) dest = (src1 < src2) ? src1 : src2 -NEON_VOP(min_s8, neon_s8, 4) -NEON_VOP(min_u8, neon_u8, 4) -NEON_VOP(min_s16, neon_s16, 2) -NEON_VOP(min_u16, neon_u16, 2) -NEON_VOP(min_s32, neon_s32, 1) -NEON_VOP(min_u32, neon_u32, 1) NEON_POP(pmin_s8, neon_s8, 4) NEON_POP(pmin_u8, neon_u8, 4) NEON_POP(pmin_s16, neon_s16, 2) @@ -594,12 +588,6 @@ NEON_POP(pmin_u16, neon_u16, 2) #undef NEON_FN #define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? src1 : src2 -NEON_VOP(max_s8, neon_s8, 4) -NEON_VOP(max_u8, neon_u8, 4) -NEON_VOP(max_s16, neon_s16, 2) -NEON_VOP(max_u16, neon_u16, 2) -NEON_VOP(max_s32, neon_s32, 1) -NEON_VOP(max_u32, neon_u32, 1) NEON_POP(pmax_s8, neon_s8, 4) NEON_POP(pmax_u8, neon_u8, 4) NEON_POP(pmax_s16, neon_s16, 2) From patchwork Thu Feb 14 19:05:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158429 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1752343jaa; Thu, 14 Feb 2019 11:13:00 -0800 (PST) X-Google-Smtp-Source: AHgI3IaT+ynyNdWalxFFOkZbRmh2VVivVLVOsv0DswL7p9iKuUM0gBK2yOtuERwwKRy+tHffQei1 X-Received: by 2002:a5b:1ce:: with SMTP id f14mr105934ybp.432.1550171580152; Thu, 14 Feb 2019 11:13:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171580; cv=none; d=google.com; s=arc-20160816; b=NPUkhEiemf7jS+kXahEwlVRyjrca6TasWtrRhlyjzXaHWgQ1zhJDoxnsimFnbQQJSK jyUDM/8KsAA2mCaUTGj4Jk/c7LdQw0Lohf9XTlKiErdz3jQWsOtJVhJZneih1bct21iQ qgpKv1H6/cMEVGqilFd/0EN7Eq9y8joQWa1afgZ28BjAcI5NGhSjgQF3G9oaT1OG6m8l 3tv9bEYY+vgB0nEUfBbbAKjxpcODlU5tnR/5ois5vqTlIw20o8MoFTujCo6GjHYkvB0t xn96BfQsaeKxMd8GfJwogihEQZXY8VUk8eOaLXpodRhrI2ahhpwGW7vNxbq8WsCQkwID 3aBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=W64PRGp8uX/62P12invQvLhJjduChfiEQD/NdXf+/eU=; b=T2ZcS/1q1Pl00HDnpQ4hBHctzmTBroOQRkKWkbFwrHs2Wcd47owrmXYTAj1m18QRM7 7Q5pEXHGPs/lhoUr9a0qXutZiC3megS45I7psbhR2Z6PuB4B24fzo4nTD+VKFpmp1VII KIE7J5x0dbLSJt2w+DRiiEDwAZtwv+aHD6pP4wUMy/LCrUSi24v3DBm2pRkEIvVgsCT3 YIAzvlbv8nH+3tXhcruNpeMvwoeM5kwi6tLTWtyFLOBnTrIyGkDHWv98KtV44EgfWZm1 rCz33Mx5rQ0wyi9qEJjtZdtUtsObVKArxJt8q60RRwmlOLXJe2ZKMkYu/gcJm9WXIdJ2 f4hA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=JRL0USnF; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v7si2031003ywd.323.2019.02.14.11.12.59 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:13:00 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=JRL0USnF; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53600 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMRP-0004Ss-Gh for patch@linaro.org; Thu, 14 Feb 2019 14:12:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLL-00084E-Ax for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004uN-89 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]:38792) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLJ-0004og-Ts for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wr1-x42c.google.com with SMTP id v13so7709602wrw.5 for ; Thu, 14 Feb 2019 11:06:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=W64PRGp8uX/62P12invQvLhJjduChfiEQD/NdXf+/eU=; b=JRL0USnFucLMoYX6DI6X8eFMHsmzgXRpCW6rHYf2x/s8gQLR+o7EieS+RkHz0xprxo icwBUoenslh/7q36oFloendaC2UwhFGyy9Ur+6dLjIC1DYL0D2zblPgVhVHyWNLev14E 2rFsNzXlxIVRXYri47rvVTA58yNlcI7gGLqyRI40sCWzAQD5tuS1hE6lC6AeC+dXLZEr Zr3dBRmrehl3M0z3D3TVPVwVHLv28PIO9EoSQW5AmjtoRLrkr+oiuWF3H5WK+Sx/Rmbo cnLe+FnX9EaOTL6rMBl4o3iZ1CioWi1Fnzn9fXyLdv7lR/sirM3ziBgdaL93hDC6Bz0z Vqvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W64PRGp8uX/62P12invQvLhJjduChfiEQD/NdXf+/eU=; b=lXC9uYJ7jnif76nBFKb0zYsOc8YtQT42x4IKOmYICgLnPwNMzO79CwATJNJyRY97pA v0bqqEha1OGDetrc+URrv8HejR92aAMwZTBvW0KcUYXx2OC41BOQ4nDi17meszvxSKfr FXEqNND2p5U0n7idGYlvLvcqSz36qHT4PqqD1Y6++PkoLUD5dNYzEXOofpsY9XfcS53K 9pmiXvj9ThAs2W55CvhB7mORAZcCGov9tfVbUUKI6A2JOx7U9b5v/o1YMYFzgt5eSDfk N2ga7ZwPhy1dYLGmxLo7cJozu6N0J/FIhrJMqhPKbIepB/9bx9iXHisJaRBZMF8f/CHJ AgeA== X-Gm-Message-State: AHQUAubG1eofRtra6Bl7CUZ4itvljoy5cLWfugPrTRn/rmcPnlXXAbla nZpJrAxrc7jOjfeWSqKlAawKIKAOJ2lyqg== X-Received: by 2002:a5d:6810:: with SMTP id w16mr3980539wru.62.1550171189820; Thu, 14 Feb 2019 11:06:29 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:29 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:56 +0000 Message-Id: <20190214190603.25030-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42c Subject: [Qemu-devel] [PULL 20/27] target/arm: Fix vfp_gdb_get/set_reg vs FPSCR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The components of this register is stored in several different locations. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-7-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index 7653aa6a50a..8eedce113c1 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -81,7 +81,7 @@ static int vfp_gdb_get_reg(CPUARMState *env, uint8_t *buf, int reg) } switch (reg - nregs) { case 0: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSID]); return 4; - case 1: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSCR]); return 4; + case 1: stl_p(buf, vfp_get_fpscr(env)); return 4; case 2: stl_p(buf, env->vfp.xregs[ARM_VFP_FPEXC]); return 4; } return 0; @@ -107,7 +107,7 @@ static int vfp_gdb_set_reg(CPUARMState *env, uint8_t *buf, int reg) } switch (reg - nregs) { case 0: env->vfp.xregs[ARM_VFP_FPSID] = ldl_p(buf); return 4; - case 1: env->vfp.xregs[ARM_VFP_FPSCR] = ldl_p(buf); return 4; + case 1: vfp_set_fpscr(env, ldl_p(buf)); return 4; case 2: env->vfp.xregs[ARM_VFP_FPEXC] = ldl_p(buf) & (1 << 30); return 4; } return 0; From patchwork Thu Feb 14 19:05:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158440 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1762515jaa; Thu, 14 Feb 2019 11:23:18 -0800 (PST) X-Google-Smtp-Source: AHgI3IY0LMtYPTSnPTDZ1rEK2YGLyls3TAhZ7LrmghMXptd0j0L3jcRfAKlFU2VYcK7qoyxu6Xc7 X-Received: by 2002:a0d:d882:: with SMTP id a124mr4774175ywe.184.1550172198047; Thu, 14 Feb 2019 11:23:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172198; cv=none; d=google.com; s=arc-20160816; b=zOD7qDwUHO9Sd0DWYRPH9Fpq1stDqzJhHlAx1bVCHGxf279CsCbvZz6vD2mPJsELIp ALEPWtCZ/nIqv4xtImeybKNpf2B52oVfQJ/ZUGu/iTf9tW760Z8t4kU6YxekaMsaDgBi AzBKxjchp4DWWph7pMF4MntXXv3MzYS+v3CvJdduPcHXoyEEDOYCRTlvWMXbcOrrUerH l0QEDYL4PqYfJL+rFdFuFza86Ezqi46LzeqDaKKfq6NDXwL6Dh9sNn4h/m4fjVCtb/Yg GcolGcKlbu75qqJJZdkqdCHv/2aIAWqR30Cn3JoAUSpxAVK2qbJ0kR8YAtppjrpHckNp itPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=JR4dVABrQhOW9cucQ4cYrooutabFaThbBb64FrVb5TQ=; b=ep5e3DRimxabZV5/hTvDb7OMmHyctYnUfvYowR/gb1X0W//3dcdHZRGY32//d1AgeQ gEKrpTGMk6Dby4K4JTHOA3wtfDHLRwDn26NSrteEQNklw3VG95F+xHtiezZLYk07VqA9 fsRZahhGD+HFP9l8r0CmR3i2z0mx0k17Yom/xWpgzte4bJkFaPQLZswR7S9XVP2CfxIW vDjku+KXBGcfuI7PBoM7mmIGaP1jALq32qLn5KhNGfNZAqPnkMmwcOlp6ehvXK9bJ62Y uA+8+rCQkE/yvhdrelJxtMKpaKPsV5BBZu5qaXngQ9RCCdBT1VYS57qKpZb0pr4uPGlP I6wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=w+Lu8xiB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n205si1958032ywc.118.2019.02.14.11.23.17 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:23:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=w+Lu8xiB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53737 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMbN-0003R5-Gx for patch@linaro.org; Thu, 14 Feb 2019 14:23:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54019) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLJ-00082l-Tg for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLH-0004sM-R4 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:41 -0500 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:35020) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLF-0004oy-UB for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:38 -0500 Received: by mail-wr1-x432.google.com with SMTP id t18so7747334wrx.2 for ; Thu, 14 Feb 2019 11:06:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=JR4dVABrQhOW9cucQ4cYrooutabFaThbBb64FrVb5TQ=; b=w+Lu8xiBiICHMf6/yoYhtiY5jkmZ6fALNc/3QNaZF47O5eR8TrOCj4ItAhp0OSLroc b65oc5NstGMAQjBfT9fYurqZdWoFvVsysm+Lk6Qk9Mp9vYsKyFA+uT6ju7d+B7E6XSJ/ riCuQfidtCW0DJIILGeu5ITJuxmjxssNWq4Ekt3DU7tSVVdRphLfbqochFGEbxBnztkW +soCHzT5U/Dv2H10veOHifU+uU7RqAncuxhyInQJDaPQF7DiH9n44t/Mct10IduhSWPI 88cpABxeO/gxYkXRlOhLw9F8lAWwOApTVjB3jjH4CsedGrGRyoSIjjRXep92bxHt0RpF A9eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JR4dVABrQhOW9cucQ4cYrooutabFaThbBb64FrVb5TQ=; b=fgFDSDXxcvVM3EXgiGNzbCCPTdXYCUHkLUBNvT2cZZYffdX5c7cJTIdm6DPXFFTaNu 6VRRLoQSBJg2IEcK5V1BHAEWg1xjt0lLaERmKHTKIeJRpgMp1C1O587RwkRbczfwl1t5 0fpQ9JJLivHPTnF4TqDg/rD/BE6LPS+lySCpYD3gdyTlJp5ukwOp9sxw5C+WYhtF3iff ioxBppoXFjjoTsYASMoZmM+tMNvaUZ85MvXEMNG/1NCtqj0yo7kqd9Ta+veRdxmUqE+C sO8Iil5Gajk1xmaA/ZKRd8NGKK+1sH9i8cHrdFgyxinEeehylU34MamKwxdnWGx/Apwc OGqA== X-Gm-Message-State: AHQUAuZrQ8+mk8J5lNm5jLMxCxDX56kypt8KVKwrCkUUhXdmVKBVO6Hr pKc3MQfnVRIvpb7TO5kwFRSohLOcbBqbqg== X-Received: by 2002:a5d:458b:: with SMTP id p11mr4112935wrq.22.1550171191104; Thu, 14 Feb 2019 11:06:31 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:30 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:57 +0000 Message-Id: <20190214190603.25030-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::432 Subject: [Qemu-devel] [PULL 21/27] target/arm: Fix arm_cpu_dump_state vs FPSCR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-8-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.1 diff --git a/target/arm/translate.c b/target/arm/translate.c index 103b4f1821a..b871a11ba69 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -13641,7 +13641,7 @@ void arm_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf, i * 2 + 1, (uint32_t)(v >> 32), i, v); } - cpu_fprintf(f, "FPSCR: %08x\n", (int)env->vfp.xregs[ARM_VFP_FPSCR]); + cpu_fprintf(f, "FPSCR: %08x\n", vfp_get_fpscr(env)); } } From patchwork Thu Feb 14 19:05:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158434 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1754720jaa; Thu, 14 Feb 2019 11:15:14 -0800 (PST) X-Google-Smtp-Source: AHgI3IZTdRuobUguvRJ7ot+0SDVsoyTQZ5cHV47bDVuvg3w5iuYVkR6ZcsaS8FH4Y8tw9flWsLKA X-Received: by 2002:a81:7155:: with SMTP id m82mr4659149ywc.505.1550171714414; Thu, 14 Feb 2019 11:15:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550171714; cv=none; d=google.com; s=arc-20160816; b=N6f+La4bWL2sq1UEtjWCw9L1eHSxKrQVvNdO02yv6pnEVPf+MDHBMtEYjxxfhSlSPc rW73I7cDhYlZBTbPXqGL0XR7VInKJMRuOsX4EX7besYyemq7CTiwKemCA20ikHyQw9ht Y+iZKsWNmv+ua2aPqm0z7CBscEbePd/HPRJWww8rMFwjPI1rtVwcfU7Lc4G5DKGD+uG6 wWvL/bupt56MpKyNfwLMBKjNGXvB88cW0ETYGevQkLTppYzY2N1LgP12Nv46ach7AoHM Lh/zfFZbB00MuwAHVLhfpWMQ8byOgYxhN952ElGKF9th3ptVFN/0ca8vTqSTKc7jodsd rScA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=7zm92d4N5jm95GOe8HSeqbCCIZXBS1VbUQlQpCslp0o=; b=UMQzpCvqsu/JMCcwrNZIYxpAXrDlwG3f7wUvsDQ6Z2HohFXO1kpJqO0py3+EHRt3xc rjkRSyi0ieiCPufb5BTLA0SW+u3m2R/C+g5s4PSi1IbU290PH+IkoqT2Tt7Fz6rC1zoL wFoVq/9INb97SlCTOjCkR0cLJ4fCRH2zppTsCfQDcqt+n194Ojjoiv73z3/WI8zYs8Ya Q3110aTjHbUasye81dlPbzehXeYYmwk81BoovEtKxraYUGh2Gbkj+7KX69LHpVlPeunT g2qZDTr+OKOmS6v49q+VN2nXaiZ/RbNKKfVUcwR4qnfTDBjprYYVIV8oBBOSCUdWRYTC RPcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=k30m3X5i; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q11si2078981ywj.90.2019.02.14.11.15.14 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:15:14 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=k30m3X5i; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53621 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMTZ-0006TF-Ql for patch@linaro.org; Thu, 14 Feb 2019 14:15:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53984) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLI-00080r-1n for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLF-0004r7-S2 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:39 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:40080) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLD-0004pD-Tn for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:36 -0500 Received: by mail-wr1-x42d.google.com with SMTP id q1so7705326wrp.7 for ; Thu, 14 Feb 2019 11:06:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7zm92d4N5jm95GOe8HSeqbCCIZXBS1VbUQlQpCslp0o=; b=k30m3X5iWZdQaIRI0dDONeb4DJfKkBqicPmFkSiTi9kBGWqBcNS+y0vPA6Ln6ipfoR yIwwe4w+zYWlftthPCOZNsr0lAmAi2XwGFD0H2bla+7C6PLoH656a0RXRU1T9WHHhKel LPuQ/jEdfmD/d4o1yHiXJci2EHmjF7rsjD9aAV7jbAy2SP3yjiu4PoYpJYSOODJiIPxM /Zh5M5AT169n6s/pTdOIkB+Ty/7mvnEnyAfqUZNj0NoapBpMOxTJ22e6aTyyrT1k/d64 S/DxAHPD/r1QfPTJao29q9BrtXKX6JIsNx7JPCtU4gMFEUHYUkAipQz1ItER5t9fSows iI2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7zm92d4N5jm95GOe8HSeqbCCIZXBS1VbUQlQpCslp0o=; b=ml5lccLWb/hHxtsrUwPbEsKwjElEjR3FhI18/YOGnMH6dEjgHAJNdg4TUjySFFVedr BLLSlURV8BsjVdrMTySpHn0f+1ASKHgZtaWk/85OsOU0MChoIITA5rhvQNTSrzuwe5D5 w0Y3qVTIG1CnlWNZw6o0irhiKRsvAiijECcNlu4MaA7frQSicQ9jv9g7cfIzfi/xmekA 3pc/exh2UpRqi9mSLiouF/C6fTNlf7G8nktz6FDNSgErUJiyR17VsxzEd+KrDQ0W9nTH NHUyF+ffYCkDfFt9yne16uflcmsJMjqg2EIVAVgnOYyc6jsCG1H3QRj1ZckotPmhD432 atZQ== X-Gm-Message-State: AHQUAuaoGoS0d6DdfX8SwH9vSeUqbMwmp+r7S32hW3OLPXnF3stEkj2K WdIuUj4vyAeN3LAHRXiOVWw+Wi4LFgd5mw== X-Received: by 2002:adf:dd4f:: with SMTP id u15mr3920883wrm.61.1550171192232; Thu, 14 Feb 2019 11:06:32 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:31 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:58 +0000 Message-Id: <20190214190603.25030-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42d Subject: [Qemu-devel] [PULL 22/27] target/arm: Split out flags setting from vfp compares X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Minimize the code within a macro by splitting out a helper function. Use deposit32 instead of manual bit manipulation. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-9-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index 8eedce113c1..28e45f0f0ba 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -12871,31 +12871,40 @@ float64 VFP_HELPER(sqrt, d)(float64 a, CPUARMState *env) return float64_sqrt(a, &env->vfp.fp_status); } +static void softfloat_to_vfp_compare(CPUARMState *env, int cmp) +{ + uint32_t flags; + switch (cmp) { + case float_relation_equal: + flags = 0x6; + break; + case float_relation_less: + flags = 0x8; + break; + case float_relation_greater: + flags = 0x2; + break; + case float_relation_unordered: + flags = 0x3; + break; + default: + g_assert_not_reached(); + } + env->vfp.xregs[ARM_VFP_FPSCR] = + deposit32(env->vfp.xregs[ARM_VFP_FPSCR], 28, 4, flags); +} + /* XXX: check quiet/signaling case */ #define DO_VFP_cmp(p, type) \ void VFP_HELPER(cmp, p)(type a, type b, CPUARMState *env) \ { \ - uint32_t flags; \ - switch(type ## _compare_quiet(a, b, &env->vfp.fp_status)) { \ - case 0: flags = 0x6; break; \ - case -1: flags = 0x8; break; \ - case 1: flags = 0x2; break; \ - default: case 2: flags = 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ - | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ + softfloat_to_vfp_compare(env, \ + type ## _compare_quiet(a, b, &env->vfp.fp_status)); \ } \ void VFP_HELPER(cmpe, p)(type a, type b, CPUARMState *env) \ { \ - uint32_t flags; \ - switch(type ## _compare(a, b, &env->vfp.fp_status)) { \ - case 0: flags = 0x6; break; \ - case -1: flags = 0x8; break; \ - case 1: flags = 0x2; break; \ - default: case 2: flags = 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ - | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ + softfloat_to_vfp_compare(env, \ + type ## _compare(a, b, &env->vfp.fp_status)); \ } DO_VFP_cmp(s, float32) DO_VFP_cmp(d, float64) From patchwork Thu Feb 14 19:05:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158439 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1761299jaa; Thu, 14 Feb 2019 11:21:54 -0800 (PST) X-Google-Smtp-Source: AHgI3IYl9L6C7ulwaRk1RgFvqR+sepU6Qsfpwj+2dRuZIn8XiNsKfO24STVBi9dbE/4GTTNvJQbE X-Received: by 2002:a0d:c182:: with SMTP id c124mr4692304ywd.190.1550172114128; Thu, 14 Feb 2019 11:21:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172114; cv=none; d=google.com; s=arc-20160816; b=oC2mwtB56nu0d3cY0fFXr9ztUY9a4wzHtYo1sCUEluAdn1S8ciYlghCmftX5fJ0Fa3 f+08T+5jtypjW9AeJNdb53SdP2iTO7gp8u4ZwyAtXtxVuPXd5uNUqcZ4naYkQXYIUxpv LmfO+hr8Z2XPInIBmrvrlcZ9TOTUsS/TlXptHNeiEcDKv39oIFg+hSB3AOLjHW4X9LG7 vvk0sI5S/0E4ZyanDVYKV4CDi2Y48SgFuG3B7IU4sSbdXR/az6TtPw88+JhH4CcwrWYl Cs0Dim1RYDTgUWE57yyHNw9TYlpEMaqf3y3KM8O0tZFT/CC6N23h1mY7go6CuyxXAaKw 62Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=IAycNoOEPKuwngOeVGLHyewoQkDCL7EmRZgOMvphgKY=; b=Q9Pp97hLAXOmd0CavogOLRsjUfb39JRLIPZbzr6zdj2SBxsImNGQV/1roQUEfZx5SW alAEQHlKxGRLlWTnYQR/j0udWb1cp3bmzf6yz/ybICpDReFrmAWac97s1cw0lHYc2T1b K4lVw7sOwG2KztrVtiRnW9TbzOPtmLHufj14V4XuEllN9Y5WYvSfDphvXfj9/HIywEvo 0QSYKFQmBspgz5WqB2hjE3ttmxbMT3sn8zy1HOn/JkbzwRCrbQk11acOvs1PU8FFOhNT KJL8osDfEQHvO0v6JOxfN1VghNQpCSgJ1yHVHOKhQe25SiGhiPpd8rt8eXxkfzExrkrV KSMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="Yf4t6ZM/"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t185si1962145ybf.403.2019.02.14.11.21.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:21:54 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="Yf4t6ZM/"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53733 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMa1-00033G-KT for patch@linaro.org; Thu, 14 Feb 2019 14:21:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54084) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLL-00084I-Ie for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004uj-C4 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:52843) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLJ-0004pZ-V1 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wm1-x331.google.com with SMTP id m1so7512930wml.2 for ; Thu, 14 Feb 2019 11:06:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=IAycNoOEPKuwngOeVGLHyewoQkDCL7EmRZgOMvphgKY=; b=Yf4t6ZM/a64fwhF8SkJCye9SNF8kbemgN1K+OH1jSU0PbXtIDY4zEmU5XykfPtDO0R ALipcsk5W2u7n23U2tA5dYinRz8o0zN463zs+xukeSEu1CY02OjcTyqlOByZKcursUMG hAA8ZSMQ9WhwXS+aAMcTvmtbE+XUEduTVxtsmphlwSrmY/HEREYb3QZiEtJF2Iu6AJh6 7LYp+5aXT1If+K3yVl+/vid0+avJkqgK1QtWe9Rt6qJB4basDM19QY+Mr3F3dToz5Tj4 PhMSgUEubU2oFjWtCRfC059S0Hw4p+veEmcRCPdWrXzqAJu5fBDxps1Csy/pJgyzzIKf Wcog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IAycNoOEPKuwngOeVGLHyewoQkDCL7EmRZgOMvphgKY=; b=JXISTheOoHi8ZprEM54wwn0NnzLooPYxOr0D2zG2S3UgAcpRqlR/KY9Fv+UVtB6McL sQpSQ5/h36iqeMo8zS8Z6AnqNyzdTZhofQdkmaz3QG3yj8w0/rPcJfWtYb30xP6XCUZE kXNwL2VbHscZdy6M/ARL7KvhbXyE15VCVcGHKQOrQLEs+zPmTP2SNv3h+iTnzmpmy242 0Bh5F85ISoQyQOXr1sdRY81WjCcGqB0X95iLRJVXXMn0tNdnIT9vike1lHgcUnZ4BCjS BfMtrVlTfcOVLDg4a5B12pgP0+78CWzQSKGactGM/zq70gpRrWtCaJU1cT/BsoK3vTqH wExA== X-Gm-Message-State: AHQUAua7goz915XCpJ1afFTdMD3LpOmOANgR3wUr9eRevv5CO+PW69PW /lauE6O5lRPDevt2ZNJx7Q/79q6kAD0Egg== X-Received: by 2002:a1c:a5cc:: with SMTP id o195mr1996040wme.67.1550171193411; Thu, 14 Feb 2019 11:06:33 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:32 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:59 +0000 Message-Id: <20190214190603.25030-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::331 Subject: [Qemu-devel] [PULL 23/27] target/arm: Fix set of bits kept in xregs[ARM_VFP_FPSCR] X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Given that we mask bits properly on set, there is no reason to mask them again on get. We failed to clear the exception status bits, 0x9f, which means that the wrong value would be returned on get. Except in the (probably normal) case in which the set clears all of the bits. Simplify the code in set to also clear the RES0 bits. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-10-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index 28e45f0f0ba..d4b7eca30a7 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -12707,7 +12707,7 @@ uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env) int i; uint32_t fpscr; - fpscr = (env->vfp.xregs[ARM_VFP_FPSCR] & 0xffc8ffff) + fpscr = env->vfp.xregs[ARM_VFP_FPSCR] | (env->vfp.vec_len << 16) | (env->vfp.vec_stride << 20); @@ -12749,7 +12749,7 @@ static inline int vfp_exceptbits_to_host(int target_bits) void HELPER(vfp_set_fpscr)(CPUARMState *env, uint32_t val) { int i; - uint32_t changed; + uint32_t changed = env->vfp.xregs[ARM_VFP_FPSCR]; /* When ARMv8.2-FP16 is not supported, FZ16 is RES0. */ if (!cpu_isar_feature(aa64_fp16, arm_env_get_cpu(env))) { @@ -12758,12 +12758,13 @@ void HELPER(vfp_set_fpscr)(CPUARMState *env, uint32_t val) /* * We don't implement trapped exception handling, so the - * trap enable bits are all RAZ/WI (not RES0!) + * trap enable bits, IDE|IXE|UFE|OFE|DZE|IOE are all RAZ/WI (not RES0!) + * + * If we exclude the exception flags, IOC|DZC|OFC|UFC|IXC|IDC + * (which are stored in fp_status), and the other RES0 bits + * in between, then we clear all of the low 16 bits. */ - val &= ~(FPCR_IDE | FPCR_IXE | FPCR_UFE | FPCR_OFE | FPCR_DZE | FPCR_IOE); - - changed = env->vfp.xregs[ARM_VFP_FPSCR]; - env->vfp.xregs[ARM_VFP_FPSCR] = (val & 0xffc8ffff); + env->vfp.xregs[ARM_VFP_FPSCR] = val & 0xffc80000; env->vfp.vec_len = (val >> 16) & 7; env->vfp.vec_stride = (val >> 20) & 3; From patchwork Thu Feb 14 19:06:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158445 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1767048jaa; Thu, 14 Feb 2019 11:28:22 -0800 (PST) X-Google-Smtp-Source: AHgI3IY3Nd2WKuP3MlugUczCpLUEDcshPn2k57vwMCBtw8uUZbwowxUHGDpYkBvpxFLWlG/3fev4 X-Received: by 2002:a25:9a83:: with SMTP id s3mr4685749ybo.299.1550172502313; Thu, 14 Feb 2019 11:28:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172502; cv=none; d=google.com; s=arc-20160816; b=pdhycPesun/+HJ/iuwb7A+U2nolmnluL9sFJt32jBnAkTZGAz5OCg3o5nDFQvivPNN n35kYPtBo/xTXD4HFkwd9M2TXgjp13ia0+530gkCqnhD6I74obJHacYpF0X2yongXAc4 dL2eaNTv2N/hOGlANUNrHVW2CZq1RZNuzvljzv/AfgoXuzg2wbTkon/w1da1VnB81R5l 0x4Dd8aQ/9pln06umYwsktZ/S91JZCt8yaBPZIuVNcQjWHpzZBXvUnj918EOyWd1mg8q Wpc+2SFiwcUmYbkdz6hyDnSJ8RD1DR0gVZ1C47gAM6/3zKx5jhuAJycKWRZJqft3Vkmm 6DRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=ItoIWJSLTWhZc+TWj+rE0hUaiKW9Jpri7JbnOdoOS5g=; b=PdQzm/0nXqwV6Z47XnK3+LXWgo8TqaQwilsBT2Geosvsiw/6zdk4RRSKlbX7a16CMo XuJf/iIOkCqNtNQHAHvVljcBOT522vd3ptZYmrCJnfZrntXQTVhTFgCmCPO0fJ2zg0u1 tp0gMDJwHOIEWwxPCe4qAmJ06mhI/c5UutmrClahPcEcGuDo32d5CNXAs5yJRlQQF9kj jI1YqFz3B0M+gW1o6EjXjTKvg9gC5hFD0/c1OL3Gbh6W0qHFQxo1aj4TMDY18AtSUf+s 5Ua+8tyVlDtLHSI9aB6L5pyuU/5xg4sWr2NuZyAyZuYP0bDtMjW9bzxGonieULW7537s 4uSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=krUQi+FE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r1si1731501ybb.431.2019.02.14.11.28.22 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:28:22 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=krUQi+FE; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53829 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMgH-0007zR-NO for patch@linaro.org; Thu, 14 Feb 2019 14:28:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54126) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLM-00084m-BA for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004uw-Fc for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:44 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:37980) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLK-0004pk-6B for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wm1-x335.google.com with SMTP id v26so7193667wmh.3 for ; Thu, 14 Feb 2019 11:06:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ItoIWJSLTWhZc+TWj+rE0hUaiKW9Jpri7JbnOdoOS5g=; b=krUQi+FEsvQY5LizMSO2zxLWd4zi0j+HqGRTU0GFNHeFWgiIDeWXr9MlY6SqPcC66G yv98ku5OOsSV89HzRS4hyaCy8rdso8dFm7qE26AMYPzuWIukXK1vjFr2q4tifdqI7LzJ xeiEL4joHsZ+8egp6ZPJIsnn2yCSwWOLDGdF24diTu9InocUYc8qfwtEehnk83jm0xeO z22mpaIg5DE9R3zgAHf7lKlZgnah3aCbwgTLDTM8kCYxF5bE0gpTDnaPQ5Vnahrvhz77 u28x8BDxCi7f9wA0Kc1dhwkZAnfoiCSMhFZ5jKSs8nsG06pmNTHWvDYgh3H8OorEtvVl pXPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ItoIWJSLTWhZc+TWj+rE0hUaiKW9Jpri7JbnOdoOS5g=; b=K4O9lmzTidaJ1FVzb10aqy2+N6hQE1+dh2tEbgpDHn9sfez/BUnmpCD57ZXpHU5zsd OSvLshqAYYrRZvGE/kDMzWry7nnG2fXr3a+7j+BylKkm29uoBtHO0cTbitV954l3JX6r mKZzPvygKGkC9pmIAbKsGdUYTfEtnub5KjuxS7MmqfrrKLAUv30DRLvXcihZZBGj7/Vz y0XqX8bJLbCbbmOBsTixLGQzr2cuCpav1b80A/7FAxWNSEL22+6q5hEDEcTI6/+J3xxS cIJ7h95VAiu4oLIoYzvwJ8OOaFhy3gl64MAsoKBe16r/v1bcbcIdNoqofNVXhC0cLAsl KLBA== X-Gm-Message-State: AHQUAuZOsWVLnM39cY038iniIfjSOSyT0+B8wXl6Sr0RQI+neWqTwk9K VqzXWHGpHouT13d3RMtdIQU/6PBkHOoRuA== X-Received: by 2002:a7b:c214:: with SMTP id x20mr3660463wmi.62.1550171194548; Thu, 14 Feb 2019 11:06:34 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:33 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:06:00 +0000 Message-Id: <20190214190603.25030-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::335 Subject: [Qemu-devel] [PULL 24/27] target/arm: Split out FPSCR.QC to a vector field X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Change the representation of this field such that it is easy to set from vector code. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-11-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpu.h | 5 ++++- target/arm/helper.c | 19 +++++++++++++++---- target/arm/neon_helper.c | 2 +- target/arm/vec_helper.c | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index bfc05c796a5..84ae6849c2f 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -577,11 +577,13 @@ typedef struct CPUARMState { ARMPredicateReg preg_tmp; #endif - uint32_t xregs[16]; /* We store these fpcsr fields separately for convenience. */ + uint32_t qc[4] QEMU_ALIGNED(16); int vec_len; int vec_stride; + uint32_t xregs[16]; + /* Scratch space for aa32 neon expansion. */ uint32_t scratch[8]; @@ -1427,6 +1429,7 @@ void vfp_set_fpscr(CPUARMState *env, uint32_t val); #define FPCR_FZ16 (1 << 19) /* ARMv8.2+, FP16 flush-to-zero */ #define FPCR_FZ (1 << 24) /* Flush-to-zero enable bit */ #define FPCR_DN (1 << 25) /* Default NaN enable bit */ +#define FPCR_QC (1 << 27) /* Cumulative saturation bit */ static inline uint32_t vfp_get_fpsr(CPUARMState *env) { diff --git a/target/arm/helper.c b/target/arm/helper.c index d4b7eca30a7..55e9b77bb10 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -12704,8 +12704,7 @@ static inline int vfp_exceptbits_from_host(int host_bits) uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env) { - int i; - uint32_t fpscr; + uint32_t i, fpscr; fpscr = env->vfp.xregs[ARM_VFP_FPSCR] | (env->vfp.vec_len << 16) @@ -12716,8 +12715,11 @@ uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env) /* FZ16 does not generate an input denormal exception. */ i |= (get_float_exception_flags(&env->vfp.fp_status_f16) & ~float_flag_input_denormal); - fpscr |= vfp_exceptbits_from_host(i); + + i = env->vfp.qc[0] | env->vfp.qc[1] | env->vfp.qc[2] | env->vfp.qc[3]; + fpscr |= i ? FPCR_QC : 0; + return fpscr; } @@ -12764,10 +12766,19 @@ void HELPER(vfp_set_fpscr)(CPUARMState *env, uint32_t val) * (which are stored in fp_status), and the other RES0 bits * in between, then we clear all of the low 16 bits. */ - env->vfp.xregs[ARM_VFP_FPSCR] = val & 0xffc80000; + env->vfp.xregs[ARM_VFP_FPSCR] = val & 0xf7c80000; env->vfp.vec_len = (val >> 16) & 7; env->vfp.vec_stride = (val >> 20) & 3; + /* + * The bit we set within fpscr_q is arbitrary; the register as a + * whole being zero/non-zero is what counts. + */ + env->vfp.qc[0] = val & FPCR_QC; + env->vfp.qc[1] = 0; + env->vfp.qc[2] = 0; + env->vfp.qc[3] = 0; + changed ^= val; if (changed & (3 << 22)) { i = (val >> 22) & 3; diff --git a/target/arm/neon_helper.c b/target/arm/neon_helper.c index 3249005b627..ed1c6fc41ce 100644 --- a/target/arm/neon_helper.c +++ b/target/arm/neon_helper.c @@ -15,7 +15,7 @@ #define SIGNBIT (uint32_t)0x80000000 #define SIGNBIT64 ((uint64_t)1 << 63) -#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] |= CPSR_Q +#define SET_QC() env->vfp.qc[0] = 1 #define NEON_TYPE1(name, type) \ typedef struct \ diff --git a/target/arm/vec_helper.c b/target/arm/vec_helper.c index 37f338732e3..65a18af4e0d 100644 --- a/target/arm/vec_helper.c +++ b/target/arm/vec_helper.c @@ -36,7 +36,7 @@ #define H4(x) (x) #endif -#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] |= CPSR_Q +#define SET_QC() env->vfp.qc[0] = 1 static void clear_tail(void *vd, uintptr_t opr_sz, uintptr_t max_sz) { From patchwork Thu Feb 14 19:06:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158448 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1771020jaa; Thu, 14 Feb 2019 11:32:39 -0800 (PST) X-Google-Smtp-Source: AHgI3IaQot4+1Pm4is4PO+cag+e6Nm2QbjSHEoZRVSQULBzJDN2iZjvLcghc7khO8fWaMP1Z+34n X-Received: by 2002:a81:12d4:: with SMTP id 203mr4833376yws.0.1550172758997; Thu, 14 Feb 2019 11:32:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172758; cv=none; d=google.com; s=arc-20160816; b=o+Cr4uZzmNyc/dKtt0VOHrnEKljcGIg7f8DaxiTInMoXIM5EJcdu7elazaABIxgYND lWj7ih+cANi4S5L+LY8QmmMc7ksLycu3uUwXcAZ0cmQV4/l+oq+uJV3vFA9+G36Y/fVa NUf4PaS411k3xTeu0b2sgl8ETsJBvlop1pOtNxTcp+7bQX9yjiq/naDvCfq9W8UQ7rPQ 5XnTn786KB2S/yU0pHcC4XBMmstcu7ir+srruIOLFWqcsUzdAstqilbDfl6HCau+WXd2 X8hW+UCWPugzCByis40ZpYhtKcmr3qJE1xXJ5tk538HfED2/sy2vZPV6i6NiRn+vowSl mIgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=pAH5RvaaDpNKXuJtiqsac+GxYdy8wQfGvFsnmIHSW9c=; b=Fnc6UtL3j2c2RnoE6wtS3c3YN9wtrhDE972AE3usDkVQkIp82VTmcMarwunagi8TRp EqLFLfxjxRHj6SBL6BUXrneyPcF0bBwVHW6NxLC6PUmXcg/ISvd2PMeImHBxNAcpELww 34vf30xvwwSviLPZleDG5XbbOeIg8+KVj6SPbRnf0PxSO++7+9g2WLLUE0RoqC01RdN/ LDT+ZuZnJ+AYtu6MXw4dczEY8tO3XZjA7MEQmUvHToNBOSxCNrK5FqZksb9fwMvJ84e7 GQNU88alivISsjFbOaD6ARzuQvgNFbKtWgMPKOiXR45UDidZmfgya9RL3JiksIQ2RKV3 Qidw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="pV8EhQ/c"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h4si2019036ybk.106.2019.02.14.11.32.38 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:32:38 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="pV8EhQ/c"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53914 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMkQ-0002n1-Ek for patch@linaro.org; Thu, 14 Feb 2019 14:32:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLN-00085f-6i for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLJ-0004u4-VX for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:34790) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLH-0004qd-UW for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:41 -0500 Received: by mail-wr1-x432.google.com with SMTP id f14so7752615wrg.1 for ; Thu, 14 Feb 2019 11:06:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=pAH5RvaaDpNKXuJtiqsac+GxYdy8wQfGvFsnmIHSW9c=; b=pV8EhQ/ckF7uX5Usq7dWXGNd8s8KA/ESIaR0tIDoPUtX881KD3rMQVE9Twh8tsv0CO rK7Mr9pffV1Ht76aZ2SfI5YBq4VJlXgC9uG+LkpJqkwdG+d44mg1NNw39XHGoJ+R9ikn lr43g1jzBpl/ZzhJVq8AUX1SAaNgk2gkCyF+YU7JYglN8UO0I3J5W/gfakotCfYC0oaL Y/TjjWbGVZAAHfkkVgYVuH/HrA8K2OaxccyZK18iOWCQX6iig0HP1QjbHSzqPsXkOuWh cmuE+iYKTUHWDeo3h+iPCBXSB486rmyvtpV/EUoizVWEEVu+j/WRLGL0xQZjgeP8pga1 dujA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pAH5RvaaDpNKXuJtiqsac+GxYdy8wQfGvFsnmIHSW9c=; b=qkl5h2eLqW8E51q0pKpn6kcvkfOD6gkuI8xiAnf+UvFjpKPczSvUBbqO8zH3OHoJ/l wYD0GxasxwEUJNkKd6jhdrT1UkswJmL93Bq42Uxv3eerW9tEJFmLl3g8ULYjFqhTf8T3 gDdfp5Ed6V57GSzHuvF+RQ+nys1wzGArVMZYmXlfBjPAaNTcssCSJHkM4c8Efr4sklS4 yu505hFmsPzu85WI8fKZJMS8IPgqhHYWvAyh4EJL+FeWEJEGgg4ZMYK+aL11szVOkypL cYzMtfzNPsYCuHJNljDvcRjpXo1HQcYJiimiA1FT7W5lkTkZiXvQmJIz3QTE/wxKnblf JKQA== X-Gm-Message-State: AHQUAuZBnQ9OA3XoqnQjNhP81XXH5jUU75aAezs1CUZSRXyNc1dJkNan WMVOXZa1Ud6Pk0qL1Tf0hhdSvjwRd32TiA== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3928859wre.215.1550171195954; Thu, 14 Feb 2019 11:06:35 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:35 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:06:01 +0000 Message-Id: <20190214190603.25030-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::432 Subject: [Qemu-devel] [PULL 25/27] target/arm: Use vector operations for saturation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson For same-sign saturation, we have tcg vector operations. We can compute the QC bit by comparing the saturated value against the unsaturated value. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-12-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.h | 33 +++++++ target/arm/translate.h | 4 + target/arm/translate-a64.c | 36 ++++---- target/arm/translate.c | 172 +++++++++++++++++++++++++++++++------ target/arm/vec_helper.c | 130 ++++++++++++++++++++++++++++ 5 files changed, 331 insertions(+), 44 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.h b/target/arm/helper.h index 9874c35ea97..923e8e15255 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -641,6 +641,39 @@ DEF_HELPER_FLAGS_6(gvec_fmla_idx_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(gvec_fmla_idx_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqadd_b, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqadd_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqadd_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqadd_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqadd_b, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqadd_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqadd_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqadd_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqsub_b, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqsub_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqsub_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_uqsub_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqsub_b, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqsub_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqsub_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_sqsub_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) + #ifdef TARGET_AARCH64 #include "helper-a64.h" #include "helper-sve.h" diff --git a/target/arm/translate.h b/target/arm/translate.h index 17748ddfb9d..f25fe756859 100644 --- a/target/arm/translate.h +++ b/target/arm/translate.h @@ -214,6 +214,10 @@ extern const GVecGen2i ssra_op[4]; extern const GVecGen2i usra_op[4]; extern const GVecGen2i sri_op[4]; extern const GVecGen2i sli_op[4]; +extern const GVecGen4 uqadd_op[4]; +extern const GVecGen4 sqadd_op[4]; +extern const GVecGen4 uqsub_op[4]; +extern const GVecGen4 sqsub_op[4]; void gen_cmtst_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b); /* diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index bd9a1d09e72..dbce24fe32c 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -10952,6 +10952,22 @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn) } switch (opcode) { + case 0x01: /* SQADD, UQADD */ + tcg_gen_gvec_4(vec_full_reg_offset(s, rd), + offsetof(CPUARMState, vfp.qc), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + is_q ? 16 : 8, vec_full_reg_size(s), + (u ? uqadd_op : sqadd_op) + size); + return; + case 0x05: /* SQSUB, UQSUB */ + tcg_gen_gvec_4(vec_full_reg_offset(s, rd), + offsetof(CPUARMState, vfp.qc), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + is_q ? 16 : 8, vec_full_reg_size(s), + (u ? uqsub_op : sqsub_op) + size); + return; case 0x0c: /* SMAX, UMAX */ if (u) { gen_gvec_fn3(s, is_q, rd, rn, rm, tcg_gen_gvec_umax, size); @@ -11047,16 +11063,6 @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn) genfn = fns[size][u]; break; } - case 0x1: /* SQADD, UQADD */ - { - static NeonGenTwoOpEnvFn * const fns[3][2] = { - { gen_helper_neon_qadd_s8, gen_helper_neon_qadd_u8 }, - { gen_helper_neon_qadd_s16, gen_helper_neon_qadd_u16 }, - { gen_helper_neon_qadd_s32, gen_helper_neon_qadd_u32 }, - }; - genenvfn = fns[size][u]; - break; - } case 0x2: /* SRHADD, URHADD */ { static NeonGenTwoOpFn * const fns[3][2] = { @@ -11077,16 +11083,6 @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn) genfn = fns[size][u]; break; } - case 0x5: /* SQSUB, UQSUB */ - { - static NeonGenTwoOpEnvFn * const fns[3][2] = { - { gen_helper_neon_qsub_s8, gen_helper_neon_qsub_u8 }, - { gen_helper_neon_qsub_s16, gen_helper_neon_qsub_u16 }, - { gen_helper_neon_qsub_s32, gen_helper_neon_qsub_u32 }, - }; - genenvfn = fns[size][u]; - break; - } case 0x8: /* SSHL, USHL */ { static NeonGenTwoOpFn * const fns[3][2] = { diff --git a/target/arm/translate.c b/target/arm/translate.c index b871a11ba69..c63894527a2 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -6148,6 +6148,142 @@ const GVecGen3 cmtst_op[4] = { .vece = MO_64 }, }; +static void gen_uqadd_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x = tcg_temp_new_vec_matching(t); + tcg_gen_add_vec(vece, x, a, b); + tcg_gen_usadd_vec(vece, t, a, b); + tcg_gen_cmp_vec(TCG_COND_NE, vece, x, x, t); + tcg_gen_or_vec(vece, sat, sat, x); + tcg_temp_free_vec(x); +} + +const GVecGen4 uqadd_op[4] = { + { .fniv = gen_uqadd_vec, + .fno = gen_helper_gvec_uqadd_b, + .opc = INDEX_op_usadd_vec, + .write_aofs = true, + .vece = MO_8 }, + { .fniv = gen_uqadd_vec, + .fno = gen_helper_gvec_uqadd_h, + .opc = INDEX_op_usadd_vec, + .write_aofs = true, + .vece = MO_16 }, + { .fniv = gen_uqadd_vec, + .fno = gen_helper_gvec_uqadd_s, + .opc = INDEX_op_usadd_vec, + .write_aofs = true, + .vece = MO_32 }, + { .fniv = gen_uqadd_vec, + .fno = gen_helper_gvec_uqadd_d, + .opc = INDEX_op_usadd_vec, + .write_aofs = true, + .vece = MO_64 }, +}; + +static void gen_sqadd_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x = tcg_temp_new_vec_matching(t); + tcg_gen_add_vec(vece, x, a, b); + tcg_gen_ssadd_vec(vece, t, a, b); + tcg_gen_cmp_vec(TCG_COND_NE, vece, x, x, t); + tcg_gen_or_vec(vece, sat, sat, x); + tcg_temp_free_vec(x); +} + +const GVecGen4 sqadd_op[4] = { + { .fniv = gen_sqadd_vec, + .fno = gen_helper_gvec_sqadd_b, + .opc = INDEX_op_ssadd_vec, + .write_aofs = true, + .vece = MO_8 }, + { .fniv = gen_sqadd_vec, + .fno = gen_helper_gvec_sqadd_h, + .opc = INDEX_op_ssadd_vec, + .write_aofs = true, + .vece = MO_16 }, + { .fniv = gen_sqadd_vec, + .fno = gen_helper_gvec_sqadd_s, + .opc = INDEX_op_ssadd_vec, + .write_aofs = true, + .vece = MO_32 }, + { .fniv = gen_sqadd_vec, + .fno = gen_helper_gvec_sqadd_d, + .opc = INDEX_op_ssadd_vec, + .write_aofs = true, + .vece = MO_64 }, +}; + +static void gen_uqsub_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x = tcg_temp_new_vec_matching(t); + tcg_gen_sub_vec(vece, x, a, b); + tcg_gen_ussub_vec(vece, t, a, b); + tcg_gen_cmp_vec(TCG_COND_NE, vece, x, x, t); + tcg_gen_or_vec(vece, sat, sat, x); + tcg_temp_free_vec(x); +} + +const GVecGen4 uqsub_op[4] = { + { .fniv = gen_uqsub_vec, + .fno = gen_helper_gvec_uqsub_b, + .opc = INDEX_op_ussub_vec, + .write_aofs = true, + .vece = MO_8 }, + { .fniv = gen_uqsub_vec, + .fno = gen_helper_gvec_uqsub_h, + .opc = INDEX_op_ussub_vec, + .write_aofs = true, + .vece = MO_16 }, + { .fniv = gen_uqsub_vec, + .fno = gen_helper_gvec_uqsub_s, + .opc = INDEX_op_ussub_vec, + .write_aofs = true, + .vece = MO_32 }, + { .fniv = gen_uqsub_vec, + .fno = gen_helper_gvec_uqsub_d, + .opc = INDEX_op_ussub_vec, + .write_aofs = true, + .vece = MO_64 }, +}; + +static void gen_sqsub_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x = tcg_temp_new_vec_matching(t); + tcg_gen_sub_vec(vece, x, a, b); + tcg_gen_sssub_vec(vece, t, a, b); + tcg_gen_cmp_vec(TCG_COND_NE, vece, x, x, t); + tcg_gen_or_vec(vece, sat, sat, x); + tcg_temp_free_vec(x); +} + +const GVecGen4 sqsub_op[4] = { + { .fniv = gen_sqsub_vec, + .fno = gen_helper_gvec_sqsub_b, + .opc = INDEX_op_sssub_vec, + .write_aofs = true, + .vece = MO_8 }, + { .fniv = gen_sqsub_vec, + .fno = gen_helper_gvec_sqsub_h, + .opc = INDEX_op_sssub_vec, + .write_aofs = true, + .vece = MO_16 }, + { .fniv = gen_sqsub_vec, + .fno = gen_helper_gvec_sqsub_s, + .opc = INDEX_op_sssub_vec, + .write_aofs = true, + .vece = MO_32 }, + { .fniv = gen_sqsub_vec, + .fno = gen_helper_gvec_sqsub_d, + .opc = INDEX_op_sssub_vec, + .write_aofs = true, + .vece = MO_64 }, +}; + /* Translate a NEON data processing instruction. Return nonzero if the instruction is invalid. We process data in a mixture of 32-bit and 64-bit chunks. @@ -6331,6 +6467,18 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) } return 0; + case NEON_3R_VQADD: + tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc), + rn_ofs, rm_ofs, vec_size, vec_size, + (u ? uqadd_op : sqadd_op) + size); + break; + + case NEON_3R_VQSUB: + tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc), + rn_ofs, rm_ofs, vec_size, vec_size, + (u ? uqsub_op : sqsub_op) + size); + break; + case NEON_3R_VMUL: /* VMUL */ if (u) { /* Polynomial case allows only P8 and is handled below. */ @@ -6395,24 +6543,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) neon_load_reg64(cpu_V0, rn + pass); neon_load_reg64(cpu_V1, rm + pass); switch (op) { - case NEON_3R_VQADD: - if (u) { - gen_helper_neon_qadd_u64(cpu_V0, cpu_env, - cpu_V0, cpu_V1); - } else { - gen_helper_neon_qadd_s64(cpu_V0, cpu_env, - cpu_V0, cpu_V1); - } - break; - case NEON_3R_VQSUB: - if (u) { - gen_helper_neon_qsub_u64(cpu_V0, cpu_env, - cpu_V0, cpu_V1); - } else { - gen_helper_neon_qsub_s64(cpu_V0, cpu_env, - cpu_V0, cpu_V1); - } - break; case NEON_3R_VSHL: if (u) { gen_helper_neon_shl_u64(cpu_V0, cpu_V1, cpu_V0); @@ -6528,18 +6658,12 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) case NEON_3R_VHADD: GEN_NEON_INTEGER_OP(hadd); break; - case NEON_3R_VQADD: - GEN_NEON_INTEGER_OP_ENV(qadd); - break; case NEON_3R_VRHADD: GEN_NEON_INTEGER_OP(rhadd); break; case NEON_3R_VHSUB: GEN_NEON_INTEGER_OP(hsub); break; - case NEON_3R_VQSUB: - GEN_NEON_INTEGER_OP_ENV(qsub); - break; case NEON_3R_VSHL: GEN_NEON_INTEGER_OP(shl); break; diff --git a/target/arm/vec_helper.c b/target/arm/vec_helper.c index 65a18af4e0d..10f17e4b5cf 100644 --- a/target/arm/vec_helper.c +++ b/target/arm/vec_helper.c @@ -766,3 +766,133 @@ DO_FMLA_IDX(gvec_fmla_idx_s, float32, H4) DO_FMLA_IDX(gvec_fmla_idx_d, float64, ) #undef DO_FMLA_IDX + +#define DO_SAT(NAME, WTYPE, TYPEN, TYPEM, OP, MIN, MAX) \ +void HELPER(NAME)(void *vd, void *vq, void *vn, void *vm, uint32_t desc) \ +{ \ + intptr_t i, oprsz = simd_oprsz(desc); \ + TYPEN *d = vd, *n = vn; TYPEM *m = vm; \ + bool q = false; \ + for (i = 0; i < oprsz / sizeof(TYPEN); i++) { \ + WTYPE dd = (WTYPE)n[i] OP m[i]; \ + if (dd < MIN) { \ + dd = MIN; \ + q = true; \ + } else if (dd > MAX) { \ + dd = MAX; \ + q = true; \ + } \ + d[i] = dd; \ + } \ + if (q) { \ + uint32_t *qc = vq; \ + qc[0] = 1; \ + } \ + clear_tail(d, oprsz, simd_maxsz(desc)); \ +} + +DO_SAT(gvec_uqadd_b, int, uint8_t, uint8_t, +, 0, UINT8_MAX) +DO_SAT(gvec_uqadd_h, int, uint16_t, uint16_t, +, 0, UINT16_MAX) +DO_SAT(gvec_uqadd_s, int64_t, uint32_t, uint32_t, +, 0, UINT32_MAX) + +DO_SAT(gvec_sqadd_b, int, int8_t, int8_t, +, INT8_MIN, INT8_MAX) +DO_SAT(gvec_sqadd_h, int, int16_t, int16_t, +, INT16_MIN, INT16_MAX) +DO_SAT(gvec_sqadd_s, int64_t, int32_t, int32_t, +, INT32_MIN, INT32_MAX) + +DO_SAT(gvec_uqsub_b, int, uint8_t, uint8_t, -, 0, UINT8_MAX) +DO_SAT(gvec_uqsub_h, int, uint16_t, uint16_t, -, 0, UINT16_MAX) +DO_SAT(gvec_uqsub_s, int64_t, uint32_t, uint32_t, -, 0, UINT32_MAX) + +DO_SAT(gvec_sqsub_b, int, int8_t, int8_t, -, INT8_MIN, INT8_MAX) +DO_SAT(gvec_sqsub_h, int, int16_t, int16_t, -, INT16_MIN, INT16_MAX) +DO_SAT(gvec_sqsub_s, int64_t, int32_t, int32_t, -, INT32_MIN, INT32_MAX) + +#undef DO_SAT + +void HELPER(gvec_uqadd_d)(void *vd, void *vq, void *vn, + void *vm, uint32_t desc) +{ + intptr_t i, oprsz = simd_oprsz(desc); + uint64_t *d = vd, *n = vn, *m = vm; + bool q = false; + + for (i = 0; i < oprsz / 8; i++) { + uint64_t nn = n[i], mm = m[i], dd = nn + mm; + if (dd < nn) { + dd = UINT64_MAX; + q = true; + } + d[i] = dd; + } + if (q) { + uint32_t *qc = vq; + qc[0] = 1; + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_uqsub_d)(void *vd, void *vq, void *vn, + void *vm, uint32_t desc) +{ + intptr_t i, oprsz = simd_oprsz(desc); + uint64_t *d = vd, *n = vn, *m = vm; + bool q = false; + + for (i = 0; i < oprsz / 8; i++) { + uint64_t nn = n[i], mm = m[i], dd = nn - mm; + if (nn < mm) { + dd = 0; + q = true; + } + d[i] = dd; + } + if (q) { + uint32_t *qc = vq; + qc[0] = 1; + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_sqadd_d)(void *vd, void *vq, void *vn, + void *vm, uint32_t desc) +{ + intptr_t i, oprsz = simd_oprsz(desc); + int64_t *d = vd, *n = vn, *m = vm; + bool q = false; + + for (i = 0; i < oprsz / 8; i++) { + int64_t nn = n[i], mm = m[i], dd = nn + mm; + if (((dd ^ nn) & ~(nn ^ mm)) & INT64_MIN) { + dd = (nn >> 63) ^ ~INT64_MIN; + q = true; + } + d[i] = dd; + } + if (q) { + uint32_t *qc = vq; + qc[0] = 1; + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_sqsub_d)(void *vd, void *vq, void *vn, + void *vm, uint32_t desc) +{ + intptr_t i, oprsz = simd_oprsz(desc); + int64_t *d = vd, *n = vn, *m = vm; + bool q = false; + + for (i = 0; i < oprsz / 8; i++) { + int64_t nn = n[i], mm = m[i], dd = nn - mm; + if (((dd ^ nn) & (nn ^ mm)) & INT64_MIN) { + dd = (nn >> 63) ^ ~INT64_MIN; + q = true; + } + d[i] = dd; + } + if (q) { + uint32_t *qc = vq; + qc[0] = 1; + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} From patchwork Thu Feb 14 19:06:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158438 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1760950jaa; Thu, 14 Feb 2019 11:21:29 -0800 (PST) X-Google-Smtp-Source: AHgI3IatAeDPcIX1E3azQ9grfx8XJPqVD2H6P0dDTYL9jzVcLp8dQhMlO+jLzAkQKdf4LJbV2wIA X-Received: by 2002:a81:7a50:: with SMTP id v77mr4632383ywc.223.1550172089920; Thu, 14 Feb 2019 11:21:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172089; cv=none; d=google.com; s=arc-20160816; b=d1JureAgcSBJ2KweYw2Fe4Onc6IhuYQcdFeBSZ535kieyvU8fPCqClgWt1CjVwZQLk ioMTtzdo17s7rHO9zd69TG9/A43Pd3OqQfAc3VCt8ygNnA6zXLZnkJmUVaxO4hZNzNM+ kFsFqc0eclgzaWRBl1ze2mYjEGM4Sor5opEEL9oXavzacLAIcLFD0m2Hh9BbYn2z7863 qQiOnwHSLu3w2AcF/ssulx5xBpDP+B3Ah6tCM5za7WpXK4hkDf+eDPLrdSBh1T28Z14T jwpxx1tcw67RjgvyBHpzINiDYYHXn7jevzsVgqIRW+ElNmCsEleuKTiPf0FAMHvMVUNH jhlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=mmlHC2zJ/DC0plaS1W5nuN0gHj6Tv9R6mzg16ae3+A0=; b=HWuSQzYCGyA2B6EFK+uhnGliPqWlzxvl5R543SLbxctb76A+Qn7wc/PhmIpPns/eLz QoUYytMKKl+h3WswwQ4Ha+ZXrwM7NgYSAVQgIx4FBqK/FV16yxRIYn+0R07BGwwJf61K mheygY0BEAgs0vOp6WB6hymEcEF49VYJeUQgvBC9izLTQGIk5lbI6pN1IFRWXRmqEbxv uM2S45oK469RTJMueI0sQQhWAayehHWw4Fj7qHIXMyR3s2tGEX/DHaKnhxr+O0xMmc0U yvbA3wfZ9FyCUTLQnpwUtvqbnF5xqH8zNejtE7GC3FayzgoYWBYYz3nMvHulAXlqM18I sGDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=HG+GhASJ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g124si2012888ywa.179.2019.02.14.11.21.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:21:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=HG+GhASJ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53719 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMZd-00028E-E3 for patch@linaro.org; Thu, 14 Feb 2019 14:21:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54082) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLL-00084H-If for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004uZ-Bf for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]:38802) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLJ-0004qr-WA for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wr1-x436.google.com with SMTP id v13so7709922wrw.5 for ; Thu, 14 Feb 2019 11:06:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=mmlHC2zJ/DC0plaS1W5nuN0gHj6Tv9R6mzg16ae3+A0=; b=HG+GhASJv0mrh+Oxr+V0aveVj5FjR1hzt6IZH8dCErV58jJS2EJlUbVdMFrbk3jdWN zb+4RT65oOHBqV1LlJAvRJJZsuFmEFbShXKiDt/1FUkLhH1BrfYd1LQ8WAA3nMRGWFPn KIdE0WcTpqQC3LBTmuLnc96BmlxeQSBDh+3xodAkPW0IEPMa2wGNAIQFbUvSeddTSkWa EBzJn+FMEqtTQ/ipvfjKIVnLYDyMfwfQVV/d3Iq3N8S6lraqZ3EtOqs5Ogp79pk8HgKD uAb7Ug2Kt8/qG7dUAm46oM8/w6Q0qh5k1cMdwAbsd11+V6NxhQnAu5/t5RtW5vWn8fTs Lp7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mmlHC2zJ/DC0plaS1W5nuN0gHj6Tv9R6mzg16ae3+A0=; b=e0z5odVMBjlVzIo1OA6ejcm9Mlb7KRgLLn1PZXy20fZIdxVkDtYhjHAl0jrjb3BQpt YHIHHGZi3+hXQVzLDtccBjIH1hwfOdYhdbonSOKCSl4MArP//WUPrUFFdMIkCN/lIthi XS/5f+tEaJL06Uuncy42D7yxcZs6uCqBRjmb5z8a9XLRTPyAFxrsr7nF+OT+2n7954An 0mXMttC4BLOYeAdQo/ZiEnskNGT0CRYfqCUIUA77Eta6ZXpFz+R1GlVVQS8xXqxuDiqT jT4HyLQBrSTeuxMDjXpVQatmUAoiuzOKqVSHojeiMd0GZfqvp/FGdJzKYyApWidz3rUi Squw== X-Gm-Message-State: AHQUAuZT49ds0cusOqqbeUEtZzZ2/z645sbDlN94Ld6oScEmxB3+PFNq KjrvUMlfab6IgfEnb6zuHAsGyYcBApYuvA== X-Received: by 2002:adf:eb48:: with SMTP id u8mr3966598wrn.198.1550171196938; Thu, 14 Feb 2019 11:06:36 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:36 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:06:02 +0000 Message-Id: <20190214190603.25030-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::436 Subject: [Qemu-devel] [PULL 26/27] target/arm: Add missing clear_tail calls X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Fortunately, the functions affected are so far only called from SVE, so there is no tail to be cleared. But as we convert more of AdvSIMD to gvec, this will matter. Signed-off-by: Richard Henderson Message-id: 20190209033847.9014-13-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/vec_helper.c | 2 ++ 1 file changed, 2 insertions(+) -- 2.20.1 diff --git a/target/arm/vec_helper.c b/target/arm/vec_helper.c index 10f17e4b5cf..dfc635cf9a5 100644 --- a/target/arm/vec_helper.c +++ b/target/arm/vec_helper.c @@ -638,6 +638,7 @@ void HELPER(NAME)(void *vd, void *vn, void *stat, uint32_t desc) \ for (i = 0; i < oprsz / sizeof(TYPE); i++) { \ d[i] = FUNC(n[i], stat); \ } \ + clear_tail(d, oprsz, simd_maxsz(desc)); \ } DO_2OP(gvec_frecpe_h, helper_recpe_f16, float16) @@ -688,6 +689,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, void *stat, uint32_t desc) \ for (i = 0; i < oprsz / sizeof(TYPE); i++) { \ d[i] = FUNC(n[i], m[i], stat); \ } \ + clear_tail(d, oprsz, simd_maxsz(desc)); \ } DO_3OP(gvec_fadd_h, float16_add, float16) From patchwork Thu Feb 14 19:06:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158444 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1765069jaa; Thu, 14 Feb 2019 11:26:05 -0800 (PST) X-Google-Smtp-Source: AHgI3Ib7nDeWcwktESmJiwgSdpq7D9jL7EvEt2aHe70UbcYrOKEU1IKfIR7+jZDYUqInr17X8L5k X-Received: by 2002:a81:a48c:: with SMTP id b134mr4790877ywh.462.1550172365442; Thu, 14 Feb 2019 11:26:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172365; cv=none; d=google.com; s=arc-20160816; b=s+EXwW6tLExhnqoZeGi+UKmLIzBtiJQuN0uInU5HJicrgGcqHMPKERD6B4Ty4xJg0C 8bktKeRBmUnqQjSt0C+cPjAFdvTAZhUuGKNVbjGczd1Ml96z3e2XxC8hwJIJjRbs8H1t wioRP83wqdT5yldaqa2FTRPmimDLbEfey2LH3S8jrJeqqiBP6GA+ZQTh7UAg06qlhGnx KPfinko/5O5ze+LEV0CmEt3gQf8rSrLyA8HqHWUgnkOW6cIiTem3RIdv7bvcGDxoIN3a JS+tXnGkOLMwa/u1eISLgiBuYCR7/oCkN3zPMJ90R5ZPrNCquMurVSUFwqnFhbbgnD1H lgCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=cuA1RdS68JNeoUv0kGUH7c6hIlhmzvR7JUXyBHWSCMA=; b=K29zC5Tsad7iVNTfO7Y5Q2cfwvRgrBh3D5st7fdnyl0FeMvNB30qBz40GUsvqoGdPz 9XLFQq15d1AMWwogsPdcNx8IClPiW3LECnXSyq1WwECwIqekevenklLG1GoC/3xbjI8x z4K52aqZUsJprJOhC9YBk6mEL0LLCnBTdXIqQ+t6MMss6Am0XybW83HjkE1xgp02a7tJ LrJ7l3SwRW+daggFauPXmRcnSvKuQzsMxGGmBG6OisR4l7SW5zf/RNBJAzBHK0S6RswA pGafi3sMCOEZvJyr/QwkZsLMwg0TjlfnpB0MlD/tnicBH0nbxEdYsppp6ivJbywhMINh 1g+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="ZPHDgy/S"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h127si848011ywd.378.2019.02.14.11.26.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:26:05 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="ZPHDgy/S"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53800 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMe5-0006FV-0B for patch@linaro.org; Thu, 14 Feb 2019 14:26:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMLL-00084L-VI for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMLK-0004up-DS for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:43 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:40351) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMLK-0004rs-3m for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:42 -0500 Received: by mail-wm1-x344.google.com with SMTP id q21so7181776wmc.5 for ; Thu, 14 Feb 2019 11:06:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=cuA1RdS68JNeoUv0kGUH7c6hIlhmzvR7JUXyBHWSCMA=; b=ZPHDgy/SKzW0BXEqOz5dPJmmfoENtvC1vB03V/N6lmWVWwN7uwxTZ77yPXhDtYTys/ Q6SExUlUDypzChBuP9JuT5T7bYLxl+wFRJYvyQdvM6pjowYT4nBPPbd6lnvIK/Wud/2H QgOLP3B8VXBrfp0iuE12MkfiP+v1LWAbhYALnnDjpZltQ4UuY9jtomkGCxXe0Sw6UaJi bYEfEyAMcCua3//GtuF11KhpAp8E64YmS3tKdjvcIOZJqcBa9oWUO1Nq/79s44aPBi6X 6u+2yMD8TFY+1XbNsLoPXPgP1NoL97TVtyDnFJ4t0vY4pvgRg+g4DEIgghW/3gvcHU7e nmpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cuA1RdS68JNeoUv0kGUH7c6hIlhmzvR7JUXyBHWSCMA=; b=ZtdP/Vc8C5KQZiOdMrTaH42ys7QxqIxpDNIZ8sidU/DtwRi7w9VKdyLZ7yH+ANqXqX 4bWuakfuazxvnfZr8u9dtiT5XvdzqpzQ5t6sa5O1vLQ+8Ixxj33cYsBaT3CJ3py2Hl3/ zmJ5gALdqSxoO0rwtim8DSbN5yZ8BQAjWaHkHJHWakMxBG31Ig8lYAS4lIOP0+q3PFTk sQ+7m6cZig9YhfVBVFlXnD0v+pvLZ3CpQXdAPzVvJijh83gFHSOLlxtvl9qcXuv0iE4U 3GiMHo08y2TfTPjJ5DHAlG0yYs9ftoUvZpvAnuRoXAR8rkYmucrSeKQGIWn3qXFguHAT XvdQ== X-Gm-Message-State: AHQUAuZkbo9OxhzzLUbJyHWHuHni38DGeWNZqLx5F9V57jgZzWx43HEE TR4Y2bkC6jd6NVzxr5DJSVsDCYdVU+c3mw== X-Received: by 2002:a1c:eb0a:: with SMTP id j10mr3786563wmh.115.1550171197967; Thu, 14 Feb 2019 11:06:37 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:37 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:06:03 +0000 Message-Id: <20190214190603.25030-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PULL 27/27] gdbstub: Send a reply to the vKill packet. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Sandra Loosemore Per the GDB remote protocol documentation https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#index-vKill-packet the debug stub is expected to send a reply to the 'vKill' packet. At least some versions of GDB crash if the gdb stub simply exits without sending a reply. This patch fixes QEMU's gdb stub to conform to the expected behavior. Note that QEMU's existing handling of the legacy 'k' packet is correct: in that case GDB does not expect a reply, and QEMU does not send one. Signed-off-by: Sandra Loosemore Message-id: 1550008033-26540-1-git-send-email-sandra@codesourcery.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- gdbstub.c | 1 + 1 file changed, 1 insertion(+) -- 2.20.1 diff --git a/gdbstub.c b/gdbstub.c index ff19579452d..bc774ae9925 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1361,6 +1361,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) break; } else if (strncmp(p, "Kill;", 5) == 0) { /* Kill the target */ + put_packet(s, "OK"); error_report("QEMU: Terminated via GDBstub"); exit(0); } else {