From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171305426428.6942140745982; Thu, 14 Feb 2019 11:08:25 -0800 (PST) Received: from localhost ([127.0.0.1]:53526 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMMn-0000Nd-9v for importer@patchew.org; Thu, 14 Feb 2019 14:08:13 -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) 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) 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-Google-Smtp-Source: AHgI3IauLvqCAN42D0PdbXtNXmw0u/OcbHh6135fww7EzH5EgWPeonhhE8k0hr3/wdc+GU/aBgdvSA== X-Received: by 2002:a5d:4a8a:: with SMTP id o10mr3989534wrq.189.1550171166661; Thu, 14 Feb 2019 11:06:06 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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 =3D g_strdup_printf("PMEVTYPER%d", i); char *pmevtyper_el0_name =3D g_strdup_printf("PMEVTYPER%d_EL0"= , i); ARMCPRegInfo pmev_regs[] =3D { - { .name =3D pmevcntr_name, .cp =3D 15, .crn =3D 15, + { .name =3D pmevcntr_name, .cp =3D 15, .crn =3D 14, .crm =3D 8 | (3 & (i >> 3)), .opc1 =3D 0, .opc2 =3D i & = 7, .access =3D PL0_RW, .type =3D ARM_CP_IO | ARM_CP_ALIAS, .readfn =3D pmevcntr_readfn, .writefn =3D pmevcntr_write= fn, .accessfn =3D pmreg_access }, { .name =3D pmevcntr_el0_name, .state =3D ARM_CP_STATE_AA6= 4, - .opc0 =3D 3, .opc1 =3D 3, .crn =3D 15, .crm =3D 8 | (3 &= (i >> 3)), + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 8 | (3 &= (i >> 3)), .opc2 =3D i & 7, .access =3D PL0_RW, .accessfn =3D pmreg= _access, .type =3D ARM_CP_IO, .readfn =3D pmevcntr_readfn, .writefn =3D pmevcntr_write= fn, .raw_readfn =3D pmevcntr_rawread, .raw_writefn =3D pmevcntr_rawwrite }, - { .name =3D pmevtyper_name, .cp =3D 15, .crn =3D 15, + { .name =3D pmevtyper_name, .cp =3D 15, .crn =3D 14, .crm =3D 12 | (3 & (i >> 3)), .opc1 =3D 0, .opc2 =3D i &= 7, .access =3D PL0_RW, .type =3D ARM_CP_IO | ARM_CP_ALIAS, .readfn =3D pmevtyper_readfn, .writefn =3D pmevtyper_wri= tefn, .accessfn =3D pmreg_access }, { .name =3D pmevtyper_el0_name, .state =3D ARM_CP_STATE_AA= 64, - .opc0 =3D 3, .opc1 =3D 3, .crn =3D 15, .crm =3D 12 | (3 = & (i >> 3)), + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 14, .crm =3D 12 | (3 = & (i >> 3)), .opc2 =3D i & 7, .access =3D PL0_RW, .accessfn =3D pmreg= _access, .type =3D ARM_CP_IO, .readfn =3D pmevtyper_readfn, .writefn =3D pmevtyper_wri= tefn, --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171459824464.65311400285793; Thu, 14 Feb 2019 11:10:59 -0800 (PST) Received: from localhost ([127.0.0.1]:53578 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMPN-0002g4-N3 for importer@patchew.org; Thu, 14 Feb 2019 14:10:53 -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) 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) 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-Google-Smtp-Source: AHgI3Ib4CnjJwHJ4VasPNPRyEaiqU3kXvtsON1A0wakWo64RrJE8TxCHJ9Q+rB5pcoXAiiVKqNwPtQ== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3927642wre.215.1550171167765; 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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(+) 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[] =3D= { .opc0 =3D 3, .opc1 =3D 4, .crn =3D 1, .crm =3D 1, .opc2 =3D 0, .access =3D PL2_RW, .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, + { .name =3D "HACR_EL2", .state =3D ARM_CP_STATE_BOTH, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 1, .crm =3D 1, .opc2 =3D 7, + .access =3D PL2_RW, .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, { .name =3D "ESR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 5, .crm =3D 2, .opc2 =3D 0, .access =3D PL2_RW, @@ -4666,6 +4669,9 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { .cp =3D 15, .opc1 =3D 4, .crn =3D 1, .crm =3D 1, .opc2 =3D 0, .access =3D PL2_RW, .fieldoffset =3D offsetof(CPUARMState, cp15.hcr_= el2), .writefn =3D hcr_writelow }, + { .name =3D "HACR_EL2", .state =3D ARM_CP_STATE_BOTH, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 1, .crm =3D 1, .opc2 =3D 7, + .access =3D PL2_RW, .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, { .name =3D "ELR_EL2", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 4, .crm =3D 0, .opc2 =3D 1, --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171648084181.7795192948106; Thu, 14 Feb 2019 11:14:08 -0800 (PST) Received: from localhost ([127.0.0.1]:53604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMSJ-00057e-O4 for importer@patchew.org; Thu, 14 Feb 2019 14:13:55 -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) 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) 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-Google-Smtp-Source: AHgI3IYisjfI6fCrTX4/8RFWPjEQeVeW8Vhsx7UiFNnJIRpsmCi4U0NzK6hwV8XPBhUjOAApSNOhgQ== X-Received: by 2002:a5d:4fc5:: with SMTP id h5mr3901676wrw.84.1550171169133; Thu, 14 Feb 2019 11:06:09 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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 =3D int128_make128(env->exclusive_high, env->exclusive_val); newv =3D 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(-) 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 =3D int128_make128(env->exclusive_val, env->exclusive_high= ); - Int128 newv =3D int128_make128(new_lo, new_hi); + Int128 cmpv =3D int128_make128(env->exclusive_high, env->exclusive_val= ); + Int128 newv =3D int128_make128(new_hi, new_lo); Int128 oldv; uintptr_t ra =3D GETPC(); uint64_t o0, o1; --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171813499710.7295968636195; Thu, 14 Feb 2019 11:16:53 -0800 (PST) Received: from localhost ([127.0.0.1]:53659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMV8-0007cA-DV for importer@patchew.org; Thu, 14 Feb 2019 14:16:50 -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) 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) 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-Google-Smtp-Source: AHgI3IZF3WoNF5hioEXudE+YvbanTI7x/MfQziZjymu9EicdvgqDnYyuD7iSNxMhIdxwiDI32NLSIg== X-Received: by 2002:a5d:52c3:: with SMTP id r3mr3974840wrv.163.1550171170243; Thu, 14 Feb 2019 11:06:10 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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 i= nsn) tcg_gen_or_i32(tmp, tmp, tmp2); tcg_temp_free_i32(tmp2); gen_vfp_msr(tmp); + dp =3D 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 =3D 0; /* always a single precision result */ break; } case 8: /* cmp */ gen_vfp_cmp(dp); + dp =3D -1; /* no write back */ break; case 9: /* cmpe */ gen_vfp_cmpe(dp); + dp =3D -1; /* no write back */ break; case 10: /* cmpz */ gen_vfp_cmp(dp); + dp =3D -1; /* no write back */ break; case 11: /* cmpez */ gen_vfp_F1_ld0(dp); gen_vfp_cmpe(dp); + dp =3D -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_en= v); - else + } else { gen_helper_vfp_fcvtds(cpu_F0d, cpu_F0s, cpu_en= v); + } + dp =3D !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 =3D 0; /* always an integer result */ break; case 25: /* ftouiz */ gen_vfp_touiz(dp, 0); + dp =3D 0; /* always an integer result */ break; case 26: /* ftosi */ gen_vfp_tosi(dp, 0); + dp =3D 0; /* always an integer result */ break; case 27: /* ftosiz */ gen_vfp_tosiz(dp, 0); + dp =3D 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; } =20 - /* Write back the result. */ - if (op =3D=3D 15 && (rn >=3D 8 && rn <=3D 11)) { - /* Comparison, do nothing. */ - } else if (op =3D=3D 15 && dp && ((rn & 0x1c) =3D=3D 0x18 = || - (rn & 0x1e) =3D=3D 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 =3D=3D 15 && rn =3D=3D 15) { - /* conversion */ - gen_mov_vreg_F0(!dp, rd); - } else { + /* Write back the result, if any. */ + if (dp >=3D 0) { gen_mov_vreg_F0(dp, rd); } =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 155017163145630.0003799702248; Thu, 14 Feb 2019 11:13:51 -0800 (PST) Received: from localhost ([127.0.0.1]:53602 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMS6-0004xN-Ox for importer@patchew.org; Thu, 14 Feb 2019 14:13:42 -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) 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) 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-Google-Smtp-Source: AHgI3IbMw2GYK32FmSmXFKZh5R+JHGnkx24kzR1Ve9JOPXqremS/OczlcWT0qMgUIb9z5qN85PmyTQ== X-Received: by 2002:adf:ecc6:: with SMTP id s6mr4059117wro.144.1550171171465; Thu, 14 Feb 2019 11:06:11 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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, uint= 32_t insn) int type =3D extract32(insn, 22, 2); bool sbit =3D extract32(insn, 29, 1); bool sf =3D extract32(insn, 31, 1); + bool itof =3D false; =20 if (sbit) { - unallocated_encoding(s); - return; + goto do_unallocated; } =20 - if (opcode > 5) { - /* FMOV */ - bool itof =3D opcode & 1; - - if (rmode >=3D 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 =3D extract32(opcode, 1, 1); - - if (rmode !=3D 0 && opcode > 1) { - unallocated_encoding(s); - return; + switch (opcode) { + case 2: /* SCVTF */ + case 3: /* UCVTF */ + itof =3D true; + /* fallthru */ + case 4: /* FCVTAS */ + case 5: /* FCVTAU */ + if (rmode !=3D 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 =3D opcode & 1; + handle_fmov(s, rd, rn, type, itof); + break; + + default: + do_unallocated: + unallocated_encoding(s); + return; + } + break; } } =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172011108362.5774756889067; Thu, 14 Feb 2019 11:20:11 -0800 (PST) Received: from localhost ([127.0.0.1]:53685 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMYB-0001Rp-Ci for importer@patchew.org; Thu, 14 Feb 2019 14:19:59 -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) 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) 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-Google-Smtp-Source: AHgI3IZGGk7YNv/MEWifjp7smoss3QzqXAPRo5QcBmDplgUQF00bytw58GJAFKgedDagGKtEeRZstQ== X-Received: by 2002:a5d:620d:: with SMTP id y13mr3993996wru.119.1550171172537; Thu, 14 Feb 2019 11:06:12 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Alex Benn=C3=A9e 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=C3=A9e 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(-) 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) =20 +/* + * 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 !=3D ARM_CP_STATE_AA32) { int mask =3D 0; switch (r->opc1) { - case 0: case 1: case 2: + case 0: + /* min_EL EL1, but some accessible to EL0 via kernel ABI */ + mask =3D PL0U_R | PL1_RW; + break; + case 1: case 2: /* min_EL EL1 */ mask =3D PL1_RW; break; --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172155656505.63359151074997; Thu, 14 Feb 2019 11:22:35 -0800 (PST) Received: from localhost ([127.0.0.1]:53735 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMad-0003Nx-H4 for importer@patchew.org; Thu, 14 Feb 2019 14:22:31 -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) 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) 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-Google-Smtp-Source: AHgI3IbCPrejLhqIUkqN2LliPZRP+TCYpEgk0FsCO2kTzKAcaQkPWoM8fcn2ffQVEi1Fx36BuD/WSw== X-Received: by 2002:adf:d845:: with SMTP id k5mr4039014wrl.145.1550171173673; Thu, 14 Feb 2019 11:06:13 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Alex Benn=C3=A9e 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=C3=A9e 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(+) 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 encode= d_cp); =20 +/* + * 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 =3D NULL } + +void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *m= ods); + /* 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 =3D cpu->pmceid1 }, REGINFO_SENTINEL }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo v8_user_idregs[] =3D { + { .name =3D "ID_AA64PFR0_EL1", + .exported_bits =3D 0x000f000f00ff0000, + .fixed_bits =3D 0x0000000000000011 }, + { .name =3D "ID_AA64PFR1_EL1", + .exported_bits =3D 0x00000000000000f0 }, + { .name =3D "ID_AA64ZFR0_EL1" }, + { .name =3D "ID_AA64MMFR0_EL1", + .fixed_bits =3D 0x00000000ff000000 }, + { .name =3D "ID_AA64MMFR1_EL1" }, + { .name =3D "ID_AA64DFR0_EL1", + .fixed_bits =3D 0x0000000000000006 }, + { .name =3D "ID_AA64DFR1_EL1" }, + { .name =3D "ID_AA64AFR0_EL1" }, + { .name =3D "ID_AA64AFR1_EL1" }, + { .name =3D "ID_AA64ISAR0_EL1", + .exported_bits =3D 0x00fffffff0fffff0 }, + { .name =3D "ID_AA64ISAR1_EL1", + .exported_bits =3D 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 =3D CP_ANY, .opc2 =3D CP_ANY, .access =3D PL1_W, .type =3D ARM_CP_NOP | ARM_CP_OVERRIDE }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo id_v8_user_midr_cp_reginfo[] =3D { + { .name =3D "MIDR_EL1", + .exported_bits =3D 0x00000000ffffffff }, + { .name =3D "REVIDR_EL1" }, + REGUSERINFO_SENTINEL + }; + modify_arm_cp_regs(id_v8_midr_cp_reginfo, id_v8_user_midr_cp_regin= fo); +#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, } } =20 +/* + * 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 *m= ods) +{ + const ARMCPRegUserSpaceInfo *m; + ARMCPRegInfo *r; + + for (m =3D mods; m->name; m++) { + for (r =3D regs; r->type !=3D ARM_CP_SENTINEL; r++) { + if (strcmp(r->name, m->name) =3D=3D 0) { + r->type =3D ARM_CP_CONST; + r->access =3D PL0U_R; + r->resetvalue &=3D m->exported_bits; + r->resetvalue |=3D m->fixed_bits; + break; + } + } + } +} + const ARMCPRegInfo *get_arm_cp_reginfo(GHashTable *cpregs, uint32_t encode= d_cp) { return g_hash_table_lookup(cpregs, &encoded_cp); --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171306813548.5363456857298; Thu, 14 Feb 2019 11:08:26 -0800 (PST) Received: from localhost ([127.0.0.1]:53528 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMMx-0000Tu-OG for importer@patchew.org; Thu, 14 Feb 2019 14:08:23 -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) 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) 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-Google-Smtp-Source: AHgI3IZldtDTmYHwMshWLuvZ18i0vcNBBpObRdVoevkJ6iKGhLZ/0NLeCi4g/MahUpkCoOEvwi8Bfw== X-Received: by 2002:a1c:2d4c:: with SMTP id t73mr3835471wmt.142.1550171174706; 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Alex Benn=C3=A9e 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=C3=A9e 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(-) 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 A= RMCPRegInfo *ri) return mpidr_read_val(env); } =20 -static const ARMCPRegInfo mpidr_cp_reginfo[] =3D { - { .name =3D "MPIDR", .state =3D ARM_CP_STATE_BOTH, - .opc0 =3D 3, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 5, - .access =3D PL1_R, .readfn =3D mpidr_read, .type =3D ARM_CP_NO_RAW }, - REGINFO_SENTINEL -}; - static const ARMCPRegInfo lpae_cp_reginfo[] =3D { /* NOP AMAIR0/1 */ { .name =3D "AMAIR0", .state =3D ARM_CP_STATE_BOTH, @@ -6451,6 +6444,20 @@ void register_cp_regs_for_features(ARMCPU *cpu) } =20 if (arm_feature(env, ARM_FEATURE_MPIDR)) { + ARMCPRegInfo mpidr_cp_reginfo[] =3D { + { .name =3D "MPIDR_EL1", .state =3D ARM_CP_STATE_BOTH, + .opc0 =3D 3, .crn =3D 0, .crm =3D 0, .opc1 =3D 0, .opc2 =3D = 5, + .access =3D PL1_R, .readfn =3D mpidr_read, .type =3D ARM_CP_= NO_RAW }, + REGINFO_SENTINEL + }; +#ifdef CONFIG_USER_ONLY + ARMCPRegUserSpaceInfo mpidr_user_cp_reginfo[] =3D { + { .name =3D "MPIDR_EL1", + .fixed_bits =3D 0x0000000080000000 }, + REGUSERINFO_SENTINEL + }; + modify_arm_cp_regs(mpidr_cp_reginfo, mpidr_user_cp_reginfo); +#endif define_arm_cp_regs(cpu, mpidr_cp_reginfo); } =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172303648490.025241353012; Thu, 14 Feb 2019 11:25:03 -0800 (PST) Received: from localhost ([127.0.0.1]:53756 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMcz-0005An-Jb for importer@patchew.org; Thu, 14 Feb 2019 14:24:57 -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) 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) 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-Google-Smtp-Source: AHgI3IZYf5MfnScLy87ur0rISnH2LVIEcqq1x+qW2UzpRXb0yBRX9NeBXoWWWmNi3SCKKatD8ma5Gg== X-Received: by 2002:a1c:1d15:: with SMTP id d21mr3570101wmd.132.1550171175897; 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Alex Benn=C3=A9e 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=C3=A9e 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(-) 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; =20 + /* Is the name actually a glob pattern */ + bool is_glob; + /* Only some bits are exported to user space */ uint64_t exported_bits; =20 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 =3D 0x0000000000000011 }, { .name =3D "ID_AA64PFR1_EL1", .exported_bits =3D 0x00000000000000f0 }, + { .name =3D "ID_AA64PFR*_EL1_RESERVED", + .is_glob =3D true }, { .name =3D "ID_AA64ZFR0_EL1" }, { .name =3D "ID_AA64MMFR0_EL1", .fixed_bits =3D 0x00000000ff000000 }, { .name =3D "ID_AA64MMFR1_EL1" }, + { .name =3D "ID_AA64MMFR*_EL1_RESERVED", + .is_glob =3D true }, { .name =3D "ID_AA64DFR0_EL1", .fixed_bits =3D 0x0000000000000006 }, { .name =3D "ID_AA64DFR1_EL1" }, - { .name =3D "ID_AA64AFR0_EL1" }, - { .name =3D "ID_AA64AFR1_EL1" }, + { .name =3D "ID_AA64DFR*_EL1_RESERVED", + .is_glob =3D true }, + { .name =3D "ID_AA64AFR*", + .is_glob =3D true }, { .name =3D "ID_AA64ISAR0_EL1", .exported_bits =3D 0x00fffffff0fffff0 }, { .name =3D "ID_AA64ISAR1_EL1", .exported_bits =3D 0x000000f0ffffffff }, + { .name =3D "ID_AA64ISAR*_EL1_RESERVED", + .is_glob =3D true }, REGUSERINFO_SENTINEL }; modify_arm_cp_regs(v8_idregs, v8_user_idregs); @@ -7020,8 +7028,17 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const AR= MCPRegUserSpaceInfo *mods) ARMCPRegInfo *r; =20 for (m =3D mods; m->name; m++) { + GPatternSpec *pat =3D NULL; + if (m->is_glob) { + pat =3D g_pattern_spec_new(m->name); + } for (r =3D regs; r->type !=3D ARM_CP_SENTINEL; r++) { - if (strcmp(r->name, m->name) =3D=3D 0) { + if (pat && g_pattern_match_string(pat, r->name)) { + r->type =3D ARM_CP_CONST; + r->access =3D PL0U_R; + r->resetvalue =3D 0; + /* continue */ + } else if (strcmp(r->name, m->name) =3D=3D 0) { r->type =3D ARM_CP_CONST; r->access =3D PL0U_R; r->resetvalue &=3D m->exported_bits; @@ -7029,6 +7046,9 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARM= CPRegUserSpaceInfo *mods) break; } } + if (pat) { + g_pattern_spec_free(pat); + } } } =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172441409147.76599966566027; Thu, 14 Feb 2019 11:27:21 -0800 (PST) Received: from localhost ([127.0.0.1]:53815 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMfD-000735-D9 for importer@patchew.org; Thu, 14 Feb 2019 14:27:15 -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) 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) 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-Google-Smtp-Source: AHgI3IbTOkxAqvHZTo31oG5zUj9tvrx4aVhM5RxL7/F7RT7SI69DwtlVY9TA008+Bd45Npzufiq5WA== X-Received: by 2002:a7b:cc03:: with SMTP id f3mr3661137wmh.95.1550171177059; Thu, 14 Feb 2019 11:06:17 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Alex Benn=C3=A9e 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=C3=A9e 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(+) 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) =20 hwcaps |=3D ARM_HWCAP_A64_FP; hwcaps |=3D ARM_HWCAP_A64_ASIMD; + hwcaps |=3D ARM_HWCAP_A64_CPUID; =20 /* probe for the extra features */ #define GET_FEATURE_ID(feat, hwcap) \ --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171332937235.62813839247826; Thu, 14 Feb 2019 11:08:52 -0800 (PST) Received: from localhost ([127.0.0.1]:53530 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMNL-0000pj-Pc for importer@patchew.org; Thu, 14 Feb 2019 14:08:47 -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) 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) 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-Google-Smtp-Source: AHgI3IZhkN1g0dnSXIt85DEFJ/N/0PtcUWhy0eDZVHE+/9iiagvde/gztPl1XPim/9VTMt2nQwcDUA== X-Received: by 2002:a7b:c04e:: with SMTP id u14mr3865515wmc.113.1550171178571; Thu, 14 Feb 2019 11:06:18 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) 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=C3=A9e Tested-by: Alex Benn=C3=A9e 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(-) 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); =20 #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 *r= i) return true; } =20 -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 =3D 0; i < cpu->cpreg_array_len; i++) { uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg_indexes[i]); const ARMCPRegInfo *ri; + uint64_t newval; =20 ri =3D 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] =3D read_raw_cp_reg(&cpu->env, ri); + + newval =3D 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 mu= st + * have made in write_list_to_cpustate() read back OK" here. + */ + uint64_t oldval =3D cpu->cpreg_values[i]; + + if (oldval =3D=3D newval) { + continue; + } + + write_raw_cp_reg(&cpu->env, ri, oldval); + if (read_raw_cp_reg(&cpu->env, ri) !=3D oldval) { + continue; + } + + write_raw_cp_reg(&cpu->env, ri, newval); + } + cpu->cpreg_values[i] =3D 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; } =20 - /* 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; } =20 + 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(); } --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171478010779.4424644852257; Thu, 14 Feb 2019 11:11:18 -0800 (PST) Received: from localhost ([127.0.0.1]:53582 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMPi-0002xD-0Q for importer@patchew.org; Thu, 14 Feb 2019 14:11:14 -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) 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) 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-Google-Smtp-Source: AHgI3IZRMJ9nXdqfG444ucsTMgDQLzvMWASqCBTFCdh5Ncj+qb9jNID9t+uaVgLGClQipocSLc3aVg== X-Received: by 2002:a1c:be11:: with SMTP id o17mr3821698wmf.141.1550171179892; Thu, 14 Feb 2019 11:06:19 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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 =20 SSI -M: Peter Crosthwaite M: Alistair Francis S: Maintained F: hw/ssi/* @@ -1356,7 +1354,6 @@ F: tests/m25p80-test.c =20 Xilinx SPI M: Alistair Francis -M: Peter Crosthwaite S: Maintained F: hw/ssi/xilinx_* =20 @@ -1766,7 +1763,6 @@ F: qom/cpu.c F: include/qom/cpu.h =20 Device Tree -M: Peter Crosthwaite M: Alexander Graf S: Maintained F: device_tree.c --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172303972603.370992165909; Thu, 14 Feb 2019 11:25:03 -0800 (PST) Received: from localhost ([127.0.0.1]:53758 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMd1-0005Dr-Sb for importer@patchew.org; Thu, 14 Feb 2019 14:24:59 -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) 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) 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-Google-Smtp-Source: AHgI3IajMw54XACF1ieP7ELwyLSoC6qen4uCWEeAwqHGB3ngw+oxoN9DH3rsp4xliDsS9VYJcgP2wg== X-Received: by 2002:a1c:2457:: with SMTP id k84mr3756550wmk.139.1550171181217; Thu, 14 Feb 2019 11:06:21 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) 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=C3=A9 --- 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(-) 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, hwa= ddr 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 =3D 0; break; @@ -1956,7 +1956,7 @@ static MemTxResult nvic_sysreg_write(void *opaque, hw= addr 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; } --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155017150991283.56115015848764; Thu, 14 Feb 2019 11:11:49 -0800 (PST) Received: from localhost ([127.0.0.1]:53584 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMQA-0003La-Qk for importer@patchew.org; Thu, 14 Feb 2019 14:11:42 -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) 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) 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-Google-Smtp-Source: AHgI3IZnyMhhJugNcNrtIO/gUZChJe68GM9k2oJgTAQFWvDISRzXjsel+NYW2glHVcjb96/XZ/kjtQ== X-Received: by 2002:a1c:2d4c:: with SMTP id t73mr3835793wmt.142.1550171182342; Thu, 14 Feb 2019 11:06:22 -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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) 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=C3=A9 --- hw/arm/armsse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 **er= rp) /* Connect EXP_IRQ/EXP_CPUn_IRQ GPIOs to the NVIC's lines 32 and u= p */ s->exp_irqs[i] =3D g_new(qemu_irq, s->exp_numirq); for (j =3D 0; j < s->exp_numirq; j++) { - s->exp_irqs[i][j] =3D qdev_get_gpio_in(cpudev, i + 32); + s->exp_irqs[i][j] =3D qdev_get_gpio_in(cpudev, j + 32); } if (i =3D=3D 0) { gpioname =3D g_strdup("EXP_IRQ"); --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171648434576.2568467383128; Thu, 14 Feb 2019 11:14:08 -0800 (PST) Received: from localhost ([127.0.0.1]:53606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMSR-0005Cs-Bs for importer@patchew.org; Thu, 14 Feb 2019 14:14:03 -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) 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) 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-Google-Smtp-Source: AHgI3Ia/0sTiJauTw7/KHOqg8ZX9E8vYI3X7dL6dPRFtnmPMfzPBN70XHUUoRtU37L4v7o4f61vnPw== X-Received: by 2002:a1c:1d15:: with SMTP id d21mr3570391wmd.132.1550171183807; Thu, 14 Feb 2019 11:06:23 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Richard Henderson Since we're now handling a =3D=3D 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(-) 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 =3D=3D 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) =20 static bool trans_ORR_zzz(DisasContext *s, arg_rrr_esz *a) { - if (a->rn =3D=3D 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); } =20 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, uin= t32_t insn) tcg_gen_gvec_andc(0, rd_ofs, rn_ofs, rm_ofs, vec_size, vec_size); break; - case 2: - if (rn =3D=3D 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, --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172710448317.0389516694462; Thu, 14 Feb 2019 11:31:50 -0800 (PST) Received: from localhost ([127.0.0.1]:53892 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMjV-0002BS-OJ for importer@patchew.org; Thu, 14 Feb 2019 14:31:41 -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) 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) 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-Google-Smtp-Source: AHgI3IZBYpBw438vrOASMnPVbZPN1G1uMjoDhEKq/Q8dhYa9pX9h18nT/nZs6WC95PU9Y4BkhIVrsw== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3928374wre.215.1550171185043; Thu, 14 Feb 2019 11:06:25 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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) } =20 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 =3D fns[size][u]; break; } - case 0xc: /* SMAX, UMAX */ - { - static NeonGenTwoOpFn * const fns[3][2] =3D { - { 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 =3D fns[size][u]; - break; - } - - case 0xd: /* SMIN, UMIN */ - { - static NeonGenTwoOpFn * const fns[3][2] =3D { - { 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 =3D fns[size][u]; - break; - } case 0xe: /* SABD, UABD */ case 0xf: /* SABA, UABA */ { --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172578163491.9322836241786; Thu, 14 Feb 2019 11:29:38 -0800 (PST) Received: from localhost ([127.0.0.1]:53841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMhQ-0000Sa-5n for importer@patchew.org; Thu, 14 Feb 2019 14:29:32 -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) 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) 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-Google-Smtp-Source: AHgI3IYWq2Fibwct3Hss1h3IOAhEAdFoLHVsRPQ4cphti6w9Enf2TKb11PoV/IfxbfMv8Ia1gwsY2w== X-Received: by 2002:a5d:52c3:: with SMTP id r3mr3975539wrv.163.1550171186332; Thu, 14 Feb 2019 11:06:26 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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, uin= t32_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; } =20 if (size =3D=3D 3) { @@ -6533,12 +6552,6 @@ static int disas_neon_data_insn(DisasContext *s, uin= t32_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; --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172011818473.7489317074161; Thu, 14 Feb 2019 11:20:11 -0800 (PST) Received: from localhost ([127.0.0.1]:53687 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMYD-0001US-I8 for importer@patchew.org; Thu, 14 Feb 2019 14:20:01 -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) 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) 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-Google-Smtp-Source: AHgI3IbRdJhUAHaBLOapnjExeb4VweJDH2NIesWgzo57noRxV0pQ3T8H5HK7ttsfTSYRSQXWPS5jtg== X-Received: by 2002:a1c:eb0a:: with SMTP id j10mr3786140wmh.115.1550171187560; Thu, 14 Feb 2019 11:06:27 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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) } =20 /* 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 =20 #define GEN_NEON_INTEGER_OP_ENV(name) do { \ switch ((size << 1) | u) { \ --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171802760997.4330061659797; Thu, 14 Feb 2019 11:16:42 -0800 (PST) Received: from localhost ([127.0.0.1]:53657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMUu-0007Qk-MI for importer@patchew.org; Thu, 14 Feb 2019 14:16:36 -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) 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) 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-Google-Smtp-Source: AHgI3IY9P3zsfjhl8nVVFvgRKFOSf6hU2sMD4S5nNjbR4ZgmZyw+imlIOxkKuqGchkuRx9YFD++P0w== X-Received: by 2002:a1c:f30d:: with SMTP id q13mr3714366wmq.121.1550171188681; Thu, 14 Feb 2019 11:06:28 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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) =20 -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 =20 #define NEON_FN(dest, src1, src2) dest =3D (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 =20 #define NEON_FN(dest, src1, src2) dest =3D (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) --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171687419632.7005139046162; Thu, 14 Feb 2019 11:14:47 -0800 (PST) Received: from localhost ([127.0.0.1]:53608 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMSs-0005Y8-ST for importer@patchew.org; Thu, 14 Feb 2019 14:14:30 -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) 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) 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-Google-Smtp-Source: AHgI3IaQTRg50gdb0BEh0PvaHwDGDud7nTii20761YNWGfh5YP99garBh+US1/COjwgJGjvqx/Dynw== X-Received: by 2002:a5d:6810:: with SMTP id w16mr3980539wru.62.1550171189820; 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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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 *b= uf, int reg) } switch (reg - nregs) { case 0: env->vfp.xregs[ARM_VFP_FPSID] =3D ldl_p(buf); return 4; - case 1: env->vfp.xregs[ARM_VFP_FPSCR] =3D ldl_p(buf); return 4; + case 1: vfp_set_fpscr(env, ldl_p(buf)); return 4; case 2: env->vfp.xregs[ARM_VFP_FPEXC] =3D ldl_p(buf) & (1 << 30); retu= rn 4; } return 0; --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155017215868044.360255600346136; Thu, 14 Feb 2019 11:22:38 -0800 (PST) Received: from localhost ([127.0.0.1]:53737 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMag-0003R5-MU for importer@patchew.org; Thu, 14 Feb 2019 14:22:34 -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) 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) 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-Google-Smtp-Source: AHgI3IZHK55pDF35WhVvgFS6x62BZun6dldl5IRZ6C1QizuOtnPUvU5tzKLusisYDOCFvjOoTfLPcg== X-Received: by 2002:a5d:458b:: with SMTP id p11mr4112935wrq.22.1550171191104; Thu, 14 Feb 2019 11:06:31 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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, fpri= ntf_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)); } } =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550171822021773.7503199739797; Thu, 14 Feb 2019 11:17:02 -0800 (PST) Received: from localhost ([127.0.0.1]:53661 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMVF-0007hO-W6 for importer@patchew.org; Thu, 14 Feb 2019 14:16:58 -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) 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) 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-Google-Smtp-Source: AHgI3IbiRyFC2IHSQcLMCQc9Uqyh8b9v1gjDTKYx2gEgr1L+b2Ar/sB77wbZdmVX8wmqGV6xGV5rdA== X-Received: by 2002:adf:dd4f:: with SMTP id u15mr3920883wrm.61.1550171192232; Thu, 14 Feb 2019 11:06:32 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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, CPUARMStat= e *env) return float64_sqrt(a, &env->vfp.fp_status); } =20 +static void softfloat_to_vfp_compare(CPUARMState *env, int cmp) +{ + uint32_t flags; + switch (cmp) { + case float_relation_equal: + flags =3D 0x6; + break; + case float_relation_less: + flags =3D 0x8; + break; + case float_relation_greater: + flags =3D 0x2; + break; + case float_relation_unordered: + flags =3D 0x3; + break; + default: + g_assert_not_reached(); + } + env->vfp.xregs[ARM_VFP_FPSCR] =3D + 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 =3D 0x6; break; \ - case -1: flags =3D 0x8; break; \ - case 1: flags =3D 0x2; break; \ - default: case 2: flags =3D 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] =3D (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 =3D 0x6; break; \ - case -1: flags =3D 0x8; break; \ - case 1: flags =3D 0x2; break; \ - default: case 2: flags =3D 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] =3D (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) --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172201274359.4729588803102; Thu, 14 Feb 2019 11:23:21 -0800 (PST) Received: from localhost ([127.0.0.1]:53739 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMbN-0003t9-8S for importer@patchew.org; Thu, 14 Feb 2019 14:23:17 -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) 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) 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-Google-Smtp-Source: AHgI3IYUOFFF1zJ9EIkupjzvg1QuwKKazJe1PgA8vVeYuTcPB9bsRjf37prjj4Z/zbz0tzhdyrztag== X-Received: by 2002:a1c:a5cc:: with SMTP id o195mr1996040wme.67.1550171193411; Thu, 14 Feb 2019 11:06:33 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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; =20 - fpscr =3D (env->vfp.xregs[ARM_VFP_FPSCR] & 0xffc8ffff) + fpscr =3D env->vfp.xregs[ARM_VFP_FPSCR] | (env->vfp.vec_len << 16) | (env->vfp.vec_stride << 20); =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 =3D env->vfp.xregs[ARM_VFP_FPSCR]; =20 /* 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, uint= 32_t val) =20 /* * 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 &=3D ~(FPCR_IDE | FPCR_IXE | FPCR_UFE | FPCR_OFE | FPCR_DZE | FPCR= _IOE); - - changed =3D env->vfp.xregs[ARM_VFP_FPSCR]; - env->vfp.xregs[ARM_VFP_FPSCR] =3D (val & 0xffc8ffff); + env->vfp.xregs[ARM_VFP_FPSCR] =3D val & 0xffc80000; env->vfp.vec_len =3D (val >> 16) & 7; env->vfp.vec_stride =3D (val >> 20) & 3; =20 --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172581608204.42525623388713; Thu, 14 Feb 2019 11:29:41 -0800 (PST) Received: from localhost ([127.0.0.1]:53843 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMhS-0000VC-BB for importer@patchew.org; Thu, 14 Feb 2019 14:29:34 -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) 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) 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-Google-Smtp-Source: AHgI3IZ6jrw+y8M4CP1T9V7efEsjqnGWwk4eQ8WhadSiOTDveHnx+jiuiREBOXvAmaiDyGsA1zXtpg== X-Received: by 2002:a7b:c214:: with SMTP id x20mr3660463wmi.62.1550171194548; Thu, 14 Feb 2019 11:06:34 -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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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 =20 - 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; =20 + uint32_t xregs[16]; + /* Scratch space for aa32 neon expansion. */ uint32_t scratch[8]; =20 @@ -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 */ =20 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) =20 uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env) { - int i; - uint32_t fpscr; + uint32_t i, fpscr; =20 fpscr =3D 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 |=3D (get_float_exception_flags(&env->vfp.fp_status_f16) & ~float_flag_input_denormal); - fpscr |=3D vfp_exceptbits_from_host(i); + + i =3D env->vfp.qc[0] | env->vfp.qc[1] | env->vfp.qc[2] | env->vfp.qc[3= ]; + fpscr |=3D i ? FPCR_QC : 0; + return fpscr; } =20 @@ -12764,10 +12766,19 @@ void HELPER(vfp_set_fpscr)(CPUARMState *env, uint= 32_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] =3D val & 0xffc80000; + env->vfp.xregs[ARM_VFP_FPSCR] =3D val & 0xf7c80000; env->vfp.vec_len =3D (val >> 16) & 7; env->vfp.vec_stride =3D (val >> 20) & 3; =20 + /* + * 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] =3D val & FPCR_QC; + env->vfp.qc[1] =3D 0; + env->vfp.qc[2] =3D 0; + env->vfp.qc[3] =3D 0; + changed ^=3D val; if (changed & (3 << 22)) { i =3D (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) =20 -#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] |=3D CPSR_Q +#define SET_QC() env->vfp.qc[0] =3D 1 =20 #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 =20 -#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] |=3D CPSR_Q +#define SET_QC() env->vfp.qc[0] =3D 1 =20 static void clear_tail(void *vd, uintptr_t opr_sz, uintptr_t max_sz) { --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172837442489.5995540648363; Thu, 14 Feb 2019 11:33:57 -0800 (PST) Received: from localhost ([127.0.0.1]:53921 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMle-0003Mv-0Y for importer@patchew.org; Thu, 14 Feb 2019 14:33:54 -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) 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) 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-Google-Smtp-Source: AHgI3IbBTA/B0S8RBauwZuFqm3uUv8L1SKzo59merahVMe8HOQlxtEa6bA4R9f2mH9k28rW/7dVF3Q== X-Received: by 2002:adf:9d85:: with SMTP id p5mr3928859wre.215.1550171195954; 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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(-) 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) =20 +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); =20 /* 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) } =20 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 =3D fns[size][u]; break; } - case 0x1: /* SQADD, UQADD */ - { - static NeonGenTwoOpEnvFn * const fns[3][2] =3D { - { 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 =3D fns[size][u]; - break; - } case 0x2: /* SRHADD, URHADD */ { static NeonGenTwoOpFn * const fns[3][2] =3D { @@ -11077,16 +11083,6 @@ static void disas_simd_3same_int(DisasContext *s, = uint32_t insn) genfn =3D fns[size][u]; break; } - case 0x5: /* SQSUB, UQSUB */ - { - static NeonGenTwoOpEnvFn * const fns[3][2] =3D { - { 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 =3D fns[size][u]; - break; - } case 0x8: /* SSHL, USHL */ { static NeonGenTwoOpFn * const fns[3][2] =3D { 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] =3D { .vece =3D MO_64 }, }; =20 +static void gen_uqadd_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x =3D 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] =3D { + { .fniv =3D gen_uqadd_vec, + .fno =3D gen_helper_gvec_uqadd_b, + .opc =3D INDEX_op_usadd_vec, + .write_aofs =3D true, + .vece =3D MO_8 }, + { .fniv =3D gen_uqadd_vec, + .fno =3D gen_helper_gvec_uqadd_h, + .opc =3D INDEX_op_usadd_vec, + .write_aofs =3D true, + .vece =3D MO_16 }, + { .fniv =3D gen_uqadd_vec, + .fno =3D gen_helper_gvec_uqadd_s, + .opc =3D INDEX_op_usadd_vec, + .write_aofs =3D true, + .vece =3D MO_32 }, + { .fniv =3D gen_uqadd_vec, + .fno =3D gen_helper_gvec_uqadd_d, + .opc =3D INDEX_op_usadd_vec, + .write_aofs =3D true, + .vece =3D MO_64 }, +}; + +static void gen_sqadd_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x =3D 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] =3D { + { .fniv =3D gen_sqadd_vec, + .fno =3D gen_helper_gvec_sqadd_b, + .opc =3D INDEX_op_ssadd_vec, + .write_aofs =3D true, + .vece =3D MO_8 }, + { .fniv =3D gen_sqadd_vec, + .fno =3D gen_helper_gvec_sqadd_h, + .opc =3D INDEX_op_ssadd_vec, + .write_aofs =3D true, + .vece =3D MO_16 }, + { .fniv =3D gen_sqadd_vec, + .fno =3D gen_helper_gvec_sqadd_s, + .opc =3D INDEX_op_ssadd_vec, + .write_aofs =3D true, + .vece =3D MO_32 }, + { .fniv =3D gen_sqadd_vec, + .fno =3D gen_helper_gvec_sqadd_d, + .opc =3D INDEX_op_ssadd_vec, + .write_aofs =3D true, + .vece =3D MO_64 }, +}; + +static void gen_uqsub_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x =3D 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] =3D { + { .fniv =3D gen_uqsub_vec, + .fno =3D gen_helper_gvec_uqsub_b, + .opc =3D INDEX_op_ussub_vec, + .write_aofs =3D true, + .vece =3D MO_8 }, + { .fniv =3D gen_uqsub_vec, + .fno =3D gen_helper_gvec_uqsub_h, + .opc =3D INDEX_op_ussub_vec, + .write_aofs =3D true, + .vece =3D MO_16 }, + { .fniv =3D gen_uqsub_vec, + .fno =3D gen_helper_gvec_uqsub_s, + .opc =3D INDEX_op_ussub_vec, + .write_aofs =3D true, + .vece =3D MO_32 }, + { .fniv =3D gen_uqsub_vec, + .fno =3D gen_helper_gvec_uqsub_d, + .opc =3D INDEX_op_ussub_vec, + .write_aofs =3D true, + .vece =3D MO_64 }, +}; + +static void gen_sqsub_vec(unsigned vece, TCGv_vec t, TCGv_vec sat, + TCGv_vec a, TCGv_vec b) +{ + TCGv_vec x =3D 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] =3D { + { .fniv =3D gen_sqsub_vec, + .fno =3D gen_helper_gvec_sqsub_b, + .opc =3D INDEX_op_sssub_vec, + .write_aofs =3D true, + .vece =3D MO_8 }, + { .fniv =3D gen_sqsub_vec, + .fno =3D gen_helper_gvec_sqsub_h, + .opc =3D INDEX_op_sssub_vec, + .write_aofs =3D true, + .vece =3D MO_16 }, + { .fniv =3D gen_sqsub_vec, + .fno =3D gen_helper_gvec_sqsub_s, + .opc =3D INDEX_op_sssub_vec, + .write_aofs =3D true, + .vece =3D MO_32 }, + { .fniv =3D gen_sqsub_vec, + .fno =3D gen_helper_gvec_sqsub_d, + .opc =3D INDEX_op_sssub_vec, + .write_aofs =3D true, + .vece =3D 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, uin= t32_t insn) } return 0; =20 + 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, uin= t32_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, ui= nt32_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, ) =20 #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 =3D simd_oprsz(desc); = \ + TYPEN *d =3D vd, *n =3D vn; TYPEM *m =3D vm; = \ + bool q =3D false; = \ + for (i =3D 0; i < oprsz / sizeof(TYPEN); i++) { = \ + WTYPE dd =3D (WTYPE)n[i] OP m[i]; = \ + if (dd < MIN) { = \ + dd =3D MIN; = \ + q =3D true; = \ + } else if (dd > MAX) { = \ + dd =3D MAX; = \ + q =3D true; = \ + } = \ + d[i] =3D dd; = \ + } = \ + if (q) { = \ + uint32_t *qc =3D vq; = \ + qc[0] =3D 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 =3D simd_oprsz(desc); + uint64_t *d =3D vd, *n =3D vn, *m =3D vm; + bool q =3D false; + + for (i =3D 0; i < oprsz / 8; i++) { + uint64_t nn =3D n[i], mm =3D m[i], dd =3D nn + mm; + if (dd < nn) { + dd =3D UINT64_MAX; + q =3D true; + } + d[i] =3D dd; + } + if (q) { + uint32_t *qc =3D vq; + qc[0] =3D 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 =3D simd_oprsz(desc); + uint64_t *d =3D vd, *n =3D vn, *m =3D vm; + bool q =3D false; + + for (i =3D 0; i < oprsz / 8; i++) { + uint64_t nn =3D n[i], mm =3D m[i], dd =3D nn - mm; + if (nn < mm) { + dd =3D 0; + q =3D true; + } + d[i] =3D dd; + } + if (q) { + uint32_t *qc =3D vq; + qc[0] =3D 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 =3D simd_oprsz(desc); + int64_t *d =3D vd, *n =3D vn, *m =3D vm; + bool q =3D false; + + for (i =3D 0; i < oprsz / 8; i++) { + int64_t nn =3D n[i], mm =3D m[i], dd =3D nn + mm; + if (((dd ^ nn) & ~(nn ^ mm)) & INT64_MIN) { + dd =3D (nn >> 63) ^ ~INT64_MIN; + q =3D true; + } + d[i] =3D dd; + } + if (q) { + uint32_t *qc =3D vq; + qc[0] =3D 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 =3D simd_oprsz(desc); + int64_t *d =3D vd, *n =3D vn, *m =3D vm; + bool q =3D false; + + for (i =3D 0; i < oprsz / 8; i++) { + int64_t nn =3D n[i], mm =3D m[i], dd =3D nn - mm; + if (((dd ^ nn) & (nn ^ mm)) & INT64_MIN) { + dd =3D (nn >> 63) ^ ~INT64_MIN; + q =3D true; + } + d[i] =3D dd; + } + if (q) { + uint32_t *qc =3D vq; + qc[0] =3D 1; + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172053119261.5501272055935; Thu, 14 Feb 2019 11:20:53 -0800 (PST) Received: from localhost ([127.0.0.1]:53719 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMYv-00028E-Sq for importer@patchew.org; Thu, 14 Feb 2019 14:20:45 -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) 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) 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-Google-Smtp-Source: AHgI3Ibq6ljerbC/XZX6aQp15l3zOo+1QvkLiKGd4b7HT0tx4blvJuWKRG6dALFkWLRZoB11g8nDnw== X-Received: by 2002:adf:eb48:: with SMTP id u8mr3966598wrn.198.1550171196938; 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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(+) 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, uint3= 2_t desc) \ for (i =3D 0; i < oprsz / sizeof(TYPE); i++) { \ d[i] =3D FUNC(n[i], stat); \ } \ + clear_tail(d, oprsz, simd_maxsz(desc)); \ } =20 DO_2OP(gvec_frecpe_h, helper_recpe_f16, float16) @@ -688,6 +689,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, void *s= tat, uint32_t desc) \ for (i =3D 0; i < oprsz / sizeof(TYPE); i++) { = \ d[i] =3D FUNC(n[i], m[i], stat); = \ } = \ + clear_tail(d, oprsz, simd_maxsz(desc)); = \ } =20 DO_3OP(gvec_fadd_h, float16_add, float16) --=20 2.20.1 From nobody Mon Feb 9 04:04:23 2026 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550172443081901.275676549419; Thu, 14 Feb 2019 11:27:23 -0800 (PST) Received: from localhost ([127.0.0.1]:53817 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMfH-00075x-1y for importer@patchew.org; Thu, 14 Feb 2019 14:27:19 -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) 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) 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-Google-Smtp-Source: AHgI3IabGfZj7OXKOYAg2z+snPiAWKUfNLleIzdS4gwfzzXrmY+tw+QCr40MHB0+6IYdlba7BXLxyA== X-Received: by 2002:a1c:eb0a:: with SMTP id j10mr3786563wmh.115.1550171197967; 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 Content-Transfer-Encoding: quoted-printable 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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(+) 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) =3D=3D 0) { /* Kill the target */ + put_packet(s, "OK"); error_report("QEMU: Terminated via GDBstub"); exit(0); } else { --=20 2.20.1