From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809456; cv=none; d=zoho.com; s=zohoarc; b=jtGfQpagrmhOytsEbQlUjpVuNDSPB+ohfG7bcKzoYbIr3NL3VkFkbVzWZIGnxv5ri9utmHqW/NyWuok1sFuVAIOglN3pj0T7ROIza9N8KP56/r/T7TbnsbT+Y34ZzI8twesFAnwVi8GEn5m3zSZXsi+z7kpjTe2mB3nx1AdXIpg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809456; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/TI4mK10x/uGohRoaKTTXXODiX4sOLe+8x03viKmFL4=; b=YnKDewP6PXNhhU5Ew67j3SyalrCYIqMvkS/1cAKktpFu79teg3mcaDj3z0O6M9xLV9D9CFOD+sL7iti5cisrJu9OIWH04t3lE7wLM5ZcpPHmo9gpMyi/H8skzqzrOCvBwIv4OGCf5V/k7DNlbjY0OQ5bCQqzseOKRtEiVXJsLnI= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809456067273.6297619512385; Fri, 11 Oct 2019 08:57:36 -0700 (PDT) Received: from localhost ([::1]:52806 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxIM-0004DL-Fp for importer@patchew.org; Fri, 11 Oct 2019 11:57:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33527) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGh-0002Br-Ip for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGg-0007X7-4P for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:51 -0400 Received: from mail-yw1-xc42.google.com ([2607:f8b0:4864:20::c42]:42778) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGg-0007Wd-0l for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:50 -0400 Received: by mail-yw1-xc42.google.com with SMTP id i207so3633579ywc.9 for ; Fri, 11 Oct 2019 08:55:49 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/TI4mK10x/uGohRoaKTTXXODiX4sOLe+8x03viKmFL4=; b=yvdgAlh5mY6e46DXQGPJiknSbUkSaJEoRRI7courZU9QGr2rpBShPs/779Kx3GV8X9 koJFprkG+pDHF/+WfKWJF+eEEj7NU1w+SDP/nq1hC//k1U/giNCLV7LKpzUNWpmscghw zQRnB/EflkdeKxPtApFXRkpiutUCQ8fyMFr8Po7YX4tRcHn6hL3nw6wdFeV2VVBDtmRp +V63jsl6M8fr1YeCjkO4fsQuKE0HDL/s+Ye9uAExtz246QQQigUuP0gLldTK7i39avjX qbKepewiMeDY2Qfl6Wt+wOYE+KazjSawZFhsbb+SkybSgbE9queMU6ovKXKac+1wVwpZ URuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/TI4mK10x/uGohRoaKTTXXODiX4sOLe+8x03viKmFL4=; b=Z8kqtadDN2kflUPmbuzh+xwO2Pwy0tcpVYit1zl/+yms+QxBrOYqWEkxxMKB3iBXad 7iGl3g7e4Zb72o50LrxkbO60gwdsibU5bZdBHVWi0GEt+aDz20Qt0H4vgBl9ExjxaCh8 T1TDd4pGTQPbpNJOWyOPMJDoY2d9RZwjuOlTH+vp6VBFwSdOAk8buVNOOyEFctsy0qZE vrxmLLBUt5SnhdR/UmgND3cWSY8R1qzKozO88QyEJ5USoc2/mIJEMUw03Mn3y3KJGqBT ajokeUI7Dm5x9Ltu/kVv3jkAcljkYXMHulDf6+0Z5pzdCyu3k9mxndqSP/pMNmFzGWyx ONCw== X-Gm-Message-State: APjAAAUOEdiCDVn7DwoIKcMLiuXwmiDvYbsRuc1mNDiDbDo0LDZbLLZl qCeYuuWUZfbZZB4Ozh6IHcPG4vXKOUk= X-Google-Smtp-Source: APXvYqyhkNg8aGtzL9k8pvm+U2pZpIHGMco/8w5MSjloaevQpgVfMQ8mFCE0dfXzHZJEotxdzWKmxg== X-Received: by 2002:a0d:d956:: with SMTP id b83mr3096589ywe.68.1570809348858; Fri, 11 Oct 2019 08:55:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 01/20] target/arm: Split out rebuild_hflags_common Date: Fri, 11 Oct 2019 11:55:27 -0400 Message-Id: <20191011155546.14342-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@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: 2607:f8b0:4864:20::c42 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Create a function to compute the values of the TBFLAG_ANY bits that will be cached. For now, the env->hflags variable is not used, and the results are fed back to cpu_get_tb_cpu_state. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- target/arm/cpu.h | 29 ++++++++++++++++++----------- target/arm/helper.c | 26 +++++++++++++++++++------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 297ad5e47a..ad79a6153b 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -231,6 +231,9 @@ typedef struct CPUARMState { uint32_t pstate; uint32_t aarch64; /* 1 if CPU is in aarch64 state; inverse of PSTATE.n= RW */ =20 + /* Cached TBFLAGS state. See below for which bits are included. */ + uint32_t hflags; + /* Frequently accessed CPSR bits are stored separately for efficiency. This contains all the other bits. Use cpsr_{read,write} to access the whole CPSR. */ @@ -3140,15 +3143,18 @@ typedef ARMCPU ArchCPU; =20 #include "exec/cpu-all.h" =20 -/* Bit usage in the TB flags field: bit 31 indicates whether we are +/* + * Bit usage in the TB flags field: bit 31 indicates whether we are * in 32 or 64 bit mode. The meaning of the other bits depends on that. * We put flags which are shared between 32 and 64 bit mode at the top * of the word, and flags which apply to only one mode at the bottom. + * + * Unless otherwise noted, these bits are cached in env->hflags. */ FIELD(TBFLAG_ANY, AARCH64_STATE, 31, 1) FIELD(TBFLAG_ANY, MMUIDX, 28, 3) FIELD(TBFLAG_ANY, SS_ACTIVE, 27, 1) -FIELD(TBFLAG_ANY, PSTATE_SS, 26, 1) +FIELD(TBFLAG_ANY, PSTATE_SS, 26, 1) /* Not cached. */ /* Target EL if we take a floating-point-disabled exception */ FIELD(TBFLAG_ANY, FPEXC_EL, 24, 2) FIELD(TBFLAG_ANY, BE_DATA, 23, 1) @@ -3159,13 +3165,14 @@ FIELD(TBFLAG_ANY, BE_DATA, 23, 1) FIELD(TBFLAG_ANY, DEBUG_TARGET_EL, 21, 2) =20 /* Bit usage when in AArch32 state: */ -FIELD(TBFLAG_A32, THUMB, 0, 1) -FIELD(TBFLAG_A32, VECLEN, 1, 3) -FIELD(TBFLAG_A32, VECSTRIDE, 4, 2) +FIELD(TBFLAG_A32, THUMB, 0, 1) /* Not cached. */ +FIELD(TBFLAG_A32, VECLEN, 1, 3) /* Not cached. */ +FIELD(TBFLAG_A32, VECSTRIDE, 4, 2) /* Not cached. */ /* * We store the bottom two bits of the CPAR as TB flags and handle * checks on the other bits at runtime. This shares the same bits as * VECSTRIDE, which is OK as no XScale CPU has VFP. + * Not cached, because VECLEN+VECSTRIDE are not cached. */ FIELD(TBFLAG_A32, XSCALE_CPAR, 4, 2) /* @@ -3174,15 +3181,15 @@ FIELD(TBFLAG_A32, XSCALE_CPAR, 4, 2) * the same thing as the current security state of the processor! */ FIELD(TBFLAG_A32, NS, 6, 1) -FIELD(TBFLAG_A32, VFPEN, 7, 1) -FIELD(TBFLAG_A32, CONDEXEC, 8, 8) +FIELD(TBFLAG_A32, VFPEN, 7, 1) /* Not cached. */ +FIELD(TBFLAG_A32, CONDEXEC, 8, 8) /* Not cached. */ FIELD(TBFLAG_A32, SCTLR_B, 16, 1) /* For M profile only, set if FPCCR.LSPACT is set */ -FIELD(TBFLAG_A32, LSPACT, 18, 1) +FIELD(TBFLAG_A32, LSPACT, 18, 1) /* Not cached. */ /* For M profile only, set if we must create a new FP context */ -FIELD(TBFLAG_A32, NEW_FP_CTXT_NEEDED, 19, 1) +FIELD(TBFLAG_A32, NEW_FP_CTXT_NEEDED, 19, 1) /* Not cached. */ /* For M profile only, set if FPCCR.S does not match current security stat= e */ -FIELD(TBFLAG_A32, FPCCR_S_WRONG, 20, 1) +FIELD(TBFLAG_A32, FPCCR_S_WRONG, 20, 1) /* Not cached. */ /* For M profile only, Handler (ie not Thread) mode */ FIELD(TBFLAG_A32, HANDLER, 21, 1) /* For M profile only, whether we should generate stack-limit checks */ @@ -3194,7 +3201,7 @@ FIELD(TBFLAG_A64, SVEEXC_EL, 2, 2) FIELD(TBFLAG_A64, ZCR_LEN, 4, 4) FIELD(TBFLAG_A64, PAUTH_ACTIVE, 8, 1) FIELD(TBFLAG_A64, BT, 9, 1) -FIELD(TBFLAG_A64, BTYPE, 10, 2) +FIELD(TBFLAG_A64, BTYPE, 10, 2) /* Not cached. */ FIELD(TBFLAG_A64, TBID, 12, 2) =20 static inline bool bswap_code(bool sctlr_b) diff --git a/target/arm/helper.c b/target/arm/helper.c index 0d9a2d2ab7..8829d91ae1 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11054,6 +11054,22 @@ ARMMMUIdx arm_stage1_mmu_idx(CPUARMState *env) } #endif =20 +static uint32_t rebuild_hflags_common(CPUARMState *env, int fp_el, + ARMMMUIdx mmu_idx, uint32_t flags) +{ + flags =3D FIELD_DP32(flags, TBFLAG_ANY, FPEXC_EL, fp_el); + flags =3D FIELD_DP32(flags, TBFLAG_ANY, MMUIDX, + arm_to_core_mmu_idx(mmu_idx)); + + if (arm_cpu_data_is_big_endian(env)) { + flags =3D FIELD_DP32(flags, TBFLAG_ANY, BE_DATA, 1); + } + if (arm_singlestep_active(env)) { + flags =3D FIELD_DP32(flags, TBFLAG_ANY, SS_ACTIVE, 1); + } + return flags; +} + void cpu_get_tb_cpu_state(CPUARMState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { @@ -11145,7 +11161,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, } } =20 - flags =3D FIELD_DP32(flags, TBFLAG_ANY, MMUIDX, arm_to_core_mmu_idx(mm= u_idx)); + flags =3D rebuild_hflags_common(env, fp_el, mmu_idx, flags); =20 /* The SS_ACTIVE and PSTATE_SS bits correspond to the state machine * states defined in the ARM ARM for software singlestep: @@ -11153,9 +11169,9 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, * 0 x Inactive (the TB flag for SS is always 0) * 1 0 Active-pending * 1 1 Active-not-pending + * SS_ACTIVE is set in hflags; PSTATE_SS is computed every TB. */ - if (arm_singlestep_active(env)) { - flags =3D FIELD_DP32(flags, TBFLAG_ANY, SS_ACTIVE, 1); + if (FIELD_EX32(flags, TBFLAG_ANY, SS_ACTIVE)) { if (is_a64(env)) { if (env->pstate & PSTATE_SS) { flags =3D FIELD_DP32(flags, TBFLAG_ANY, PSTATE_SS, 1); @@ -11166,10 +11182,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, } } } - if (arm_cpu_data_is_big_endian(env)) { - flags =3D FIELD_DP32(flags, TBFLAG_ANY, BE_DATA, 1); - } - flags =3D FIELD_DP32(flags, TBFLAG_ANY, FPEXC_EL, fp_el); =20 if (arm_v7m_is_handler_mode(env)) { flags =3D FIELD_DP32(flags, TBFLAG_A32, HANDLER, 1); --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809479; cv=none; d=zoho.com; s=zohoarc; b=FyRfJwSJOzq9b7kHWj+NR/RWKupvcSTLBSUstTobAd06iwUfGHRuvvBrhBOJt2YnY0AGEvDfHQ39BDj1nVZaR6g4qFq++az//8RaEzI1FgRMESKx0flPHnNZ0JtEj6i69E9vPnL31P7wGI7QSLBjjep+dcbIAu5/QGgtjpYclP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809479; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=65DLYW7/Ow+07Tjw5e+t9xOA5BC0nBNoELJCwewcid4=; b=EvPW/FCT+aisPiyOrCt/pSPpB9hF4H1+cFn71Hj9Nq81nGXHMK0Q0YHwPuOQuwKBAPKu7tJgyTXFtux/7ZPm3JC6mAvruglxGru0l0rk2x5+7LdVa09W6VeP3w8em9t8EMTB8HPSmBzLa6gwdWjpVOeXUrQiiOFPpJ9RM3pexag= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809479297646.6726837330024; Fri, 11 Oct 2019 08:57:59 -0700 (PDT) Received: from localhost ([::1]:52822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxIj-000503-NY for importer@patchew.org; Fri, 11 Oct 2019 11:57:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33575) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGk-0002FM-Q0 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGh-0007YF-Ci for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:54 -0400 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]:36667) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGh-0007Xi-94 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:51 -0400 Received: by mail-yb1-xb41.google.com with SMTP id t4so584258ybk.3 for ; Fri, 11 Oct 2019 08:55:51 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=65DLYW7/Ow+07Tjw5e+t9xOA5BC0nBNoELJCwewcid4=; b=xB8opQP2dG3/FvXwITem/t/Ars+nHM7HXma72cKBb38DmxycOvdsbbVdbHEJvLE5Hc HvJtbBnrvs6Jt8dtkpgGfuW+qP+6s4mZ/AGbt1yMOwA5+dVBOg3onVkcKx1aDiF4g81J Vn9JidJmGsS/Rr+/OlW1D8IJOtd7CqAsFwszqgKyVC8B0YLUA33fm6phpO+K8vI5cD92 9FEfRUEyDFKC2DSCUqD5rNIOBD860fAV/SMjajkH27Uhf31ucGPn0lcd56czqB1wHYkU wCFeZrDznnfI6aV4t1Xc6A5r1DA2LRDojZPdOAUPsiEQHSI64j56QBy9WvZc/FzuIYzK 01bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=65DLYW7/Ow+07Tjw5e+t9xOA5BC0nBNoELJCwewcid4=; b=aqLokq8KHxRm8jtI0Ye63B8QjzUyRXXcgIYTFqYuXBKrQ+gjRRcBlKI+G6FDOsR61V IEkchErMTauBCiKutFevp0C/Z22297B2L4n4Nk+4JYd5YjqwWbGiQmTXbA+9oS9JqXPn 68jBmtXNDQfYdVkdguwxbyCclziLIoBbV5N6OqJc5MpIHehQfVJWZ6PuoEFBem6Wk13s 5KZ6hVIL+eh/BkoiU2l+BLGWhq+ojdmz8SI8T4Cn5bCqw/k2RtqyJEb1kqw5kB1HDAGi 8M9OFyZLfh4Jgv4nATV4A/Oo6k1+Efxxovec2S68e/Bh0OPZHknaCKSjceq38gWFk36t 03Lw== X-Gm-Message-State: APjAAAUiFqT/eGVKxccyuF0i6Tcw98bYVYE3roQhqNe36EjTlxEkM9GD MbsTE5SD1nLVobH4D+Q9a8q4Z2emAiQ= X-Google-Smtp-Source: APXvYqzCCJeCkpiE2KG2E9p6Is7+dBy2m4wAoqJ5H3TDgqh5uWr3k9AitAqZds3B12Z2LOZz/HAVkQ== X-Received: by 2002:a5b:30d:: with SMTP id j13mr10597617ybp.308.1570809350192; Fri, 11 Oct 2019 08:55:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 02/20] target/arm: Split out rebuild_hflags_a64 Date: Fri, 11 Oct 2019 11:55:28 -0400 Message-Id: <20191011155546.14342-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b41 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Create a function to compute the values of the TBFLAG_A64 bits that will be cached. For now, the env->hflags variable is not used, and the results are fed back to cpu_get_tb_cpu_state. Note that not all BTI related flags are cached, so we have to test the BTI feature twice -- once for those bits moved out to rebuild_hflags_a64 and once for those bits that remain in cpu_get_tb_cpu_state. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 131 +++++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 62 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 8829d91ae1..69da04786e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11070,6 +11070,71 @@ static uint32_t rebuild_hflags_common(CPUARMState = *env, int fp_el, return flags; } =20 +static uint32_t rebuild_hflags_a64(CPUARMState *env, int el, int fp_el, + ARMMMUIdx mmu_idx) +{ + ARMMMUIdx stage1 =3D stage_1_mmu_idx(mmu_idx); + ARMVAParameters p0 =3D aa64_va_parameters_both(env, 0, stage1); + uint32_t flags =3D 0; + uint64_t sctlr; + int tbii, tbid; + + flags =3D FIELD_DP32(flags, TBFLAG_ANY, AARCH64_STATE, 1); + + /* FIXME: ARMv8.1-VHE S2 translation regime. */ + if (regime_el(env, stage1) < 2) { + ARMVAParameters p1 =3D aa64_va_parameters_both(env, -1, stage1); + tbid =3D (p1.tbi << 1) | p0.tbi; + tbii =3D tbid & ~((p1.tbid << 1) | p0.tbid); + } else { + tbid =3D p0.tbi; + tbii =3D tbid & !p0.tbid; + } + + flags =3D FIELD_DP32(flags, TBFLAG_A64, TBII, tbii); + flags =3D FIELD_DP32(flags, TBFLAG_A64, TBID, tbid); + + if (cpu_isar_feature(aa64_sve, env_archcpu(env))) { + int sve_el =3D sve_exception_el(env, el); + uint32_t zcr_len; + + /* + * If SVE is disabled, but FP is enabled, + * then the effective len is 0. + */ + if (sve_el !=3D 0 && fp_el =3D=3D 0) { + zcr_len =3D 0; + } else { + zcr_len =3D sve_zcr_len_for_el(env, el); + } + flags =3D FIELD_DP32(flags, TBFLAG_A64, SVEEXC_EL, sve_el); + flags =3D FIELD_DP32(flags, TBFLAG_A64, ZCR_LEN, zcr_len); + } + + sctlr =3D arm_sctlr(env, el); + + if (cpu_isar_feature(aa64_pauth, env_archcpu(env))) { + /* + * In order to save space in flags, we record only whether + * pauth is "inactive", meaning all insns are implemented as + * a nop, or "active" when some action must be performed. + * The decision of which action to take is left to a helper. + */ + if (sctlr & (SCTLR_EnIA | SCTLR_EnIB | SCTLR_EnDA | SCTLR_EnDB)) { + flags =3D FIELD_DP32(flags, TBFLAG_A64, PAUTH_ACTIVE, 1); + } + } + + if (cpu_isar_feature(aa64_bti, env_archcpu(env))) { + /* Note that SCTLR_EL[23].BT =3D=3D SCTLR_BT1. */ + if (sctlr & (el =3D=3D 0 ? SCTLR_BT0 : SCTLR_BT1)) { + flags =3D FIELD_DP32(flags, TBFLAG_A64, BT, 1); + } + } + + return rebuild_hflags_common(env, fp_el, mmu_idx, flags); +} + void cpu_get_tb_cpu_state(CPUARMState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { @@ -11079,67 +11144,9 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, uint32_t flags =3D 0; =20 if (is_a64(env)) { - ARMCPU *cpu =3D env_archcpu(env); - uint64_t sctlr; - *pc =3D env->pc; - flags =3D FIELD_DP32(flags, TBFLAG_ANY, AARCH64_STATE, 1); - - /* Get control bits for tagged addresses. */ - { - ARMMMUIdx stage1 =3D stage_1_mmu_idx(mmu_idx); - ARMVAParameters p0 =3D aa64_va_parameters_both(env, 0, stage1); - int tbii, tbid; - - /* FIXME: ARMv8.1-VHE S2 translation regime. */ - if (regime_el(env, stage1) < 2) { - ARMVAParameters p1 =3D aa64_va_parameters_both(env, -1, st= age1); - tbid =3D (p1.tbi << 1) | p0.tbi; - tbii =3D tbid & ~((p1.tbid << 1) | p0.tbid); - } else { - tbid =3D p0.tbi; - tbii =3D tbid & !p0.tbid; - } - - flags =3D FIELD_DP32(flags, TBFLAG_A64, TBII, tbii); - flags =3D FIELD_DP32(flags, TBFLAG_A64, TBID, tbid); - } - - if (cpu_isar_feature(aa64_sve, cpu)) { - int sve_el =3D sve_exception_el(env, current_el); - uint32_t zcr_len; - - /* If SVE is disabled, but FP is enabled, - * then the effective len is 0. - */ - if (sve_el !=3D 0 && fp_el =3D=3D 0) { - zcr_len =3D 0; - } else { - zcr_len =3D sve_zcr_len_for_el(env, current_el); - } - flags =3D FIELD_DP32(flags, TBFLAG_A64, SVEEXC_EL, sve_el); - flags =3D FIELD_DP32(flags, TBFLAG_A64, ZCR_LEN, zcr_len); - } - - sctlr =3D arm_sctlr(env, current_el); - - if (cpu_isar_feature(aa64_pauth, cpu)) { - /* - * In order to save space in flags, we record only whether - * pauth is "inactive", meaning all insns are implemented as - * a nop, or "active" when some action must be performed. - * The decision of which action to take is left to a helper. - */ - if (sctlr & (SCTLR_EnIA | SCTLR_EnIB | SCTLR_EnDA | SCTLR_EnDB= )) { - flags =3D FIELD_DP32(flags, TBFLAG_A64, PAUTH_ACTIVE, 1); - } - } - - if (cpu_isar_feature(aa64_bti, cpu)) { - /* Note that SCTLR_EL[23].BT =3D=3D SCTLR_BT1. */ - if (sctlr & (current_el =3D=3D 0 ? SCTLR_BT0 : SCTLR_BT1)) { - flags =3D FIELD_DP32(flags, TBFLAG_A64, BT, 1); - } + flags =3D rebuild_hflags_a64(env, current_el, fp_el, mmu_idx); + if (cpu_isar_feature(aa64_bti, env_archcpu(env))) { flags =3D FIELD_DP32(flags, TBFLAG_A64, BTYPE, env->btype); } } else { @@ -11159,9 +11166,9 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, flags =3D FIELD_DP32(flags, TBFLAG_A32, XSCALE_CPAR, env->cp15.c15_cpar); } - } =20 - flags =3D rebuild_hflags_common(env, fp_el, mmu_idx, flags); + flags =3D rebuild_hflags_common(env, fp_el, mmu_idx, flags); + } =20 /* The SS_ACTIVE and PSTATE_SS bits correspond to the state machine * states defined in the ARM ARM for software singlestep: --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809722; cv=none; d=zoho.com; s=zohoarc; b=O7zheCK8an0aYffM9mtSJlLVx2r5snspxusrugd2R10mAYpQ/jlusUulVOrEeS1X3gKa1x11b1Dk9c6OrXZ3213L8rzbqdbcmSRhAeKe70Q7xCNiCmOTRT0fUNu6wB7Zf6BDPdsdBoAUj0IB6QKPMjUQdlcyYfgDOQLMBLU4V0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809722; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=JZ4FcxbCDDWJsqSaXfQWATqqO+tlQqneKyRyH+pvJoM=; b=cZopOEMwDIhdxxKfv/0+UvCH+8hb+y5lzXvhCk+cQ2TrfFNkh0lWYWpQVWdA3oXtkRqFFBZXuvWoChJHGOZgakNpPzZlAi1VUEQYCmYqfqjfo7agzvRyW7Ruk+hj5mBa0CQNVDfSTqoKK/asaJjVYAP7cKTRui1aTeSMTIQF47A= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809722381342.9160267046716; Fri, 11 Oct 2019 09:02:02 -0700 (PDT) Received: from localhost ([::1]:52890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxMZ-0000XZ-IC for importer@patchew.org; Fri, 11 Oct 2019 12:01:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33585) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGl-0002GZ-KF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGj-0007aC-DG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:54 -0400 Received: from mail-yb1-xb42.google.com ([2607:f8b0:4864:20::b42]:37864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGj-0007ZB-9X for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:53 -0400 Received: by mail-yb1-xb42.google.com with SMTP id z125so3257328ybc.4 for ; Fri, 11 Oct 2019 08:55:52 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=JZ4FcxbCDDWJsqSaXfQWATqqO+tlQqneKyRyH+pvJoM=; b=VoKm83e3fCwHAtGn1hsDLYwwFA2FmbBEeuMbI1Wuu/C6nJEnbuJOeozqfZHTgZz0fG KT4A2Gwyamd8MUTe82jS3tbMnjnezUBxRPYzzG1nCFYrc7QpVo5/8RSkITGpYKXx5IDT n7f2NbeOwcxfOTZPJ2oY586SKGWp/w2AiIbmX0filRsQ1i5jngKKkB0j4rjwRHr4xl4y ojDUy4RHKfQbYi9FuvvuZlii37W4Gp1J6vdlz9cgXaA6GlYRYuBJnYhvooEptfAJEMiZ iZb2v1abw/Wdaqh5J04itKQK/TLxgKrUzjEJHSsFvMWM2b2+SiuGy7kBanCAiVaO6iph KTxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=JZ4FcxbCDDWJsqSaXfQWATqqO+tlQqneKyRyH+pvJoM=; b=rKSWgBvtlbd37ad984cvoyKfEGAU/WnAhH8Bdacr0ldUm9T1viBK8rrA1vblM4ELXb K4s4vOxZ+hKqjU3fQ6LUmGtRe+aOd2NDP8jUZAUsU6P+5ROL5DvZd7oLF+zlBxrx9JmK MniRJkNqROQbvstI3SiLSeFeDJTYd5BZO+ldhDc6zyAlrWuqZJHr5gC8wLdBPwAJ9qBO qd/d+GquzEF9levpwE/gRUHZh34MtlXcl1aOSdi3iGcJ7GGMiUORbufkEJFsou28CcGz veHMoRbJfysvSdKdbxQbzS7jSQ57HlP2ZSeN5YqInL+PItnS3rYBQJ9gOBpEuDJHct8k c2mQ== X-Gm-Message-State: APjAAAVGpKzIy291kZvrAOWmI3e6wjLsopYhj/+4isv3VsNG8rXxDCJo RXeFYFKHtD0y3zXirJjd9HlTyBMapN8= X-Google-Smtp-Source: APXvYqwm7E36eHgRIVaDeQwAM1ckqu1T/UHK9aLI0/FAiFTxwBUmAApQqrWEahDQ4M13RjlC8jS6Kw== X-Received: by 2002:a25:7b44:: with SMTP id w65mr10012844ybc.393.1570809351386; Fri, 11 Oct 2019 08:55:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 03/20] target/arm: Split out rebuild_hflags_common_32 Date: Fri, 11 Oct 2019 11:55:29 -0400 Message-Id: <20191011155546.14342-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b42 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Create a function to compute the values of the TBFLAG_A32 bits that will be cached, and are used by all profiles. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 69da04786e..f05d042474 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11070,6 +11070,15 @@ static uint32_t rebuild_hflags_common(CPUARMState = *env, int fp_el, return flags; } =20 +static uint32_t rebuild_hflags_common_32(CPUARMState *env, int fp_el, + ARMMMUIdx mmu_idx, uint32_t flags) +{ + flags =3D FIELD_DP32(flags, TBFLAG_A32, SCTLR_B, arm_sctlr_b(env)); + flags =3D FIELD_DP32(flags, TBFLAG_A32, NS, !access_secure_reg(env)); + + return rebuild_hflags_common(env, fp_el, mmu_idx, flags); +} + static uint32_t rebuild_hflags_a64(CPUARMState *env, int el, int fp_el, ARMMMUIdx mmu_idx) { @@ -11141,7 +11150,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, ARMMMUIdx mmu_idx =3D arm_mmu_idx(env); int current_el =3D arm_current_el(env); int fp_el =3D fp_exception_el(env, current_el); - uint32_t flags =3D 0; + uint32_t flags; =20 if (is_a64(env)) { *pc =3D env->pc; @@ -11151,12 +11160,11 @@ void cpu_get_tb_cpu_state(CPUARMState *env, targe= t_ulong *pc, } } else { *pc =3D env->regs[15]; + flags =3D rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); flags =3D FIELD_DP32(flags, TBFLAG_A32, THUMB, env->thumb); flags =3D FIELD_DP32(flags, TBFLAG_A32, VECLEN, env->vfp.vec_len); flags =3D FIELD_DP32(flags, TBFLAG_A32, VECSTRIDE, env->vfp.vec_st= ride); flags =3D FIELD_DP32(flags, TBFLAG_A32, CONDEXEC, env->condexec_bi= ts); - flags =3D FIELD_DP32(flags, TBFLAG_A32, SCTLR_B, arm_sctlr_b(env)); - flags =3D FIELD_DP32(flags, TBFLAG_A32, NS, !access_secure_reg(env= )); if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30) || arm_el_is_aa64(env, 1) || arm_feature(env, ARM_FEATURE_M)) { flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); @@ -11166,8 +11174,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, flags =3D FIELD_DP32(flags, TBFLAG_A32, XSCALE_CPAR, env->cp15.c15_cpar); } - - flags =3D rebuild_hflags_common(env, fp_el, mmu_idx, flags); } =20 /* The SS_ACTIVE and PSTATE_SS bits correspond to the state machine --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809634; cv=none; d=zoho.com; s=zohoarc; b=FaYRU5/dGvN6t6BUByEOfmSAt9q1v2gskEW0xE+4/tjeSIRVFwNi2eGWRSMlcuptkMgEFZZa3DhnrF152KoEqJWJhRt34OgV0Uiiwy7FadnwiPl0hRuyYPLVVazs8/ubgZdF5HWvs2j2AZyZbbHsnae7wMh4Kgy7AJKjxh5MM2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809634; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=X98g4BsONciVZ3hWGnQlafESmVIuzpNrlu/v750SDKY=; b=oP8D6GHpNXr5xhGIJK+1q2rjwVfDw3xslEsqiEn51mgpNb/Yw/IAli0iS//gx04PiwZfcLDTyZDfpaTpsIXSD9k+0RD3WouWONyIMtAY6vxeMoA8Ehtj41xVPPEngGmUfQCwrR4L6bnbBV4VWcxnQ5DyHariOFF3cVLUXoPQHss= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809634837494.3183704880893; Fri, 11 Oct 2019 09:00:34 -0700 (PDT) Received: from localhost ([::1]:52876 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxLE-000830-W5 for importer@patchew.org; Fri, 11 Oct 2019 12:00:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33597) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGm-0002HP-0Q for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGj-0007aV-Lz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:55 -0400 Received: from mail-yw1-xc41.google.com ([2607:f8b0:4864:20::c41]:36708) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGj-0007a2-IN for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:53 -0400 Received: by mail-yw1-xc41.google.com with SMTP id x64so3651619ywg.3 for ; Fri, 11 Oct 2019 08:55:53 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=X98g4BsONciVZ3hWGnQlafESmVIuzpNrlu/v750SDKY=; b=wS7Ogpgplyc/4NSq2H5jSIQ8GdEEb1rDD02/9GzuYtvMVQeSdl4pXR3/jGAPWVU1gR ghg/yN6wHmcIi2M22DUUZ0vRxmWFoJyw8hi3wRMnJLqedGOHyj6Jfc1mfPaOIv7PtPR1 Eg49nnnObo7euxACvyhZYNMZnuvwu1JCTlwIY1d+yrypdV68xxhW8EmgK/VcQn4ukz6B rig6enWoDt6W4u01vShVXT7srNViCxlw7x1YM1SMx/fv+jorW9GHeAM4+ZBsOjOjASIo xRFwTkl4JaXq6lXOofB51gOn8OBl+DNCRvw5d6aktgbmAG9i47TnrnOnmI+VGe/7HqV6 MIHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=X98g4BsONciVZ3hWGnQlafESmVIuzpNrlu/v750SDKY=; b=lvfppu+ALNeLcij5jeEYdAxcqapU7eRWcizir4zlzgpwKP1+5D1mPnH/rgbz5eYnyS F8CwO7veeGRGivn+I/4yqgcSD4W92kA+Pm/MRcbGaC5TTEQnKFP5ou0WZkvVf7GRo0ra PIP5YItVdm0nTEAt0t2/CbEa2P2irhbFDcoaTX2mCv0Xud1if7KM5Yzs53/BzP88P3hU c7AynZdcMP3Ue4BHDq4Hww7lOOZYV1z5IlPnWTD9CLAQP+gPGSQXlw5IKyT/PZF102PF +rAD4nT2at/8e6FDYSmvVJQk91mcgvWRpbWLMzS93543ICVWCNKkHmzSkP6aGSTMkpzo EO9w== X-Gm-Message-State: APjAAAX4D0Vnpx5wO8ubnf9NlqtM8thqTA1w4LqGdyT6jvkC+CyNxltE nqT3o0FEu31rgMF9XbS6y1xqWmprfmE= X-Google-Smtp-Source: APXvYqyMePPgo2tqF7E8TsUw2wzxJldOzQAcVWXVzwk9K181r/mGVLyLzKjg3H1KHuO7mDGaAad5gA== X-Received: by 2002:a81:8282:: with SMTP id s124mr2993235ywf.498.1570809352608; Fri, 11 Oct 2019 08:55:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 04/20] target/arm: Split arm_cpu_data_is_big_endian Date: Fri, 11 Oct 2019 11:55:30 -0400 Message-Id: <20191011155546.14342-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c41 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Set TBFLAG_ANY.BE_DATA in rebuild_hflags_common_32 and rebuild_hflags_a64 instead of rebuild_hflags_common, where we do not need to re-test is_a64() nor re-compute the various inputs. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/cpu.h | 49 +++++++++++++++++++++++++++------------------ target/arm/helper.c | 16 +++++++++++---- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index ad79a6153b..4d961474ce 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3108,33 +3108,44 @@ static inline uint64_t arm_sctlr(CPUARMState *env, = int el) } } =20 +static inline bool arm_cpu_data_is_big_endian_a32(CPUARMState *env, + bool sctlr_b) +{ +#ifdef CONFIG_USER_ONLY + /* + * In system mode, BE32 is modelled in line with the + * architecture (as word-invariant big-endianness), where loads + * and stores are done little endian but from addresses which + * are adjusted by XORing with the appropriate constant. So the + * endianness to use for the raw data access is not affected by + * SCTLR.B. + * In user mode, however, we model BE32 as byte-invariant + * big-endianness (because user-only code cannot tell the + * difference), and so we need to use a data access endianness + * that depends on SCTLR.B. + */ + if (sctlr_b) { + return true; + } +#endif + /* In 32bit endianness is determined by looking at CPSR's E bit */ + return env->uncached_cpsr & CPSR_E; +} + +static inline bool arm_cpu_data_is_big_endian_a64(int el, uint64_t sctlr) +{ + return sctlr & (el ? SCTLR_EE : SCTLR_E0E); +} =20 /* Return true if the processor is in big-endian mode. */ static inline bool arm_cpu_data_is_big_endian(CPUARMState *env) { - /* In 32bit endianness is determined by looking at CPSR's E bit */ if (!is_a64(env)) { - return -#ifdef CONFIG_USER_ONLY - /* In system mode, BE32 is modelled in line with the - * architecture (as word-invariant big-endianness), where loads - * and stores are done little endian but from addresses which - * are adjusted by XORing with the appropriate constant. So the - * endianness to use for the raw data access is not affected by - * SCTLR.B. - * In user mode, however, we model BE32 as byte-invariant - * big-endianness (because user-only code cannot tell the - * difference), and so we need to use a data access endianness - * that depends on SCTLR.B. - */ - arm_sctlr_b(env) || -#endif - ((env->uncached_cpsr & CPSR_E) ? 1 : 0); + return arm_cpu_data_is_big_endian_a32(env, arm_sctlr_b(env)); } else { int cur_el =3D arm_current_el(env); uint64_t sctlr =3D arm_sctlr(env, cur_el); - - return (sctlr & (cur_el ? SCTLR_EE : SCTLR_E0E)) !=3D 0; + return arm_cpu_data_is_big_endian_a64(cur_el, sctlr); } } =20 diff --git a/target/arm/helper.c b/target/arm/helper.c index f05d042474..4c65476d93 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11061,9 +11061,6 @@ static uint32_t rebuild_hflags_common(CPUARMState *= env, int fp_el, flags =3D FIELD_DP32(flags, TBFLAG_ANY, MMUIDX, arm_to_core_mmu_idx(mmu_idx)); =20 - if (arm_cpu_data_is_big_endian(env)) { - flags =3D FIELD_DP32(flags, TBFLAG_ANY, BE_DATA, 1); - } if (arm_singlestep_active(env)) { flags =3D FIELD_DP32(flags, TBFLAG_ANY, SS_ACTIVE, 1); } @@ -11073,7 +11070,14 @@ static uint32_t rebuild_hflags_common(CPUARMState = *env, int fp_el, static uint32_t rebuild_hflags_common_32(CPUARMState *env, int fp_el, ARMMMUIdx mmu_idx, uint32_t flags) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, SCTLR_B, arm_sctlr_b(env)); + bool sctlr_b =3D arm_sctlr_b(env); + + if (sctlr_b) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, SCTLR_B, 1); + } + if (arm_cpu_data_is_big_endian_a32(env, sctlr_b)) { + flags =3D FIELD_DP32(flags, TBFLAG_ANY, BE_DATA, 1); + } flags =3D FIELD_DP32(flags, TBFLAG_A32, NS, !access_secure_reg(env)); =20 return rebuild_hflags_common(env, fp_el, mmu_idx, flags); @@ -11122,6 +11126,10 @@ static uint32_t rebuild_hflags_a64(CPUARMState *en= v, int el, int fp_el, =20 sctlr =3D arm_sctlr(env, el); =20 + if (arm_cpu_data_is_big_endian_a64(el, sctlr)) { + flags =3D FIELD_DP32(flags, TBFLAG_ANY, BE_DATA, 1); + } + if (cpu_isar_feature(aa64_pauth, env_archcpu(env))) { /* * In order to save space in flags, we record only whether --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809933; cv=none; d=zoho.com; s=zohoarc; b=QhHA/g0feclF8pgVaR2n4UT53lhQbOC/Z/hJcSFFSpAv0aNu4vWq/23LzreTlvW95Yyyo8nDQzazHPnG92oTQKnztj1QaFjLCHO7HyfanGbDSqZewD53Je8+ZUsiU0nZFBmv09yHoDH+oMQuM9KEAL30LGSiDQuyHk3AcvufJ0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809933; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=20mv2SwJCcd4Z6z1yWs3I8qxDMrWegtCA17Quz1+Bvk=; b=a++m4HyumEe1SkaHFH+Fh0u9Kkui6I/L+dzGU9yLl2La39acI5HibLb7FWG6OiTIjbB6Vmno42nf/SpA2gG6Qz8msCYiI+WwHMGroOtO2pnzZ+IvbXyrXaMgUNiV278SAZobIvVd6EqK9DR1R8FYaynMfic8SNy5RDDBp6G6vzM= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809933455194.38158261769638; Fri, 11 Oct 2019 09:05:33 -0700 (PDT) Received: from localhost ([::1]:52986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQ4-00043c-9d for importer@patchew.org; Fri, 11 Oct 2019 12:05:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33644) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGn-0002Jp-7l for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGm-0007dN-1k for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:57 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:37996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGl-0007bC-UK for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:55 -0400 Received: by mail-yw1-xc44.google.com with SMTP id s6so3647643ywe.5 for ; Fri, 11 Oct 2019 08:55:55 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=20mv2SwJCcd4Z6z1yWs3I8qxDMrWegtCA17Quz1+Bvk=; b=wI1VxkTSfsDPcY0D4LXTbNeyeaDOil9aLBZPJBvtGAdOpRZIUQsthATLdyZwSU9yUV OvjTl2IAwX056fnXwm3bcjUJ0YER/p9KXYRvJoKWJ6qvt8sA3Q/OD9HWvG3cgCSjfaeJ 4MWfAhzOnRmt9s23xi6k0MJKMbc/z4mgCXbq7jjg7vWPrXtiB75bsVmaxQ4YgiLCu8Wm 8Y3sjHBT9yr4AQSrNoB5wzU/LrYUfxhHrw6nyD9pNmH7j/iKotOIC0H1CjnC9deUyDyH YbsKV8gLDYnPE18HyREFW9+BLw1MMaPrqYKSmbe0N4m7V93QJrR83HeTgLwCzksI/AOa ZFFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=20mv2SwJCcd4Z6z1yWs3I8qxDMrWegtCA17Quz1+Bvk=; b=k46nzDUsZgOZ++Z6cC5cz775y/Y46VKP9hpwUw0JDeH4DY5Kd/Aes/v9pTmGQOez/E ZYpZrE4XwYzQGkOYy7W6V+FcHnI6Dx/B3J7PQOeK7+N/1/L65E/Lf0MYYYWguRMdPvUI jmGVbs17RsTzh8zcWRqQ65qIHFV7jXtEDevWNNu7GjEa8ZosByhRVfQdFJHjxHWnYyWk csfwx8RYOVaVnnTT/5Z3I19taUGIMhGfluHNf1VBMeink3PqbjAWhdCYGj7SFw54gDFT RC2VDl7HVXwsoh7iiOeBiTsk3csNhvYMfBQ6z86RTcf9hZ77lvu7+8tDW/wCAfOjNEPs RuWw== X-Gm-Message-State: APjAAAX7jP4itvWBC/9rqKV3pW8Z1kUVWxPw+nJIl64bE/Z2AvLbJVft HV5zs4kqEpkglXYpTiXw/peBIYinuqE= X-Google-Smtp-Source: APXvYqyKNRKARKng5Frt7UZ9fMhhBEXXMXU2x7Vb0BZW8HdLMLZZdno80WkrjA2Qzt57X/kP78IEWw== X-Received: by 2002:a81:368a:: with SMTP id d132mr2805565ywa.390.1570809353810; Fri, 11 Oct 2019 08:55:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 05/20] target/arm: Split out rebuild_hflags_m32 Date: Fri, 11 Oct 2019 11:55:31 -0400 Message-Id: <20191011155546.14342-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Create a function to compute the values of the TBFLAG_A32 bits that will be cached, and are used by M-profile. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 4c65476d93..d4303420da 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11083,6 +11083,29 @@ static uint32_t rebuild_hflags_common_32(CPUARMSta= te *env, int fp_el, return rebuild_hflags_common(env, fp_el, mmu_idx, flags); } =20 +static uint32_t rebuild_hflags_m32(CPUARMState *env, int fp_el, + ARMMMUIdx mmu_idx) +{ + uint32_t flags =3D 0; + + if (arm_v7m_is_handler_mode(env)) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, HANDLER, 1); + } + + /* + * v8M always applies stack limit checks unless CCR.STKOFHFNMIGN + * is suppressing them because the requested execution priority + * is less than 0. + */ + if (arm_feature(env, ARM_FEATURE_V8) && + !((mmu_idx & ARM_MMU_IDX_M_NEGPRI) && + (env->v7m.ccr[env->v7m.secure] & R_V7M_CCR_STKOFHFNMIGN_MASK))) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, STACKCHECK, 1); + } + + return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags); +} + static uint32_t rebuild_hflags_a64(CPUARMState *env, int el, int fp_el, ARMMMUIdx mmu_idx) { @@ -11168,7 +11191,13 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, } } else { *pc =3D env->regs[15]; - flags =3D rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); + + if (arm_feature(env, ARM_FEATURE_M)) { + flags =3D rebuild_hflags_m32(env, fp_el, mmu_idx); + } else { + flags =3D rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); + } + flags =3D FIELD_DP32(flags, TBFLAG_A32, THUMB, env->thumb); flags =3D FIELD_DP32(flags, TBFLAG_A32, VECLEN, env->vfp.vec_len); flags =3D FIELD_DP32(flags, TBFLAG_A32, VECSTRIDE, env->vfp.vec_st= ride); @@ -11204,20 +11233,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, } } =20 - if (arm_v7m_is_handler_mode(env)) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, HANDLER, 1); - } - - /* v8M always applies stack limit checks unless CCR.STKOFHFNMIGN is - * suppressing them because the requested execution priority is less t= han 0. - */ - if (arm_feature(env, ARM_FEATURE_V8) && - arm_feature(env, ARM_FEATURE_M) && - !((mmu_idx & ARM_MMU_IDX_M_NEGPRI) && - (env->v7m.ccr[env->v7m.secure] & R_V7M_CCR_STKOFHFNMIGN_MASK))) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, STACKCHECK, 1); - } - if (arm_feature(env, ARM_FEATURE_M_SECURITY) && FIELD_EX32(env->v7m.fpccr[M_REG_S], V7M_FPCCR, S) !=3D env->v7m.se= cure) { flags =3D FIELD_DP32(flags, TBFLAG_A32, FPCCR_S_WRONG, 1); --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809741; cv=none; d=zoho.com; s=zohoarc; b=cSe4FB09rmD2lIC5F41IhV5CIk1UBunEre7w6N/XWetrE7Q1zFt0koBVlaYnhugqtoriSsqVTpuTTeIiUmF7LmB9URnM5h7aUPn8YwmP+XAIrlecbI2tZ5ebxFb7+PRCmUfUKHmaaQHuwikWaxTCkoihoGaU1kKie63tbSwsW/8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809741; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=c+8xcuNKYkwsEhklvjvEYe1RYCMD1KcRe25MPQQBSq8=; b=m3WW2vT8sp+5fPkiLH58PF+pe6giL3tgSiFWrK1503O2RxJLaV4jJzRykILtB2T2LfzKTEBSkeqNPtvww/+fiExtTRma6r+CXXOxZrX17xFFNWHawI53OGPkqX9yj3xsCN7luWOEhgF/9N558eG6raJByVyOpKWwwgBLaXwxE4M= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809741035886.2978189955421; Fri, 11 Oct 2019 09:02:21 -0700 (PDT) Received: from localhost ([::1]:52900 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxMt-0001Hj-Gz for importer@patchew.org; Fri, 11 Oct 2019 12:02:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33640) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGn-0002Je-78 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGm-0007dH-0u for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:57 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:37865) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGl-0007cq-TP for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:55 -0400 Received: by mail-yb1-xb43.google.com with SMTP id z125so3257380ybc.4 for ; Fri, 11 Oct 2019 08:55:55 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=c+8xcuNKYkwsEhklvjvEYe1RYCMD1KcRe25MPQQBSq8=; b=EFGmjcZBYfaRZyaTq4EUFZ/QHAoIHEWxPWzH0qshXZS97PkSg946D6PyJNd41xoAli BvFS+tshdZ/7+NLhGyxhScRbgs7DkzG8AkYxqMUBao2btz76El5F6DIr93Bt6l58W1to Slkj6q/c1xavGytbX8LT222uQIvyGAETylbat/7pYr6I+Fd3XlQPepe0C+7pS+OOETd+ u/k7LzhL5FnilDhL/vblXFofZ0Wlzd8T8mnR0r4tbWbAoMDZ156eDYy678sW99l+KO8P Kz5IJJ75IhIRQHCiZi+jFrvEnCL4fcVXmS2+i0NQCV1FpsN6YgcoD14pq/J8Oz8fCQJs bLrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=c+8xcuNKYkwsEhklvjvEYe1RYCMD1KcRe25MPQQBSq8=; b=c9aghsI5DV72HIe+pIOaOLF2WZR07wTob7jKBKPINNqVF6MyHBRfIg4qr8jhGjX1H9 KDKRVAhOEpQA9E2+n9DyvxdjLVE1Bxm3QYunZ6rWFDdQxZ6yzpSb4Bi1qFzGaKSQLvV4 4TqBSzcwQCCDffeYkHGAGvOuXvNIez6BEXs51UiBIp8OSoQtlsO2s8pTGtqhDZXUCMSF FdfCYExlaer/szprgXUp6tG2GJjh3cAaHwLM/xbKgvaYEReZG0sXLpAKnFpiojHJFIcH fuMeS/Zd48BMUe4SMIv/gz1evvwUMjgYBMB3ngJRtJSfacqiGSksQ/b9/uU3vLJrtqkd QQDw== X-Gm-Message-State: APjAAAUm7aivkMzDFQXZSHEklWo1wYu1SRnrfhfQ011vuTwISPv+Y2Kd 2sjg9VAxrPlvhhp7sp1cFXWkX4smKoo= X-Google-Smtp-Source: APXvYqy3O6ymMivYsmZQ/AWp3uD0v4Pyx31CmpnHeGLrgc5YVjZPW5Fd2uYxBPwoPEEhi2p7Q7fIew== X-Received: by 2002:a25:bc04:: with SMTP id i4mr9790376ybh.427.1570809354942; Fri, 11 Oct 2019 08:55:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 06/20] target/arm: Reduce tests vs M-profile in cpu_get_tb_cpu_state Date: Fri, 11 Oct 2019 11:55:32 -0400 Message-Id: <20191011155546.14342-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Hoist the computation of some TBFLAG_A32 bits that only apply to M-profile under a single test for ARM_FEATURE_M. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 49 +++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index d4303420da..296a4b2232 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11194,6 +11194,29 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, =20 if (arm_feature(env, ARM_FEATURE_M)) { flags =3D rebuild_hflags_m32(env, fp_el, mmu_idx); + + if (arm_feature(env, ARM_FEATURE_M_SECURITY) && + FIELD_EX32(env->v7m.fpccr[M_REG_S], V7M_FPCCR, S) + !=3D env->v7m.secure) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, FPCCR_S_WRONG, 1); + } + + if ((env->v7m.fpccr[env->v7m.secure] & R_V7M_FPCCR_ASPEN_MASK)= && + (!(env->v7m.control[M_REG_S] & R_V7M_CONTROL_FPCA_MASK) || + (env->v7m.secure && + !(env->v7m.control[M_REG_S] & R_V7M_CONTROL_SFPA_MASK)))= ) { + /* + * ASPEN is set, but FPCA/SFPA indicate that there is no + * active FP context; we must create a new FP context befo= re + * executing any FP insn. + */ + flags =3D FIELD_DP32(flags, TBFLAG_A32, NEW_FP_CTXT_NEEDED= , 1); + } + + bool is_secure =3D env->v7m.fpccr[M_REG_S] & R_V7M_FPCCR_S_MAS= K; + if (env->v7m.fpccr[is_secure] & R_V7M_FPCCR_LSPACT_MASK) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, LSPACT, 1); + } } else { flags =3D rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); } @@ -11233,32 +11256,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, } } =20 - if (arm_feature(env, ARM_FEATURE_M_SECURITY) && - FIELD_EX32(env->v7m.fpccr[M_REG_S], V7M_FPCCR, S) !=3D env->v7m.se= cure) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, FPCCR_S_WRONG, 1); - } - - if (arm_feature(env, ARM_FEATURE_M) && - (env->v7m.fpccr[env->v7m.secure] & R_V7M_FPCCR_ASPEN_MASK) && - (!(env->v7m.control[M_REG_S] & R_V7M_CONTROL_FPCA_MASK) || - (env->v7m.secure && - !(env->v7m.control[M_REG_S] & R_V7M_CONTROL_SFPA_MASK)))) { - /* - * ASPEN is set, but FPCA/SFPA indicate that there is no active - * FP context; we must create a new FP context before executing - * any FP insn. - */ - flags =3D FIELD_DP32(flags, TBFLAG_A32, NEW_FP_CTXT_NEEDED, 1); - } - - if (arm_feature(env, ARM_FEATURE_M)) { - bool is_secure =3D env->v7m.fpccr[M_REG_S] & R_V7M_FPCCR_S_MASK; - - if (env->v7m.fpccr[is_secure] & R_V7M_FPCCR_LSPACT_MASK) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, LSPACT, 1); - } - } - if (!arm_feature(env, ARM_FEATURE_M)) { int target_el =3D arm_debug_target_el(env); =20 --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810091; cv=none; d=zoho.com; s=zohoarc; b=DIiPKEuQpgyA0k/2xDi0Rl0tnDZ03qq+VVjlLAPG6axCUR3m/IdspdoEJ92HXN59fIUkxiIRGAShfZJWYtt6a0RvSvVJkcFzQUhxRnLM5mCCoDVl61V8UnzS7jwI469f10bc6zX2Q7HQdBkQ+b2lR9+fUwAoFaeAPUY+YLC6z88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810091; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=nFJqxK8OKOrQev/1CQPrr0VKM/9+1cXcigS/dy+zmf4=; b=dfvabKcrXSA8FvnKn+6ViUdO6G4rPVN8aRvlVGmnnkQVlFbi3aYznCpvpOTdTyEDNg9ZcvVeURSx6+dPihhl6UXzfiHsszpUrCVr6SSRoyhaYko8O03jWmPaQIb9Y9fgiV5SU99ADIxA4jgIyYzlaxX0AJgmIweDaI1CrfNCvQs= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 157081009183251.89214181074567; Fri, 11 Oct 2019 09:08:11 -0700 (PDT) Received: from localhost ([::1]:53316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxSZ-00083G-Dz for importer@patchew.org; Fri, 11 Oct 2019 12:08:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33675) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGo-0002LU-81 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGn-0007eO-4s for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:58 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:39998) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGn-0007e3-1R for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:57 -0400 Received: by mail-yb1-xb43.google.com with SMTP id s7so3254895ybq.7 for ; Fri, 11 Oct 2019 08:55:57 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nFJqxK8OKOrQev/1CQPrr0VKM/9+1cXcigS/dy+zmf4=; b=vls3T+ax6QRQgGywOLqQFOiAiTSTvgQafBGaYNxZtVrM/3E7oeVhIBRlMQZZGuqHE7 eyYrnew1A3OkIWvu0J8mxfckeIwXrl918zUEsg0AJu/0SgTSBXL3UxhA+CfmVTm/FJhN bmCM+fx1E/RuODQVfOcwN3OSyehSek5kTgC5VY+yz1vkvTivJSAJObPfhiMZ53knNzmZ 54y121qSTjSHL3YoFb64MaFOV33BCRKL9u9WB3ld68MXu/FhgbB3aevfVVsvO07eRDDg q8P5c0sJvO7mx9q20WkQ9KQUSj2AYDgLUGxtVjOKAPAhWoU/3nC89/VhRYI90Y9P+fRL insQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nFJqxK8OKOrQev/1CQPrr0VKM/9+1cXcigS/dy+zmf4=; b=k6GHrKek8K0KRdUG/Vkvq4W/RRPQIJbCAJ5M4xYLqvBI7tXj6bedwWNknqZwOfBYd+ D1ll+5/1BlE8ZRDObPVYSRrQdNt2UOKoJa0qwdrL0C096snRVxlhG0kefH+XzQuMCl7r Hv4dXiXxGimyMd7AZelrKuMStIPk8FMj+PcMWJMn5mvZcL52iIW95gczWtjFJYnYo3g5 Z2gyhHc+MMoKvHu6y3DV3IzJMLhpy1HejnL+s7ijV2uEVAEGRDQ2U0CK+SHosWTllMGU Fu4GtJIFtLhpMO9y+U1mjKEUeqsn8Kux+Ab/X6Igj5wYd1pd0xql1wR7HTRxujATOv+z SjJg== X-Gm-Message-State: APjAAAUzuV+UH+myBthuyGAhxzxzIsx7r6RjwnkuvpEQckahheO5F67D CNq1gf4hWJob8odggjqB61GZy3WzQJs= X-Google-Smtp-Source: APXvYqx9PQe1obtcaKCiO8stP/SdAr/rm60qXZi4Dk3j9MzWIyImUZnEu1U31KuMMfUza6myQEQAng== X-Received: by 2002:a25:388f:: with SMTP id f137mr10148377yba.223.1570809356070; Fri, 11 Oct 2019 08:55:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 07/20] target/arm: Split out rebuild_hflags_a32 Date: Fri, 11 Oct 2019 11:55:33 -0400 Message-Id: <20191011155546.14342-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently a trivial wrapper for rebuild_hflags_common_32. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 296a4b2232..d1cd54cc93 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11106,6 +11106,12 @@ static uint32_t rebuild_hflags_m32(CPUARMState *en= v, int fp_el, return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags); } =20 +static uint32_t rebuild_hflags_a32(CPUARMState *env, int fp_el, + ARMMMUIdx mmu_idx) +{ + return rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); +} + static uint32_t rebuild_hflags_a64(CPUARMState *env, int el, int fp_el, ARMMMUIdx mmu_idx) { @@ -11218,7 +11224,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, flags =3D FIELD_DP32(flags, TBFLAG_A32, LSPACT, 1); } } else { - flags =3D rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); + flags =3D rebuild_hflags_a32(env, fp_el, mmu_idx); } =20 flags =3D FIELD_DP32(flags, TBFLAG_A32, THUMB, env->thumb); --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810234; cv=none; d=zoho.com; s=zohoarc; b=Ol1siFELs0G4Sfns7zNOlsY4fvJk4vf6PdTKX6tAd+45I3jzRceJzdSTmz5+bq7kczn6z1EdJmARrlwASZ9dJuJDC4d2bTHATWHVYDlg4tZW2eUGpLEDSsem4+GW70CUaoW6qLoUn1U4Dl0tlJZjv/QfplqZR8Dz2HL+0VcbaEU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810234; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=nHlb3O+3OTrMLE5XtaApktPGFzFyl87vFrMc6HX9qtE=; b=WhWSNwPy5YbEw3sOkcpMAwIECgWO9w+fJJGNsQF0ulNUeFFrrjIQJrgXOQs71ja+u7u/wGz4qc/+krrt4SvOJE0hgH9RWDaTjYYx5ecoqVpvUeKDJd8KJu81yTkUFyp52KxnuSuaFT2Em8GCIGYKMLjXtqveWXdt4zBym9DgHUk= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810234688824.988619566963; Fri, 11 Oct 2019 09:10:34 -0700 (PDT) Received: from localhost ([::1]:53426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxUv-0003MU-8c for importer@patchew.org; Fri, 11 Oct 2019 12:10:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33702) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGp-0002Pg-E5 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGo-0007fp-Al for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:59 -0400 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]:38344) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGo-0007fK-6o for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:58 -0400 Received: by mail-yb1-xb44.google.com with SMTP id r68so3254063ybf.5 for ; Fri, 11 Oct 2019 08:55:58 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nHlb3O+3OTrMLE5XtaApktPGFzFyl87vFrMc6HX9qtE=; b=ZqCEYIpKrjpd6xTcqoaQWD1C9Tkcc0sm9eGOxv1ubZPPqRcX+TOxubWYrzOSS9XNo5 dYZTK851BM3lcBvB27RqGY5nfhDTv5ifqGKlWJCv9QK6aP4hojRXQ0H7Q+Td/9Rqh2An 2F5ZYyMGCrVAdlUgkmk2KMvJL863w9y4bamf1jNqHQAVYelHZ2ibBVjreV1HetZ/bGft 6dhLJ0k9ioCkWRpJx7swTcFEO9WY0WGfMQUYBfbrgr3tBgK7kijrrzhsSyI6h90Tq6WU AjmX6+7tODP1rKJIjOhZjo7diaIgg42/kuTaqpbuu8+eeuhn4liFCtUx8QbNV+BQePVs soGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nHlb3O+3OTrMLE5XtaApktPGFzFyl87vFrMc6HX9qtE=; b=ddR2wjN6ogK4DNwiafCJGxQzHEqRC3yqpAIpDYCoCqm6H0n3duRa1BUlZmKjFzzdnt 524ug4lkQxOOoymF1X5QAERjpXiyha1eF7aLEfEsNZLRaEcESAD0PmBQ1tdrLZK4uIaX CRYj6riiHB27qGSXvUbi4qSOaiOgXf1rR3T0wa+bPCWplWpH2hQ+txRZ4T8mrNTxQe9Z E7uU+C38eJwvKrIsJwVfJpWILNSswXArurx/pPGmFAIr4OyfspB3mBLJPG4D2H2ygA3v 0ymMwGM6WEre3her8DLCG6yN7Vvyw9uWGjAH9zVPDO4DK9szjta4UoiHiNqV+PcJ5gDn Qp1Q== X-Gm-Message-State: APjAAAXkLSXim1Dpvriizdf2iBma5pgoLTfd00NNLUxwUItXO57DPVMl YLyfwhUyQ+Ys5Z9oB69zNmPHnSgUIX0= X-Google-Smtp-Source: APXvYqyj0IvgkgsEXA2GvsIzB47U4To1fTFJHwWb9/AtYwruAQ/4U56uC+7/S9n8VHvSvR60MHRHBA== X-Received: by 2002:a25:2644:: with SMTP id m65mr10846131ybm.462.1570809357334; Fri, 11 Oct 2019 08:55:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 08/20] target/arm: Split out rebuild_hflags_aprofile Date: Fri, 11 Oct 2019 11:55:34 -0400 Message-Id: <20191011155546.14342-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Create a function to compute the values of the TBFLAG_ANY bits that will be cached, and are used by A-profile. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index d1cd54cc93..ddd21edfcf 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11106,18 +11106,28 @@ static uint32_t rebuild_hflags_m32(CPUARMState *e= nv, int fp_el, return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags); } =20 +static uint32_t rebuild_hflags_aprofile(CPUARMState *env) +{ + int flags =3D 0; + + flags =3D FIELD_DP32(flags, TBFLAG_ANY, DEBUG_TARGET_EL, + arm_debug_target_el(env)); + return flags; +} + static uint32_t rebuild_hflags_a32(CPUARMState *env, int fp_el, ARMMMUIdx mmu_idx) { - return rebuild_hflags_common_32(env, fp_el, mmu_idx, 0); + uint32_t flags =3D rebuild_hflags_aprofile(env); + return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags); } =20 static uint32_t rebuild_hflags_a64(CPUARMState *env, int el, int fp_el, ARMMMUIdx mmu_idx) { + uint32_t flags =3D rebuild_hflags_aprofile(env); ARMMMUIdx stage1 =3D stage_1_mmu_idx(mmu_idx); ARMVAParameters p0 =3D aa64_va_parameters_both(env, 0, stage1); - uint32_t flags =3D 0; uint64_t sctlr; int tbii, tbid; =20 @@ -11262,12 +11272,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, } } =20 - if (!arm_feature(env, ARM_FEATURE_M)) { - int target_el =3D arm_debug_target_el(env); - - flags =3D FIELD_DP32(flags, TBFLAG_ANY, DEBUG_TARGET_EL, target_el= ); - } - *pflags =3D flags; *cs_base =3D 0; } --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809988; cv=none; d=zoho.com; s=zohoarc; b=omv2Dt4BiBR/TcOHDxKDptrNcgnHIGGt8ITtEGn5z8msJGGnOx7RZF6D0QWC/uGlJg89LFv4qG/iJse7MPcNhiPyPmHDxnXRjeU1888paWmrbqonN3QCkiq4rwn6yG2r0mtrJDF7wzLcPJPBnJaZQiEMeRz19KZP74XyhSOyhYs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809988; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=iqTlbqaEumCeViAxHmy3brKEyzF/IL5OcylNHq80qOA=; b=GTlJAxROETvWbG73YAMCe+xSYl5BPelXBnPMSP2tn1s5qHTHkIG8ge8cFpBpErRS42Xn65UflZkFnN8f2Tjl47PNV2NbRzRLFZC8LXLAa7fI3uI+lDY4zq5+r/PkUeyLD+b2JUBOh2dDxrE6bEY88qBoyLXmsIguhKeVkU8LuUo= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 157080998802561.89416495105377; Fri, 11 Oct 2019 09:06:28 -0700 (PDT) Received: from localhost ([::1]:53008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQt-0005Lc-Bf for importer@patchew.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33729) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGq-0002Rp-Mf for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGp-0007gc-FR for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:00 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:46738) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGp-0007gL-Br for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:55:59 -0400 Received: by mail-yb1-xb43.google.com with SMTP id h202so3235760ybg.13 for ; Fri, 11 Oct 2019 08:55:59 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=iqTlbqaEumCeViAxHmy3brKEyzF/IL5OcylNHq80qOA=; b=LlaPsAfSZ9ajH0n/1v6zbHEnrz97OeHhwUUtJCeQvP+1xHOkAd54BXlZbLPsSV+yx1 /4LxMyYD4sdNS/WBhp9O5MF4v6kKMCPTXuPeGojNocanhka7xK2/mJ8pI0vLbNXW24+/ rhW50d+qU/ZqSheeixunH7PNW5rOB0VFa18L4MHo8ySH/w+9rf52cQ+FM1i8pLSQRrEs TnnO+QjWfwAQu7/p4KLZqV7Lx0NFq3X1bSeAmGVTRLO9o4IxYPfO9ucRzfJvOF2wgVPP 4nmPDDdluOdjw9qINF8rQVt9jrVCPztH27iROZYVKpwUIlvDKo+evX0qjO3t4NjYheDk yFvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=iqTlbqaEumCeViAxHmy3brKEyzF/IL5OcylNHq80qOA=; b=pQ3aTMBYsv7fNGzjSQHZWo5gkL/Q3kd891KmN6VwjWp3o8HnEyGnrRwKrfomKngi6s 9oG3Ii7duRgHbRWvxGKyg6tVJldVPTb8RDDNFh0uKO1lZpvdwAeyNweCl3JmWu+yEDDX m6frnTqofHoB5fhviC0oGWGRF5NkmmipcQKqz6gqZNY3waQF+R2tKc4PFCgmmmRnKIvx CJNC56N6oaM3qkpvMiXoRCZrCjc3YLw7Rqf2G72u8Xy+yD5bn9zE/Pk4lN74zBhzp4/f oOpNirEfhgmRLZ7Mzlis6FiYv/zFC3R6Yj45epqjCQYnBriqjbrHbgBDZk5G0CRlj7fG CY7w== X-Gm-Message-State: APjAAAUEB+bZxcTx65NMoUZNL7Fs/xaebJaP31H2JnRH23IRYiWvBren Duh+M6tsqCowltv1vjogSut1cXYOOn8= X-Google-Smtp-Source: APXvYqzkgzbQsosCljGQX5pZq8qop0g4nkjJ5XqAgss7IkZlRKxJBOQFr7OHf3pAeph9meStsCExIw== X-Received: by 2002:a25:4b04:: with SMTP id y4mr10225057yba.480.1570809358429; Fri, 11 Oct 2019 08:55:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 09/20] target/arm: Hoist XSCALE_CPAR, VECLEN, VECSTRIDE in cpu_get_tb_cpu_state Date: Fri, 11 Oct 2019 11:55:35 -0400 Message-Id: <20191011155546.14342-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We do not need to compute any of these values for M-profile. Further, XSCALE_CPAR overlaps VECSTRIDE so obviously the two sets must be mutually exclusive. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- 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 ddd21edfcf..e2a62cf19a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11235,21 +11235,28 @@ void cpu_get_tb_cpu_state(CPUARMState *env, targe= t_ulong *pc, } } else { flags =3D rebuild_hflags_a32(env, fp_el, mmu_idx); + + /* + * Note that XSCALE_CPAR shares bits with VECSTRIDE. + * Note that VECLEN+VECSTRIDE are RES0 for M-profile. + */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, + XSCALE_CPAR, env->cp15.c15_cpar); + } else { + flags =3D FIELD_DP32(flags, TBFLAG_A32, VECLEN, + env->vfp.vec_len); + flags =3D FIELD_DP32(flags, TBFLAG_A32, VECSTRIDE, + env->vfp.vec_stride); + } } =20 flags =3D FIELD_DP32(flags, TBFLAG_A32, THUMB, env->thumb); - flags =3D FIELD_DP32(flags, TBFLAG_A32, VECLEN, env->vfp.vec_len); - flags =3D FIELD_DP32(flags, TBFLAG_A32, VECSTRIDE, env->vfp.vec_st= ride); flags =3D FIELD_DP32(flags, TBFLAG_A32, CONDEXEC, env->condexec_bi= ts); if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30) || arm_el_is_aa64(env, 1) || arm_feature(env, ARM_FEATURE_M)) { flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); } - /* Note that XSCALE_CPAR shares bits with VECSTRIDE */ - if (arm_feature(env, ARM_FEATURE_XSCALE)) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, - XSCALE_CPAR, env->cp15.c15_cpar); - } } =20 /* The SS_ACTIVE and PSTATE_SS bits correspond to the state machine --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809982; cv=none; d=zoho.com; s=zohoarc; b=EMeROjfeMZcEnV5NlDKwyTAWiRvFAO0h0p0g9gE+vTNCU3w3S+i7GS4JsPvyg8KL+TcXWikw0wYiniYiMqUn1iNTqMAo+PE3wO8Uj99lDS/KIYSXbKZWf0XBxytewqNMUWOjP+1upsU5VcyX7jr++iBBahNT7K5tMNBB3g70ZCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809982; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=v9G2/VGbpNHx6eaShg3TTMn08v+y+t3OtnZPnrlHvrg=; b=TEZbnb0q1gPP6EHlZ3FPgSeDgi3yjgAByXrzwRsSkaYLxTFukKjW+3Ro2eg8GjgxvkApNyR9dX2G+5K4rO8vHBo9tEGb3zdgva5ii8U4MGe4P62WOFAcJPH5bexWCh4pkwtruPw/6C97gQ2tULS/Ki7QwLlrKISMxbSXYswmkWU= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809982327607.8396023705573; Fri, 11 Oct 2019 09:06:22 -0700 (PDT) Received: from localhost ([::1]:53004 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQq-0005JT-Nc for importer@patchew.org; Fri, 11 Oct 2019 12:06:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33777) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGs-0002VV-Qj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGq-0007hf-Ov for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:02 -0400 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]:41915) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGq-0007hG-L1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:00 -0400 Received: by mail-yb1-xb41.google.com with SMTP id 206so3252987ybc.8 for ; Fri, 11 Oct 2019 08:56:00 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:55:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=v9G2/VGbpNHx6eaShg3TTMn08v+y+t3OtnZPnrlHvrg=; b=XtpZUPFp3W08t1JaA8a0gwAlWG96mYwUetMWaaiCpy9HSMGo6QV8Fw4jCrEVvggsQB vF6tZAvtgIjUmkKmbloMxKxEwZM+b4X7siCA2C/P6Wor8sBPopZKILt6LAi2M7orgBmA 2mfelbVM/AnO9nLlQEHhbWZlpfYUnKKMnRQ6UKhWRHaDbEidF6hjN9nfFBoJkhVcgvQE Ko5O0LeKsAfm2iPhsWrYpS6xC0wvihOaWT6hfwaiozzUWpQIHrgTI2vltkYROdOYrrKT EeJvYM/7yT6M4yHRnCgT9yo7MK1v/PpBwx5xBdIjHwpX8E2XnnzB8AFCMfstHTje3FXA Htuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=v9G2/VGbpNHx6eaShg3TTMn08v+y+t3OtnZPnrlHvrg=; b=Ke05nAS2missJZ2+cC6kQYuIWZhsJyTRuH3dCvdcZ/ElUTib9rPlldsYU8ScLQQ6Bf 8rZyD2zQA8FoDB3KSeDRAflPJEHpNByDe8KtvIQuoXDNp1Nup2HqaFvYDjOnXxY4G2k0 tQOjknwm56HfyTKQWf3kOpcZ9xHh4DP/loyFnYp9ntwgcdGjmb7xydrWyWrbqMNMyywz b3GyVTJ5y1WDUT+nWUXql9oUamuVSpZb2wxL7LzUJhE82n1wuPmgvnjU7B0qqJwXpJNB hxkSAKrUBv4V9ww9I2DGHyvDp1vZvztPd/+0acmXQ2wLOLSLRfljZljzgyna2x87PqyV ncQg== X-Gm-Message-State: APjAAAWfMFKVuIlzzghLYKTS1gY9p1638yLG2CvO5Lp5/my7mzdYLAUM Q2EXFsb53nZRKChQpDxLDu7WSMuLAtE= X-Google-Smtp-Source: APXvYqwpOTFvLbqsFlG+OSKfbCqn7ZzcOHOU7e6QvdMQi4A9DPe4yTn/CyOn6uPt9MSafECxPyUAxw== X-Received: by 2002:a25:80c1:: with SMTP id c1mr10793698ybm.195.1570809359625; Fri, 11 Oct 2019 08:55:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 10/20] target/arm: Simplify set of PSTATE_SS in cpu_get_tb_cpu_state Date: Fri, 11 Oct 2019 11:55:36 -0400 Message-Id: <20191011155546.14342-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b41 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Hoist the variable load for PSTATE into the existing test vs is_a64. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index e2a62cf19a..398e5f5d6d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11197,7 +11197,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, ARMMMUIdx mmu_idx =3D arm_mmu_idx(env); int current_el =3D arm_current_el(env); int fp_el =3D fp_exception_el(env, current_el); - uint32_t flags; + uint32_t flags, pstate_for_ss; =20 if (is_a64(env)) { *pc =3D env->pc; @@ -11205,6 +11205,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, if (cpu_isar_feature(aa64_bti, env_archcpu(env))) { flags =3D FIELD_DP32(flags, TBFLAG_A64, BTYPE, env->btype); } + pstate_for_ss =3D env->pstate; } else { *pc =3D env->regs[15]; =20 @@ -11257,9 +11258,11 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, || arm_el_is_aa64(env, 1) || arm_feature(env, ARM_FEATURE_M)) { flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); } + pstate_for_ss =3D env->uncached_cpsr; } =20 - /* The SS_ACTIVE and PSTATE_SS bits correspond to the state machine + /* + * The SS_ACTIVE and PSTATE_SS bits correspond to the state machine * states defined in the ARM ARM for software singlestep: * SS_ACTIVE PSTATE.SS State * 0 x Inactive (the TB flag for SS is always 0) @@ -11267,16 +11270,9 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target= _ulong *pc, * 1 1 Active-not-pending * SS_ACTIVE is set in hflags; PSTATE_SS is computed every TB. */ - if (FIELD_EX32(flags, TBFLAG_ANY, SS_ACTIVE)) { - if (is_a64(env)) { - if (env->pstate & PSTATE_SS) { - flags =3D FIELD_DP32(flags, TBFLAG_ANY, PSTATE_SS, 1); - } - } else { - if (env->uncached_cpsr & PSTATE_SS) { - flags =3D FIELD_DP32(flags, TBFLAG_ANY, PSTATE_SS, 1); - } - } + if (FIELD_EX32(flags, TBFLAG_ANY, SS_ACTIVE) && + (pstate_for_ss & PSTATE_SS)) { + flags =3D FIELD_DP32(flags, TBFLAG_ANY, PSTATE_SS, 1); } =20 *pflags =3D flags; --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810150; cv=none; d=zoho.com; s=zohoarc; b=MN9+shfA7iQSiy3TcCCcsBzozD7qCVvUqxMSyxtnhl8wqK3tSoasVZ88dr+A18Y7k4Rc1PxoOOFL8vyoQONDVLwd+ardomXovThi6JBVv3VYJXudtc7Xz2B/mIIOyZ0sgOWdfXUpYSF9kIhaYXrVzdKXcDTjyCkDyJghzgyXfus= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810150; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=4OOGMGav7WyY+i6Vj46PkAX7nW+w3pL8v7F+DMrUq7Y=; b=kkCxqes0FmtuvFt8kUC+iuR69KU4HFyCBmPXdKIYsO2F8uf1ysyqEko5HKSPmdtITCT1gvENyeSdtm+LWYe2aCigzBCQp6rIclmyGrbS4OCkqGEXRAhimpl0ephLDItUFbRlQhiwkSjefmYS5A7HaKxBEHITPu4Uor+hpsgLXCw= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810149964843.2614548761853; Fri, 11 Oct 2019 09:09:09 -0700 (PDT) Received: from localhost ([::1]:53394 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxTY-00017t-Dq for importer@patchew.org; Fri, 11 Oct 2019 12:09:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33787) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGt-0002W1-AE for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGs-0007is-2p for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:03 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:36711) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGr-0007iD-VW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:02 -0400 Received: by mail-yw1-xc44.google.com with SMTP id x64so3651768ywg.3 for ; Fri, 11 Oct 2019 08:56:01 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.55.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4OOGMGav7WyY+i6Vj46PkAX7nW+w3pL8v7F+DMrUq7Y=; b=aILbN6xZ30EdzU7O9mibwUqzEqS2SYXFObkfEjAJZKVPFnRsKsQ7cLSrGAVHICGR4V y3o7gQPy64gjZJ4lN1GLaHIvu5Gf0AQKQp2Kwnd4hPC4LOoeQj0mDoHM0iTZOxSKp79r oKAobjVm6JkBKqFytkWOtvdf/hVVug3pjTQpSpYwLwbi31tVKZsDJg7ocTjwNGL9IMgD 6Vhs/FsABJEFrTFGsKOCCezZDFf9xrpTXRJh+VkzdHmM2YRkCVblHLmFg9nIkmj8nNdj r+/SnYZvW3gGRxeKHEts9pWMhMSsxF7ig26z4IRTkj+4733JmWbcfLjwag+9/wtvfBTI lwJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4OOGMGav7WyY+i6Vj46PkAX7nW+w3pL8v7F+DMrUq7Y=; b=HDbSdpVcYTRwoF4AoThNyJBdnKGPsu7xoTf6GSlelY5yMkEHZn8PdmC91VUXBxVUGd NuEm/gdvNFjaE15jh1jLwz98mLDBPeW8uFxchbNLs2716numavHVzJwZQXDJWYymUPp8 yHSgN/ecFLVYfUKWBEWmnn/9bTP8tgUYQIzQa70kSgcrv6Ya5kJGHQmDXNGmuAWmpi6e Ab/bcHHHQU7J3mIaGmHRaRrn7Rp6VBx8MxbZcm7tic1On51vYTeZ0FvCN9IFNpoKoSR9 1dLiW19dD8z1vibGri+h+UvuShqntoetiAu5mQ6k1rHOeZyH/MRDS936upej8ETfD36w Yrow== X-Gm-Message-State: APjAAAXGsoOSfZ2xUrNSbVgJONwvTS19+gB51vSZTH4JVRhLFxzPL6bE qUKv7+kG8n6aWJdmySMnw76SyPkM0Ak= X-Google-Smtp-Source: APXvYqwHLw2/gfnwTQwIIZFwKjz0TnGLJTXYOlE8nNeeG5UP5SCUJBCwldg/tpfyZvnmrUSQOg0EDQ== X-Received: by 2002:a0d:d384:: with SMTP id v126mr2818553ywd.166.1570809360832; Fri, 11 Oct 2019 08:56:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 11/20] target/arm: Hoist computation of TBFLAG_A32.VFPEN Date: Fri, 11 Oct 2019 11:55:37 -0400 Message-Id: <20191011155546.14342-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" There are 3 conditions that each enable this flag. M-profile always enables; A-profile with EL1 as AA64 always enables. Both of these conditions can easily be cached. The final condition relies on the FPEXC register which we are not prepared to cache. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/cpu.h | 2 +- target/arm/helper.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 4d961474ce..9909ff89d4 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3192,7 +3192,7 @@ FIELD(TBFLAG_A32, XSCALE_CPAR, 4, 2) * the same thing as the current security state of the processor! */ FIELD(TBFLAG_A32, NS, 6, 1) -FIELD(TBFLAG_A32, VFPEN, 7, 1) /* Not cached. */ +FIELD(TBFLAG_A32, VFPEN, 7, 1) /* Partially cached, minus FPEXC. = */ FIELD(TBFLAG_A32, CONDEXEC, 8, 8) /* Not cached. */ FIELD(TBFLAG_A32, SCTLR_B, 16, 1) /* For M profile only, set if FPCCR.LSPACT is set */ diff --git a/target/arm/helper.c b/target/arm/helper.c index 398e5f5d6d..89aa6fd933 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11088,6 +11088,9 @@ static uint32_t rebuild_hflags_m32(CPUARMState *env= , int fp_el, { uint32_t flags =3D 0; =20 + /* v8M always enables the fpu. */ + flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); + if (arm_v7m_is_handler_mode(env)) { flags =3D FIELD_DP32(flags, TBFLAG_A32, HANDLER, 1); } @@ -11119,6 +11122,10 @@ static uint32_t rebuild_hflags_a32(CPUARMState *en= v, int fp_el, ARMMMUIdx mmu_idx) { uint32_t flags =3D rebuild_hflags_aprofile(env); + + if (arm_el_is_aa64(env, 1)) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); + } return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags); } =20 @@ -11250,14 +11257,13 @@ void cpu_get_tb_cpu_state(CPUARMState *env, targe= t_ulong *pc, flags =3D FIELD_DP32(flags, TBFLAG_A32, VECSTRIDE, env->vfp.vec_stride); } + if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30)) { + flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); + } } =20 flags =3D FIELD_DP32(flags, TBFLAG_A32, THUMB, env->thumb); flags =3D FIELD_DP32(flags, TBFLAG_A32, CONDEXEC, env->condexec_bi= ts); - if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30) - || arm_el_is_aa64(env, 1) || arm_feature(env, ARM_FEATURE_M)) { - flags =3D FIELD_DP32(flags, TBFLAG_A32, VFPEN, 1); - } pstate_for_ss =3D env->uncached_cpsr; } =20 --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810290; cv=none; d=zoho.com; s=zohoarc; b=AeQTMEDRggDY13s+HWolT+7q2wjhSdNVgn92ZcbjuYuq4PtG+XNWzjOEuNjGfqU7N5ONmc+jZbn70IAwa+TQh3sT7guxaqLIFKVeoot5MrlYHKzdP9PlxEe57gj1x2/9FLMuZapLd6fnEzvvMXM2kY51PG2NddQuOxMZjlvy1Kg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810290; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=liE7k7KCDLaE4P9fXyFmPEwyl1E5DGcmCPn5aQ0Fr1o=; b=UWCvWj1sKpYCFYw5F5gF3XCMOMaDxUEqfl7l8cXAlT+QIlvI53eyL34Pjydg0y1Cn8nRiDCoG6iYqqpeZTzyfYUbROuE2l19RTo8jxneEEcbDc70ppKX93U1F3Ifkzl1tctdrHmIQ1vJBo6pMmWYCBbG5MA6RBZzeaOR3J8N4Pk= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810290559957.379316530165; Fri, 11 Oct 2019 09:11:30 -0700 (PDT) Received: from localhost ([::1]:53436 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxVo-0004bp-VT for importer@patchew.org; Fri, 11 Oct 2019 12:11:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33815) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGu-0002Xx-7y for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGt-0007jY-0k for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:04 -0400 Received: from mail-yw1-xc43.google.com ([2607:f8b0:4864:20::c43]:33195) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGs-0007jB-S9 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:02 -0400 Received: by mail-yw1-xc43.google.com with SMTP id w140so3657474ywd.0 for ; Fri, 11 Oct 2019 08:56:02 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=liE7k7KCDLaE4P9fXyFmPEwyl1E5DGcmCPn5aQ0Fr1o=; b=uOz6AHkd2d3q7ZVJfUDbFm+UrMVRxVL3WE/P8wG7lVudDqO0pAIurHwyg13Zy3JwOO W38gZMAutEp/EXIBFoZI/UTgKmr/J2KzNbc7Tjr0IVUUKcqRIEvMa+g4nwbTtHUsDqwI ZbSd+S0uOUDh/WboDzSpBxJs3QltLfF5jrJQilj3gwfyZzSt847AV1ny+oSne2bD9afL mX87w3Defe3sOZaUzOAkYgk+CVw3468VRKqckP1oEyEFhv7UUIqQOgZIkXjukn1QSASI XxRRX/hzaCG4NTLPetFVPuYQZT2PcMyVhfV7HP0obG8Qh6oZ5GAgMA+dlxgr1fRYMdNJ h/eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=liE7k7KCDLaE4P9fXyFmPEwyl1E5DGcmCPn5aQ0Fr1o=; b=JEIVY9o+HnBMAxzNYNT7sE5piYjjK4PUIVzfbzMyOKPXtaIBEhlWMqtzoAe4IODPdO S7g8Ql0Mhm0AsDnDnjDX4UkUzcK25DHMXuebXsGDxJeXFnfrhadoIBP72AaIa7MOrDCO cI9NiZma3QJtZtI83+ba9g8AxtX53++i11X/RgiHVObzOAnsTERXCtjrphVWezcQZ5Pk SE014NwDNz9fUL8NV8sVv0zsqjnpF6HUfTz32pwI5ONeAYhTYwuVp3wsF4WacIQZsyZk NdSKOYir8SR4av7fyhD1S1o9HDepKwlo6k0RAKPN07qhEOLuj3OVij2eVl6Y3Azx4c8O zzIA== X-Gm-Message-State: APjAAAVOu5i51uidzUtB3AapgawPaJf24JvKZzs8xB9idkbK94FYEZut 8jNCcPjw/LzG1XdhXlCeSkRhkpyoQKo= X-Google-Smtp-Source: APXvYqxnOcTOtvNg+9OKGE6lOUucbBU2xFdY8I81zb78ljBE7DMuuFgcNj6dS7Fze1NammGc6Z0nYw== X-Received: by 2002:a81:2cc6:: with SMTP id s189mr2934231yws.154.1570809361992; Fri, 11 Oct 2019 08:56:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 12/20] target/arm: Add arm_rebuild_hflags Date: Fri, 11 Oct 2019 11:55:38 -0400 Message-Id: <20191011155546.14342-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This function assumes nothing about the current state of the cpu, and writes the computed value to env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/cpu.h | 6 ++++++ target/arm/helper.c | 30 ++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 9909ff89d4..d844ea21d8 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3297,6 +3297,12 @@ void arm_register_pre_el_change_hook(ARMCPU *cpu, AR= MELChangeHookFn *hook, void arm_register_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, void *opaque); =20 +/** + * arm_rebuild_hflags: + * Rebuild the cached TBFLAGS for arbitrary changed processor state. + */ +void arm_rebuild_hflags(CPUARMState *env); + /** * aa32_vfp_dreg: * Return a pointer to the Dn register within env in 32-bit mode. diff --git a/target/arm/helper.c b/target/arm/helper.c index 89aa6fd933..85de96d071 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11198,17 +11198,35 @@ static uint32_t rebuild_hflags_a64(CPUARMState *e= nv, int el, int fp_el, return rebuild_hflags_common(env, fp_el, mmu_idx, flags); } =20 +static uint32_t rebuild_hflags_internal(CPUARMState *env) +{ + int el =3D arm_current_el(env); + int fp_el =3D fp_exception_el(env, el); + ARMMMUIdx mmu_idx =3D arm_mmu_idx(env); + + if (is_a64(env)) { + return rebuild_hflags_a64(env, el, fp_el, mmu_idx); + } else if (arm_feature(env, ARM_FEATURE_M)) { + return rebuild_hflags_m32(env, fp_el, mmu_idx); + } else { + return rebuild_hflags_a32(env, fp_el, mmu_idx); + } +} + +void arm_rebuild_hflags(CPUARMState *env) +{ + env->hflags =3D rebuild_hflags_internal(env); +} + void cpu_get_tb_cpu_state(CPUARMState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { - ARMMMUIdx mmu_idx =3D arm_mmu_idx(env); - int current_el =3D arm_current_el(env); - int fp_el =3D fp_exception_el(env, current_el); uint32_t flags, pstate_for_ss; =20 + flags =3D rebuild_hflags_internal(env); + if (is_a64(env)) { *pc =3D env->pc; - flags =3D rebuild_hflags_a64(env, current_el, fp_el, mmu_idx); if (cpu_isar_feature(aa64_bti, env_archcpu(env))) { flags =3D FIELD_DP32(flags, TBFLAG_A64, BTYPE, env->btype); } @@ -11217,8 +11235,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, *pc =3D env->regs[15]; =20 if (arm_feature(env, ARM_FEATURE_M)) { - flags =3D rebuild_hflags_m32(env, fp_el, mmu_idx); - if (arm_feature(env, ARM_FEATURE_M_SECURITY) && FIELD_EX32(env->v7m.fpccr[M_REG_S], V7M_FPCCR, S) !=3D env->v7m.secure) { @@ -11242,8 +11258,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, flags =3D FIELD_DP32(flags, TBFLAG_A32, LSPACT, 1); } } else { - flags =3D rebuild_hflags_a32(env, fp_el, mmu_idx); - /* * Note that XSCALE_CPAR shares bits with VECSTRIDE. * Note that VECLEN+VECSTRIDE are RES0 for M-profile. --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810438; cv=none; d=zoho.com; s=zohoarc; b=b9ZVgMIb51uzplyFdw/tGM5iAn0hPfKZKhw9sl483ebpjhYsTuRstt6I2E/8Eb0jDmfxJ9Y7emRNXZ0a0XhtISG/wVc7gRsSYkVZgRRIiGxK7+AX2hNvRJ4YdrgTY8raD7SIhacZjycd/2Wz1SlEYuDkXl1c1juoxlzgVXoG9Rg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810438; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5HJoq6lK/mQpFrv0P0Kk1NFyZoCClraFEphXXr+4OkQ=; b=ZbS1ia9JLlI2qk7sL2gAUUKjqJLgx+o67kHv90C6H/n5VXhzTff1XARKwrQI2+7fsQPq07FAyjtf4jX7KXLx9hOlb5CZZAURePp4ESPbJZPcezoNT7Sgfyo+wckIZt7cK3WHIKs26LI/Kp7+3Bq2/0ZJcCb6ASLLBtqYEVjWkM4= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810438596419.93496856491777; Fri, 11 Oct 2019 09:13:58 -0700 (PDT) Received: from localhost ([::1]:53500 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxY8-0006s2-9Z for importer@patchew.org; Fri, 11 Oct 2019 12:13:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33843) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGv-0002Zl-C8 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGu-0007kM-2B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:05 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:42231) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGt-0007k5-Ul for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:04 -0400 Received: by mail-yb1-xb43.google.com with SMTP id 4so3245167ybq.9 for ; Fri, 11 Oct 2019 08:56:03 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5HJoq6lK/mQpFrv0P0Kk1NFyZoCClraFEphXXr+4OkQ=; b=ohHwlKZW6TvjzLmcmZaKtzK8LuoHGIehuZTlYRiet+nqIvXkd7UC/4eF4SQpI9xxnu lNjkP0PpRAjjYxQj894T894kq5XmxE66w8B7O0WnET65IgP8w15Tj62Rvavp1qXIJD9m rjUMrTz8FNUHlBiD4IO6Kb5vA0XGNq5LJf5K7mU37WIutuBe+SDMB9GLEHIIFCtW9BiN y8AvTpGbhZnbYTYKaCrn2XuAA+YqNDgdFfu2MNJjb6nlRZjd3wZYkIHZgZgRgZG4JXBA zVl4mhpfaMRWf0CSW5UCzzZjtx9Zo9OV3IK91gSX0/qIUFwTIF+xPdLworg1qWHL4vuv O6mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5HJoq6lK/mQpFrv0P0Kk1NFyZoCClraFEphXXr+4OkQ=; b=Jlp0cp2oyDgJGsrONdZhW7/cam/rZyXoUa4xXQhOZwvNMhq2VwaNJr4QjOmPDs3l9A 9r8g//66SCCQOoVlXJHWfP5rbFEWUOo84MZggGcKgPm+/frFjlOk2qyWPTtbd6iT/lpU STKnAyVP6RDvZtXmEOP8kWbsz2TTU7j3ShL14tckUMd58mTNClmPmhWRS5a8p8coORvt f4GJ9Tv5cIxhHZ/1CUaXpC3TvmoUDckI/wiIGP1F+dP9Ldf59HXgmln3zZRmRstcLnVi +l23Kcx17jUWC/WKDZXj2CiOlKx3J2XZneu90QO92W2y2fK3zIaXgLgLpSZW0aq1kCyO /Ypg== X-Gm-Message-State: APjAAAWCQ79bUR9EZvIzZxriXwHgz8yO6MHcz1DsPxbET5GQ8rUhbV3G DsoKxnLjVINxb8Lu4IVfgh8IezXTovg= X-Google-Smtp-Source: APXvYqxZFtvA0i/Q/lh+8ZJRwllCAWuNXe+/w0HneazqhEj0gs1U9IZH+8KNr4pt5/x0FpKsIsZYDw== X-Received: by 2002:a25:680e:: with SMTP id d14mr1717687ybc.510.1570809363073; Fri, 11 Oct 2019 08:56:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 13/20] target/arm: Split out arm_mmu_idx_el Date: Fri, 11 Oct 2019 11:55:39 -0400 Message-Id: <20191011155546.14342-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@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: 2607:f8b0:4864:20::b43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Avoid calling arm_current_el() twice. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/internals.h | 9 +++++++++ target/arm/helper.c | 12 +++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 232d963875..f5313dd3d4 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -949,6 +949,15 @@ void arm_cpu_update_virq(ARMCPU *cpu); */ void arm_cpu_update_vfiq(ARMCPU *cpu); =20 +/** + * arm_mmu_idx_el: + * @env: The cpu environment + * @el: The EL to use. + * + * Return the full ARMMMUIdx for the translation regime for EL. + */ +ARMMMUIdx arm_mmu_idx_el(CPUARMState *env, int el); + /** * arm_mmu_idx: * @env: The cpu environment diff --git a/target/arm/helper.c b/target/arm/helper.c index 85de96d071..3f7d3f257d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11026,15 +11026,12 @@ ARMMMUIdx arm_v7m_mmu_idx_for_secstate(CPUARMStat= e *env, bool secstate) } #endif =20 -ARMMMUIdx arm_mmu_idx(CPUARMState *env) +ARMMMUIdx arm_mmu_idx_el(CPUARMState *env, int el) { - int el; - if (arm_feature(env, ARM_FEATURE_M)) { return arm_v7m_mmu_idx_for_secstate(env, env->v7m.secure); } =20 - el =3D arm_current_el(env); if (el < 2 && arm_is_secure_below_el3(env)) { return ARMMMUIdx_S1SE0 + el; } else { @@ -11042,6 +11039,11 @@ ARMMMUIdx arm_mmu_idx(CPUARMState *env) } } =20 +ARMMMUIdx arm_mmu_idx(CPUARMState *env) +{ + return arm_mmu_idx_el(env, arm_current_el(env)); +} + int cpu_mmu_index(CPUARMState *env, bool ifetch) { return arm_to_core_mmu_idx(arm_mmu_idx(env)); @@ -11202,7 +11204,7 @@ static uint32_t rebuild_hflags_internal(CPUARMState= *env) { int el =3D arm_current_el(env); int fp_el =3D fp_exception_el(env, el); - ARMMMUIdx mmu_idx =3D arm_mmu_idx(env); + ARMMMUIdx mmu_idx =3D arm_mmu_idx_el(env, el); =20 if (is_a64(env)) { return rebuild_hflags_a64(env, el, fp_el, mmu_idx); --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810541; cv=none; d=zoho.com; s=zohoarc; b=CK2QnQY0MjuxnEGqYvMabnJsbEaoUqNcBFZcEv6gaL22jwsytgOxcQD+g5r1WyXIkgw4h/1rPM1J6kVRKHCKvhSeTnzQ7tVpKds09Zee6aRoB1lFYj/UxsKT0xVsedo2mwgYy3r1uThgZoCI/o3tDTK0yJQGBS8TTZxnlFcyDbk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810541; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ReDLvA+WR/T82Ne1Z6mUqgY0iX8aRnhgEWdNBPA2eNw=; b=RxPThXcE7kk6Q4VyWtZQDSDBruQhw/4A9QrgMzqFdeqbSIdYcmboquuaEreIsTXXsisA20s8OyZjL1ixGpidm6HjnCvq+pF83+jiV8mCbkoG4nxDM50Mp3p0HxIoysSz80tFDd/8Joq/O09/DrpNwk4OtL/oUwgpn78vdniNvWM= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810541487884.8323510822687; Fri, 11 Oct 2019 09:15:41 -0700 (PDT) Received: from localhost ([::1]:53548 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxZm-0000OB-AC for importer@patchew.org; Fri, 11 Oct 2019 12:15:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33868) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGw-0002bX-8n for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGv-0007lZ-7N for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:06 -0400 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]:37867) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGv-0007lB-3c for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:05 -0400 Received: by mail-yb1-xb44.google.com with SMTP id z125so3257532ybc.4 for ; Fri, 11 Oct 2019 08:56:05 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ReDLvA+WR/T82Ne1Z6mUqgY0iX8aRnhgEWdNBPA2eNw=; b=wswCKfzZ6ZGMe3YYDoaISuVaqu0ShmUFqHtawTQxD6dxDG6iPuTssqczv+YrA9s6Mp u6fq4eIgOF1k20SRumbKrjDvmQQJPtU3CXf48TBNADU5zY4gSLZZvk94IJsACbmgKgXO alE0vPdweclCXnEGNWkuE5gqhp+R3Sa48tl0lWotAhebsNMjgw2hp8uLifNQNmj06Q1q Ixf75bivWH6cFM3ioQyysonDMftMFv/fKzqmZ6LI3kjGWdk9Gi9NcdVUkCx7Qi7c4AAt SwVn7GCirvYX2UyGVPQSDkiuwuV6+7cqkcb864jpkTSWj5L4H4FPlEX3l/MDuYVdamox QLmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ReDLvA+WR/T82Ne1Z6mUqgY0iX8aRnhgEWdNBPA2eNw=; b=gi0pQnV7JjuQrk+7zLVIXHnvHzGVYiVi5+y2rB7+QHY80ggJKq/ckHXkHWUFEUhAco dvda9bJuJAB5uy367IGCEyc9jDVmwlzRwnyIZZUkrumupY6n4y9ARp9BACBbgGMKn4/X Xvm252rroUTXGRAqDjyp21PmPH9GJ7vUW++Bf8LCQTTj6PW5KRViXXIu8SJr3K3vaLCJ WRu5tD7bFDkcX7VasbCvJFieQPqbAil74I7PgZp2I2r1TD0KoLFfbD5dfi+xjE28Xe3c s6hHTuiplX8BpWcwHz0/52Nw2l2hFNMSe1Fo88txbumUTfT5Gm2GwfJhDkavd8hN1QcR XKYg== X-Gm-Message-State: APjAAAVo4zZzuAOf4fP7H9+3viDaX3q8GhLWdgBI4l6+Ir6EthQhhQcD rqCLjzek+mVtLRHj+ve/eHcV1B5SPdQ= X-Google-Smtp-Source: APXvYqwZOkNFX1UP2/pMPPHNfIpIor/Zp5Y8bZZEI5L5PNJDnmm7gRTzymY48VTc5Fvn4QLOGd2cDg== X-Received: by 2002:a5b:30d:: with SMTP id j13mr10598348ybp.308.1570809364235; Fri, 11 Oct 2019 08:56:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 14/20] target/arm: Hoist store to cs_base in cpu_get_tb_cpu_state Date: Fri, 11 Oct 2019 11:55:40 -0400 Message-Id: <20191011155546.14342-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" By performing this store early, we avoid having to save and restore the register holding the address around any function calls. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 3f7d3f257d..37424e3d4d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11225,6 +11225,7 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, { uint32_t flags, pstate_for_ss; =20 + *cs_base =3D 0; flags =3D rebuild_hflags_internal(env); =20 if (is_a64(env)) { @@ -11298,7 +11299,6 @@ void cpu_get_tb_cpu_state(CPUARMState *env, target_= ulong *pc, } =20 *pflags =3D flags; - *cs_base =3D 0; } =20 #ifdef TARGET_AARCH64 --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810802; cv=none; d=zoho.com; s=zohoarc; b=hL0/lssxKkn8bXMPiHbjwTXbYLvhYHN1QXM2U7EvD2PT3AZAEsjCl0rpzzlbBjUY0smFYPNfVr+1UiiISL5XEUE1b4b0hmI/NqPzHt77PuihUGWY4aRafkEfhVepARQgev6JQnMk6x+4fQtbbsPJ+5ZkCYW/haE6lcAaZfV81sA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810802; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Iin/3YIyrPimduLw1VgVV/RDqodmDq3TgBG1S+Tb+Mo=; b=l7HGxwKLWG4AnUT0wEjScjweQjQwdE/fjf91u1RPUQ1g+cmcu10BlQavmZLzTWq4WTL5Mkc3i61HOBUF+4MVbxIOvlWVObe0/0jU55dJ/JUuiNhgHDNiOVEPWBMiwjEHrXHzuW1k8+lM1vuCB9Wmya88aNPtOabO9/FOQM+Lof0= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810802135209.71317907994455; Fri, 11 Oct 2019 09:20:02 -0700 (PDT) Received: from localhost ([::1]:53630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxe2-0003mC-SN for importer@patchew.org; Fri, 11 Oct 2019 12:19:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33892) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxGx-0002db-Hk for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGw-0007mj-Bw for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:07 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:34612) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGw-0007mL-8N for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:06 -0400 Received: by mail-yw1-xc44.google.com with SMTP id d192so3653768ywa.1 for ; Fri, 11 Oct 2019 08:56:06 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Iin/3YIyrPimduLw1VgVV/RDqodmDq3TgBG1S+Tb+Mo=; b=lU7J01XEmy7MwlGMcLEal+OIpkx5U72IeW5sQlWZeUUQtC5BH2JLG+pYtkNuCPJxjO Yz/GRsQBIDXjb+YO17oID6BTV2CEolWF2Dm8AZE2kKbj4vxdgtHSNV7P9McwOyAhlGu/ Z1JndOwbmAcUXggIo4tocmtf9kzatvQwqA4927qeMkFKrq5Qrw0jMhRWDYXPP1O5+hAT e4awSXVvlPTzqEeZhVXlT4Ck5ar3PbPpouryt2ROWj55gL4t/UsoRau2E+tu/2WYZrg0 CxuEgKP+NUnNLaFkfDfzUQ94zHE5acyxLO3I6UpAg9edJsOsjRQJuAcpIsFC8MqTCkfB UYpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Iin/3YIyrPimduLw1VgVV/RDqodmDq3TgBG1S+Tb+Mo=; b=WB4QeVt8XBb7UlQTevu5Z7+U/of9rLE7H0WFu305mkK0PZquPy+1OEl5xYFP0VWAEP yEY7gMLBbZb/elIUtuVT1GHo2rdsBgZz/QLBVd5rZCoOMb+6VgmpAlrjlFmHgIP16n88 nol1rHTYfBtIUvbTuQsI1J25QrHYQovZmhhsA1UGAI+m96fvE8qjVQ2KWRhJzGJHn/G0 RDGpabyC2BAaj0nPOiYXuTsTh/RyAIvlpnq2FYLXkl7ayZlYtgYdNoJyavSWI+fpziWD US6MM8OB1XMldVLHlD0jpSIsWm9nxQXEIWt9KgI081moeRxxKZMzFE2oQKW7yE0UbQUx aUSg== X-Gm-Message-State: APjAAAV/SDCWVJ65XRnMqfoCvtKKwkakoWBnk/OXZHUa9xjM49PhB04n FdcRwC67W+PRrqhj4fJYUSqOWWhhkis= X-Google-Smtp-Source: APXvYqzB2U7t4OwWDTLOQSrLtqH83asSKK/okmpAwye7ra1LpLdPxxtEIN68YMgAd96dWe7Nr9ctOw== X-Received: by 2002:a81:441b:: with SMTP id r27mr2817947ywa.371.1570809365305; Fri, 11 Oct 2019 08:56:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 15/20] target/arm: Add HELPER(rebuild_hflags_{a32, a64, m32}) Date: Fri, 11 Oct 2019 11:55:41 -0400 Message-Id: <20191011155546.14342-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This functions are given the mode and el state of the cpu and writes the computed value to env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/helper.h | 4 ++++ target/arm/helper.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/target/arm/helper.h b/target/arm/helper.h index 1fb2cb5a77..3d4ec267a2 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -90,6 +90,10 @@ DEF_HELPER_4(msr_banked, void, env, i32, i32, i32) DEF_HELPER_2(get_user_reg, i32, env, i32) DEF_HELPER_3(set_user_reg, void, env, i32, i32) =20 +DEF_HELPER_FLAGS_2(rebuild_hflags_m32, TCG_CALL_NO_RWG, void, env, int) +DEF_HELPER_FLAGS_2(rebuild_hflags_a32, TCG_CALL_NO_RWG, void, env, int) +DEF_HELPER_FLAGS_2(rebuild_hflags_a64, TCG_CALL_NO_RWG, void, env, int) + DEF_HELPER_1(vfp_get_fpscr, i32, env) DEF_HELPER_2(vfp_set_fpscr, void, env, i32) =20 diff --git a/target/arm/helper.c b/target/arm/helper.c index 37424e3d4d..b2d701cf00 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11220,6 +11220,30 @@ void arm_rebuild_hflags(CPUARMState *env) env->hflags =3D rebuild_hflags_internal(env); } =20 +void HELPER(rebuild_hflags_m32)(CPUARMState *env, int el) +{ + int fp_el =3D fp_exception_el(env, el); + ARMMMUIdx mmu_idx =3D arm_mmu_idx_el(env, el); + + env->hflags =3D rebuild_hflags_m32(env, fp_el, mmu_idx); +} + +void HELPER(rebuild_hflags_a32)(CPUARMState *env, int el) +{ + int fp_el =3D fp_exception_el(env, el); + ARMMMUIdx mmu_idx =3D arm_mmu_idx_el(env, el); + + env->hflags =3D rebuild_hflags_a32(env, fp_el, mmu_idx); +} + +void HELPER(rebuild_hflags_a64)(CPUARMState *env, int el) +{ + int fp_el =3D fp_exception_el(env, el); + ARMMMUIdx mmu_idx =3D arm_mmu_idx_el(env, el); + + env->hflags =3D rebuild_hflags_a64(env, el, fp_el, mmu_idx); +} + void cpu_get_tb_cpu_state(CPUARMState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570811105; cv=none; d=zoho.com; s=zohoarc; b=Kv+SmUhTW9C3WEKrs2m8gacPoNXI6Q4JW/GcFTDd/ktqHF/yrr6qlB6VghkS0LL3d0S0cwp5iPfe1drZQ74JvxpHVnMLg9PPBvx/+nQlHpuxlIgpFSaAnCIjSKzF+rqbIyDVpFf8dejgH7xedw4BFIQ+C/UB2y1jBfAkbvvTDhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811105; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ALPpYr32kDp1ytFcWYZfVKvxKTo3nP4X483s1waY7YI=; b=Luj2PkWZyo8Jj0trHv2Na9BoGVYWPD4sF+0yDaI7Irzx/knXBntbUI6v1xtfgv+tmkQ68Bd1kouyMWSvyNF/5gU1zNQfErZJH7UOFgfld3PuwSlqxuSE8LE/ayJw9F4R/q0rBZ1CaJ2bi7+10KzseCzxFNiAH3YAy6n6svgWpNw= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570811105064134.36493523159027; Fri, 11 Oct 2019 09:25:05 -0700 (PDT) Received: from localhost ([::1]:53760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxis-0002hE-Ow for importer@patchew.org; Fri, 11 Oct 2019 12:24:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33936) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxH0-0002i9-4e for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGx-0007o9-Ok for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:09 -0400 Received: from mail-yb1-xb43.google.com ([2607:f8b0:4864:20::b43]:38344) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGx-0007nt-Ky for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:07 -0400 Received: by mail-yb1-xb43.google.com with SMTP id r68so3254204ybf.5 for ; Fri, 11 Oct 2019 08:56:07 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ALPpYr32kDp1ytFcWYZfVKvxKTo3nP4X483s1waY7YI=; b=p+a2RbvWCC2j7OSyXcBZbKEeDC2pvN+BnPhCoYPrQtgn0NCDdffUgrWvuzbEJqEiHd Yb72S8SnCmZgzzbYiK4kP57NrgTzhjpPGLV2Ln380+0y7TTZMAueyUf2mhXWHHe4FyDZ F7CYVhN1gIqOTSzxJ/d2xv9Cs7IjczZ8gjgoKx7fqZgwBEV/LQX2XOarbJDJdHLIFjDT 20GTr+4Xx3fhvfEJdaqfMjaF6v48e/o8UEfLhfNdLKEHxOOTJOtYCTJkkr8x/OuUrDj+ GQ4ntR+1XxXBC33tiL/a3nR6iAFPP4T/hKELuoRDCoxri50WXZh4H+q5E8V9FfSx5+md pGig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ALPpYr32kDp1ytFcWYZfVKvxKTo3nP4X483s1waY7YI=; b=ayZLGiGOYIzMpHz/KyHxNo5rMc+TI43UxAEbwDire3C/WbB+OeTEiWk8QuOx89Msh/ JO1+gbLPHan+Afbyy/G1SGpZnT3EbCBJFE/TJvnhM5XMfOlCV6VLYf3nBQMc7JCwAd3x tg4TaIt+bT8dvQsPtv/xx3c48aLdqmPzjEdfYPXek2WkDVqTwxpMAz0W/SrEiKsXp4jJ QycJtYT/ydwm6z1i0857WEfpnw4N4dD01PaFZxX9QCmpyP0hZ176CXruY80P5HYAbyoG VYhN0c8IXmMVrEqU7JgsHMortPJFt9gSiioRkXuW6/wnnbABmAZbj7d9efi33kQ6pm17 6G6A== X-Gm-Message-State: APjAAAW6UTJPrHCTtr41sOo4m17ucrSUOiCFOR+aW5t50hYis4UbBJJi d4XWG21XmDE70UGIHNhxutbKGvdGu0A= X-Google-Smtp-Source: APXvYqydZyBrjNlur0gaOLTd816jkFLvrJnhh3eEW14gVrtLmPmy1CGqP65Oza1YeisZ1+mrYupkGQ== X-Received: by 2002:a25:d4a:: with SMTP id 71mr10604797ybn.311.1570809366729; Fri, 11 Oct 2019 08:56:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 16/20] target/arm: Rebuild hflags at EL changes Date: Fri, 11 Oct 2019 11:55:42 -0400 Message-Id: <20191011155546.14342-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::b43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Begin setting, but not relying upon, env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- linux-user/syscall.c | 1 + target/arm/cpu.c | 1 + target/arm/helper-a64.c | 3 +++ target/arm/helper.c | 2 ++ target/arm/machine.c | 1 + target/arm/op_helper.c | 1 + 6 files changed, 9 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e2af3c1494..ebefd05140 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9982,6 +9982,7 @@ static abi_long do_syscall1(void *cpu_env, int num, a= bi_long arg1, aarch64_sve_narrow_vq(env, vq); } env->vfp.zcr_el[1] =3D vq - 1; + arm_rebuild_hflags(env); ret =3D vq * 16; } return ret; diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 2399c14471..d043e75166 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -406,6 +406,7 @@ static void arm_cpu_reset(CPUState *s) =20 hw_breakpoint_update_all(cpu); hw_watchpoint_update_all(cpu); + arm_rebuild_hflags(env); } =20 bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request) diff --git a/target/arm/helper-a64.c b/target/arm/helper-a64.c index bca80bdc38..b4cd680fc4 100644 --- a/target/arm/helper-a64.c +++ b/target/arm/helper-a64.c @@ -1025,6 +1025,7 @@ void HELPER(exception_return)(CPUARMState *env, uint6= 4_t new_pc) } else { env->regs[15] =3D new_pc & ~0x3; } + helper_rebuild_hflags_a32(env, new_el); qemu_log_mask(CPU_LOG_INT, "Exception return from AArch64 EL%d to " "AArch32 EL%d PC 0x%" PRIx32 "\n", cur_el, new_el, env->regs[15]); @@ -1036,10 +1037,12 @@ void HELPER(exception_return)(CPUARMState *env, uin= t64_t new_pc) } aarch64_restore_sp(env, new_el); env->pc =3D new_pc; + helper_rebuild_hflags_a64(env, new_el); qemu_log_mask(CPU_LOG_INT, "Exception return from AArch64 EL%d to " "AArch64 EL%d PC 0x%" PRIx64 "\n", cur_el, new_el, env->pc); } + /* * Note that cur_el can never be 0. If new_el is 0, then * el0_a64 is return_to_aa64, else el0_a64 is ignored. diff --git a/target/arm/helper.c b/target/arm/helper.c index b2d701cf00..aae7b62458 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7998,6 +7998,7 @@ static void take_aarch32_exception(CPUARMState *env, = int new_mode, env->regs[14] =3D env->regs[15] + offset; } env->regs[15] =3D newpc; + arm_rebuild_hflags(env); } =20 static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs) @@ -8345,6 +8346,7 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) pstate_write(env, PSTATE_DAIF | new_mode); env->aarch64 =3D 1; aarch64_restore_sp(env, new_el); + helper_rebuild_hflags_a64(env, new_el); =20 env->pc =3D addr; =20 diff --git a/target/arm/machine.c b/target/arm/machine.c index 5c36707a7c..eb28b2381b 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -756,6 +756,7 @@ static int cpu_post_load(void *opaque, int version_id) if (!kvm_enabled()) { pmu_op_finish(&cpu->env); } + arm_rebuild_hflags(&cpu->env); =20 return 0; } diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c index 0fd4bd0238..ccc2cecb46 100644 --- a/target/arm/op_helper.c +++ b/target/arm/op_helper.c @@ -404,6 +404,7 @@ void HELPER(cpsr_write_eret)(CPUARMState *env, uint32_t= val) * state. Do the masking now. */ env->regs[15] &=3D (env->thumb ? ~1 : ~3); + arm_rebuild_hflags(env); =20 qemu_mutex_lock_iothread(); arm_call_el_change_hook(env_archcpu(env)); --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570810954; cv=none; d=zoho.com; s=zohoarc; b=AvTMUklqz8pcENT3mcdIzk5SMsvPv99gTDi0mtmssSvgxeanq+pj6gwQNtFV/c8/UMC0EmxS94XvDUBqxxuRrAd00Y3qowrAfILtvN9GPNqaNwpuJcqgSqlAlzOryz/0akbGcf9M030YYQ73ZIiExDJODlxg/NRo7BLj0qAi4ko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810954; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=cl2cwLMmZGvzhfN3CV68TLR9Wvkj57GFOp1995kUBYY=; b=BniFsh2a1gu6CCvHXtJHuB2cO2PSU9xc1npSpoGsmpx1krdnnMUFQe+Ak+WSADBQi6WibBlY/mgJnS63P1LmIaduOb5S5LBY2hYmsiHa/HwzKbwYCFrXv+vSCwek+vTfXQyBCcT/FPDQS+WFYuSpobx2UFaza7Rk0Zpl10cslgc= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810954864893.8229726179297; Fri, 11 Oct 2019 09:22:34 -0700 (PDT) Received: from localhost ([::1]:53680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgV-0007Jq-9s for importer@patchew.org; Fri, 11 Oct 2019 12:22:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33938) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxH0-0002iD-4N for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxGy-0007pM-TG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:09 -0400 Received: from mail-yw1-xc44.google.com ([2607:f8b0:4864:20::c44]:36925) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGy-0007os-Pa for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:08 -0400 Received: by mail-yw1-xc44.google.com with SMTP id m7so3648756ywe.4 for ; Fri, 11 Oct 2019 08:56:08 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cl2cwLMmZGvzhfN3CV68TLR9Wvkj57GFOp1995kUBYY=; b=B49Z/cTCHUm2tttXa2Kqx7xjEb91HMFOUpd2mgGzAjop/aq5kUs/1WoYQR2ENO0+ux E9zyUvimlJzur/K08AvVyeE3riN3VpaFRsnv7qviOVK1OMyf4IRc8kcPi7G6oQQJS/iM 6NiqlhZi1DNxr5vrSlsL6tov8J4s31/1XqoRhA56SnJ5IkZzhmX4+hnlJYFCdsp5cmB+ HThBU1QgUJA8GXqzm2QzpiJu3jumYabNEM5m70386s/g7XjeLkGMfSzgS97sORNCR955 eAd12by+4L4IkGbpGJVI6HdOrDHLQHFOwyNBhTmDyj1lxZj/999QAuvMsCMbZPv9SKh8 mX5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cl2cwLMmZGvzhfN3CV68TLR9Wvkj57GFOp1995kUBYY=; b=PfDxf8qZKGzGqOjqVcIn8o/lC3hoTyQR1WppvFwiVMKrpswWaHNqjTI8ejAP95NYPD FAYN4a2nIskoxv6C2LY2QciU5AwuijP+rbCk7nZYHNJ29gQLFC3RMq8tgL5saXk+VOOX zegynCznfW0wXE9OeW784Ys8RZv674mjFEN5cgIY4m26TJLiwXUtVndA2XuwR/Bdswg3 LaRzTxZydutS1XZxrvCz7o9h7kRzO5g38RDs7QCb14e32vnFidLgK5D/tZL051yY4IHY ofLPBo/qkD8wTaMoB+nzPcXEw51qvuacZf4jhJmQJ1cd+qqGUNQ6gVUuuU8Bs+SDxpAU BF0w== X-Gm-Message-State: APjAAAXHmtLFbBXsg6o1lQ7agLY2SZdSqf2Pw1W86a59mB+6UQArKY8g sxh3x2AlBeIIuEZkMf//fenkfOAS2eI= X-Google-Smtp-Source: APXvYqxjEiQp0d2g2BdkGJA+7WZkCvkXbF8R8hwoTRrm9N1Z7Q3Sy+QPF8/v91zzj6hzIJKxCiTONw== X-Received: by 2002:a0d:d956:: with SMTP id b83mr3097689ywe.68.1570809367858; Fri, 11 Oct 2019 08:56:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 17/20] target/arm: Rebuild hflags at MSR writes Date: Fri, 11 Oct 2019 11:55:43 -0400 Message-Id: <20191011155546.14342-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c44 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Continue setting, but not relying upon, env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/translate-a64.c | 13 +++++++++++-- target/arm/translate.c | 28 +++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 2d6cd09634..d4bebbe629 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -1789,8 +1789,17 @@ static void handle_sys(DisasContext *s, uint32_t ins= n, bool isread, if ((tb_cflags(s->base.tb) & CF_USE_ICOUNT) && (ri->type & ARM_CP_IO))= { /* I/O operations must end the TB here (whether read or write) */ s->base.is_jmp =3D DISAS_UPDATE; - } else if (!isread && !(ri->type & ARM_CP_SUPPRESS_TB_END)) { - /* We default to ending the TB on a coprocessor register write, + } + if (!isread && !(ri->type & ARM_CP_SUPPRESS_TB_END)) { + /* + * A write to any coprocessor regiser that ends a TB + * must rebuild the hflags for the next TB. + */ + TCGv_i32 tcg_el =3D tcg_const_i32(s->current_el); + gen_helper_rebuild_hflags_a64(cpu_env, tcg_el); + tcg_temp_free_i32(tcg_el); + /* + * We default to ending the TB on a coprocessor register write, * but allow this to be suppressed by the register definition * (usually only necessary to work around guest bugs). */ diff --git a/target/arm/translate.c b/target/arm/translate.c index 698c594e8c..cb47cd9744 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -6890,6 +6890,8 @@ static int disas_coproc_insn(DisasContext *s, uint32_= t insn) ri =3D get_arm_cp_reginfo(s->cp_regs, ENCODE_CP_REG(cpnum, is64, s->ns, crn, crm, opc1, opc2)); if (ri) { + bool need_exit_tb; + /* Check access permissions */ if (!cp_access_ok(s->current_el, ri, isread)) { return 1; @@ -7068,14 +7070,30 @@ static int disas_coproc_insn(DisasContext *s, uint3= 2_t insn) } } =20 - if ((tb_cflags(s->base.tb) & CF_USE_ICOUNT) && (ri->type & ARM_CP_= IO)) { - /* I/O operations must end the TB here (whether read or write)= */ - gen_lookup_tb(s); - } else if (!isread && !(ri->type & ARM_CP_SUPPRESS_TB_END)) { - /* We default to ending the TB on a coprocessor register write, + /* I/O operations must end the TB here (whether read or write) */ + need_exit_tb =3D ((tb_cflags(s->base.tb) & CF_USE_ICOUNT) && + (ri->type & ARM_CP_IO)); + + if (!isread && !(ri->type & ARM_CP_SUPPRESS_TB_END)) { + /* + * A write to any coprocessor regiser that ends a TB + * must rebuild the hflags for the next TB. + */ + TCGv_i32 tcg_el =3D tcg_const_i32(s->current_el); + if (arm_dc_feature(s, ARM_FEATURE_M)) { + gen_helper_rebuild_hflags_m32(cpu_env, tcg_el); + } else { + gen_helper_rebuild_hflags_a32(cpu_env, tcg_el); + } + tcg_temp_free_i32(tcg_el); + /* + * We default to ending the TB on a coprocessor register write, * but allow this to be suppressed by the register definition * (usually only necessary to work around guest bugs). */ + need_exit_tb =3D true; + } + if (need_exit_tb) { gen_lookup_tb(s); } =20 --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570811275; cv=none; d=zoho.com; s=zohoarc; b=U+Ghiwpp/j6Ki07otldalGU0OPoNGxtKfZX0MnHtycaYaER5y7y2zDkfkjC6wNu+vcZYFybJMVM8IxX1J0754MOTWKIpdFZizWuL3Qf5rzeYGUNBn9dIZ3zorw4fWtRH1AZcDaSKPUW6vA1qR0FxPPu2Y8lSSn1j232eFJG2mik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811275; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=0kUXqC720LILsCV2g+/0quuhAdJiaFyOvoOqO9J/BUY=; b=LiWOIBo4MRPyRgjhckdlg8+ZoD1Jrm5QPprTcAHjKyhb8+Oxuls6CxWkf5epgA2PIQmRoBCGUp/vFSsqm9nbca/lqLaqwXiBHqmCp6jJupksDRx0kmmRuWLFddfDpNcAA8o3fxzGB2h58roHwZRh6ESHLZdEhLGs8nzkEAzi2aQ= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570811275455681.4931606790443; Fri, 11 Oct 2019 09:27:55 -0700 (PDT) Received: from localhost ([::1]:53796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxli-0006RP-9A for importer@patchew.org; Fri, 11 Oct 2019 12:27:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33970) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxH1-0002jl-2A for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxH0-0007qu-29 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:10 -0400 Received: from mail-yw1-xc43.google.com ([2607:f8b0:4864:20::c43]:36711) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxGz-0007qT-Ul for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:10 -0400 Received: by mail-yw1-xc43.google.com with SMTP id x64so3651906ywg.3 for ; Fri, 11 Oct 2019 08:56:09 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0kUXqC720LILsCV2g+/0quuhAdJiaFyOvoOqO9J/BUY=; b=qU3xCe+rTvxtcdUGZdLBjsDDrxtB0ERic7bACzJDH3nvPWQCgZ8IPfp3NJjpuHnjGS z9irNej9DIL1eMEMbJNRvVgDZFygYAAw4rKA6yP72Ku40VmNgLBEOsimqRLauFKI6icg 1540DitB4QwfHSRdu5294JNAWRg0aHJzbwZvnwcE+iWPovstFudWJ/GusjkHJ9kQeZ4Q l4oYB+CjGlbCgD3XaZb8v8UfsFyz6429JfK+1U6Q/nWWkT9Ptc/tMfvnOquEhbfrP5cP x45f4Cznm8KjDPFV/8p/7Ee4/KN36IDHkY3P+BbE03+EcPVM6r/Fx3LZZ2+BxsSaFenC 74fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0kUXqC720LILsCV2g+/0quuhAdJiaFyOvoOqO9J/BUY=; b=cqLQMgkR1jV/ObjnqpDyi2TypaKL5/iDmFL27vFJ3mmiTiyDNTCbHp6vMYn7+cqBsg dhyjYeuiuAAxuakd4dQvHfBDveClhflO0bJdm5O5WwlpuwpIghyli//sLpkVk55+BOLm Ate+j6yMMr6b7u8LHoZAgQI6ERcfPaUHeGkFTGXDAmHRiPwbR5HGBFbCxDqOsQBHBNGy a6fvyRVgifjnWUmRU5ugTzaCQ+et6uVva4e1CzQaOS2+yNOoE+ijPQXo7FcPCnPxmsGl rBubtqG4P9/0IgBdeGGmqNeSblP64scCpCwKy8Er8VBbOaViiejjS4sroyVe6wAv42rq z9nw== X-Gm-Message-State: APjAAAUqubeuqToTha9ozUnQnm++2AthaX0d0zNk5eL+GC/i7BrWNF0P /wDQWrMGFe10IxSaondfD2CJ2Kf7DeE= X-Google-Smtp-Source: APXvYqz2mDccZd7OdJUzY7+c2+UUgjPxfc/jkJ1PF1Vi6uohBO+kPb3hJowce7ERp1aaUROqzSIF/A== X-Received: by 2002:a0d:c646:: with SMTP id i67mr2985197ywd.499.1570809369038; Fri, 11 Oct 2019 08:56:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 18/20] target/arm: Rebuild hflags at CPSR writes Date: Fri, 11 Oct 2019 11:55:44 -0400 Message-Id: <20191011155546.14342-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c43 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Continue setting, but not relying upon, env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/op_helper.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c index ccc2cecb46..b529d6c1bf 100644 --- a/target/arm/op_helper.c +++ b/target/arm/op_helper.c @@ -224,6 +224,7 @@ uint32_t HELPER(usat16)(CPUARMState *env, uint32_t x, u= int32_t shift) void HELPER(setend)(CPUARMState *env) { env->uncached_cpsr ^=3D CPSR_E; + arm_rebuild_hflags(env); } =20 /* Function checks whether WFx (WFI/WFE) instructions are set up to be tra= pped. @@ -387,6 +388,8 @@ uint32_t HELPER(cpsr_read)(CPUARMState *env) void HELPER(cpsr_write)(CPUARMState *env, uint32_t val, uint32_t mask) { cpsr_write(env, val, mask, CPSRWriteByInstr); + /* TODO: Not all cpsr bits are relevant to hflags. */ + arm_rebuild_hflags(env); } =20 /* Write the CPSR for a 32-bit exception return */ --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570809567; cv=none; d=zoho.com; s=zohoarc; b=EgJtNNeLHyDgdNapyYZYCelPUzXEZj8sGCrPuNJBX2UYlOu0u4vMv2wtrM2c9KTEMJ4wsxeaWyR3/v12RylRSnO3KYDuM9Tj4DArjbqXGA1DCkxpfKbhJK+Hlok0u/ledig8XNo4rbQ+k8woAMRWFq/yxeooSX6Y3gt0USCxXkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570809567; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=DCSw/5tSs06WnyBBz0elixvkoTyCltSaS21y5mPKf08=; b=of94Oi3XF1pWmqz+c4zWgJnGPPo7pCKVBOLSTllHodQufJEn4Smosv1wW2Tg7A6GGhZNp4vL9htOwPO4+QYH7NgSoPPYfKFKdH21dC1h69R9VPIM0rbuv8LEKOg85QE9BiBat0wQZ/TiQA6zIpZlH80fZnqcmgzXYhyf5T2HUPQ= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570809567432523.0778683828247; Fri, 11 Oct 2019 08:59:27 -0700 (PDT) Received: from localhost ([::1]:52860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxKA-00074i-EL for importer@patchew.org; Fri, 11 Oct 2019 11:59:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34007) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxH2-0002mm-Nt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxH1-0007t6-Jz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:12 -0400 Received: from mail-yw1-xc2f.google.com ([2607:f8b0:4864:20::c2f]:34677) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxH1-0007sV-GW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:11 -0400 Received: by mail-yw1-xc2f.google.com with SMTP id d192so3653868ywa.1 for ; Fri, 11 Oct 2019 08:56:11 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DCSw/5tSs06WnyBBz0elixvkoTyCltSaS21y5mPKf08=; b=RZk1XQ0AyDu7WLopi7UjKmZExBFfbiQQDTYGRKlQe/93Nnw8f8a5ic8TfED2nJkbcJ +a9f7L4hLPg2JIQZl4it4HPtlJXiv6DhbaPUi0yOzpH8F1uGFHGGLHZ8LIrt300R4FYU oKGLZuup6I6FzivBeKC9of/WjrxKHOKsSEhekVNT9hgnK9OpYjx6gQAf+25RFs26131F qdvr5TTNwAJUNn7yE4d64AOXe4Ex/M72r6RTtAz815QKEhiOf41ogqLNWqBGP7W5GfOr FpyUytdpYAyi51iamDUAUIKs3+TLjpge3t2X5k+/Ksd2hBrZV2TlnQVpBocVEN3VobAn tThQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DCSw/5tSs06WnyBBz0elixvkoTyCltSaS21y5mPKf08=; b=W1Be8ejcUmVRYs8l/opSy/Mw9biQQSRMMDCgWc9UB4j3xaeQ/b58KDAJWV+uxI6JaK AZeqPFtTulU96mNC3ocg4jiVQ376ZIKwVsJFC8taMzM5ABTtJZ5jfhDhycOzC3ZEZo0E fWbC09r+zCAMcWDXhZvTDjrQiF3x0rL9QJD9BXY5sO1nD2WylrFubu16RSy8ioirn5vd +eGbko8ez0eKscWWj5Dl+NHi+7VRKopdAxLm/0G8xlCQkDziOfSCJxUAHoD/sZ/Z4+nZ 57lHbWZ/gBhEgjJoFB8QHCYvLjNYaLwlG7vhSrhAU216f8jab+dZD0tA9+m/hGrAuA6M 1cxQ== X-Gm-Message-State: APjAAAVcO6Eqtp7woyzZQFvQgscFjJGPNQ0d8Bz/VLFHXt8l41o31iCE I6Gmb2ZoTzC4lP+YyEIrLP64pH/VWZ4= X-Google-Smtp-Source: APXvYqxfFIor3Lifc7V/tCQVIjwjcPP9/E+2byPsji6yxYLTxE6H3DO2dKQVtWHa2DT8j7xlbQGStA== X-Received: by 2002:a81:8282:: with SMTP id s124mr2994173ywf.498.1570809370122; Fri, 11 Oct 2019 08:56:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 19/20] target/arm: Rebuild hflags for M-profile. Date: Fri, 11 Oct 2019 11:55:45 -0400 Message-Id: <20191011155546.14342-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c2f X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Continue setting, but not relying upon, env->hflags. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- target/arm/m_helper.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c index 27cd2f3f96..f2512e448e 100644 --- a/target/arm/m_helper.c +++ b/target/arm/m_helper.c @@ -494,6 +494,7 @@ void HELPER(v7m_bxns)(CPUARMState *env, uint32_t dest) switch_v7m_security_state(env, dest & 1); env->thumb =3D 1; env->regs[15] =3D dest & ~1; + arm_rebuild_hflags(env); } =20 void HELPER(v7m_blxns)(CPUARMState *env, uint32_t dest) @@ -555,6 +556,7 @@ void HELPER(v7m_blxns)(CPUARMState *env, uint32_t dest) switch_v7m_security_state(env, 0); env->thumb =3D 1; env->regs[15] =3D dest; + arm_rebuild_hflags(env); } =20 static uint32_t *get_v7m_sp_ptr(CPUARMState *env, bool secure, bool thread= mode, @@ -895,6 +897,7 @@ static void v7m_exception_taken(ARMCPU *cpu, uint32_t l= r, bool dotailchain, env->regs[14] =3D lr; env->regs[15] =3D addr & 0xfffffffe; env->thumb =3D addr & 1; + arm_rebuild_hflags(env); } =20 static void v7m_update_fpccr(CPUARMState *env, uint32_t frameptr, @@ -1765,6 +1768,7 @@ static void do_v7m_exception_exit(ARMCPU *cpu) =20 /* Otherwise, we have a successful exception exit. */ arm_clear_exclusive(env); + arm_rebuild_hflags(env); qemu_log_mask(CPU_LOG_INT, "...successful exception return\n"); } =20 @@ -1837,6 +1841,7 @@ static bool do_v7m_function_return(ARMCPU *cpu) xpsr_write(env, 0, XPSR_IT); env->thumb =3D newpc & 1; env->regs[15] =3D newpc & ~1; + arm_rebuild_hflags(env); =20 qemu_log_mask(CPU_LOG_INT, "...function return successful\n"); return true; @@ -1959,6 +1964,7 @@ static bool v7m_handle_execute_nsc(ARMCPU *cpu) switch_v7m_security_state(env, true); xpsr_write(env, 0, XPSR_IT); env->regs[15] +=3D 4; + arm_rebuild_hflags(env); return true; =20 gen_invep: --=20 2.17.1 From nobody Fri May 3 01:01:02 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1570811587; cv=none; d=zoho.com; s=zohoarc; b=S7FBDlavR6Cv6ciQ+lKlkSZ+IEDus3eeYm/RUYHcCmqZURz+aqqpaaIQYM9oeZLF4C7jRf1Pj5uDgUb73eN3nx+Ubzq0IoQb6woA7bbJh0b7U9RejHPlOiV8u+HXDeiLY8/yA0GxGr0FDJI63nplC9WQNXmvkHCd8LTJO4/Atk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811587; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5TK2BjuSMMDdIP7qbR+6sWroGlmanOV91VZR8RZQmXE=; b=GWN6e8QfTFTt993vBItOj1J1wn5WermrQBCxS2h0byKxMtUKNmUadevEAfbBmhxxwv5a0IyttYOfj5prbX4F25oTC2SZ5xby2vxt1+p/7D+43tnMn2QQN93Vy0MEn3eTmfNIoJWbqkmq2coKq2IsJrRTWvuFycXpPtL2oiKcE9I= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570811587937239.42311099372523; Fri, 11 Oct 2019 09:33:07 -0700 (PDT) Received: from localhost ([::1]:53914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxqh-0002tJ-L6 for importer@patchew.org; Fri, 11 Oct 2019 12:33:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34022) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxH3-0002nz-Aj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxH2-0007tg-5B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:13 -0400 Received: from mail-yb1-xb41.google.com ([2607:f8b0:4864:20::b41]:39344) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIxH2-0007tP-1Z for qemu-devel@nongnu.org; Fri, 11 Oct 2019 11:56:12 -0400 Received: by mail-yb1-xb41.google.com with SMTP id z2so217309ybn.6 for ; Fri, 11 Oct 2019 08:56:12 -0700 (PDT) Received: from cloudburst.gateway.pace.com (67.216.151.25.pool.hargray.net. [67.216.151.25]) by smtp.gmail.com with ESMTPSA id d17sm2473139ywb.95.2019.10.11.08.56.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2019 08:56:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5TK2BjuSMMDdIP7qbR+6sWroGlmanOV91VZR8RZQmXE=; b=a2ptiFRhsf7+BU+L02eLqokAt4Qi1y0BibWRYxGi/ZF+3m3nbc4NmXIl/R3aDr7ok5 nqTnu4S6Gl9V0/LxPeY+FI6M0M82BVKHVTIWCUnGhi+p+V82kc6Tq0GijY+h65EWCeHY eXeFxPatzoEQe/rbsaFMNviY/nYdUVwPYEUIgahuzhJIVPszMcycLBsLhIjsXSBC/tZ9 nRX/Af09keUd5vo5cotY7UXkAP969d/zgNvxqbR/pzVayxQDRuN7cyh8tNCkH0Yqgzwu lAA6Wl+N4I8fb9S0tIArdmHANmciHVXB3pd076tTQNTY+gAMNNseDkq/6DV6E6qxYYD1 J63g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5TK2BjuSMMDdIP7qbR+6sWroGlmanOV91VZR8RZQmXE=; b=kbUtMGsnxoT1pSxYRof53WO+PpRV82ZP0oX/gFu982djZJ55DUXTnfsPeWfvaozfIA Dnhq/+6nDmrHVNAOK95MDSeyF52tGjHql1wK/yTqG6PKyI52U/o7Umqxsk2i10lt9nWp es6tNAd3mTQA64ENyavj9iZPbF9KJrFuB+DmAoz+i5smC3QE0+8dPDCKVy3g51+d25CC 24TKeFnIlI3avZfs3UgFynMaoYt39RyWSI07RnbGEPkq3eh8qhy2QSaGSVrUlo97rxtR xO7qUWbQxG18OVqs5VihTw4jgW2AI//hVIVLhxv1abHd/EsbDu4HtToLcdKZXpg4MtxE BR2g== X-Gm-Message-State: APjAAAVENVxQOIRu1Yz7O17EqoUOgwcq6BAqOYjQSrUFPuwn1mZk1hHq gC7ZIsANS2Bd/f/GvaOKbVp/f1Q+klc= X-Google-Smtp-Source: APXvYqweBV+yD6HZdgabysivNxaLQJBEu1VqZZ2q1kzbxKVXm+/i4fWgIfwJ7oZFb89rxyiWPDq6JQ== X-Received: by 2002:a5b:d:: with SMTP id a13mr10962807ybp.187.1570809371167; Fri, 11 Oct 2019 08:56:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v6 20/20] target/arm: Rely on hflags correct in cpu_get_tb_cpu_state Date: Fri, 11 Oct 2019 11:55:46 -0400 Message-Id: <20191011155546.14342-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191011155546.14342-1-richard.henderson@linaro.org> References: <20191011155546.14342-1-richard.henderson@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: 2607:f8b0:4864:20::b41 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent.desnogues@gmail.com, peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This is the payoff. From perf record -g data of ubuntu 18 boot and shutdown: BEFORE: - 23.02% 2.82% qemu-system-aar [.] helper_lookup_tb_ptr - 20.22% helper_lookup_tb_ptr + 10.05% tb_htable_lookup - 9.13% cpu_get_tb_cpu_state 3.20% aa64_va_parameters_both 0.55% fp_exception_el - 11.66% 4.74% qemu-system-aar [.] cpu_get_tb_cpu_state - 6.96% cpu_get_tb_cpu_state 3.63% aa64_va_parameters_both 0.60% fp_exception_el 0.53% sve_exception_el AFTER: - 16.40% 3.40% qemu-system-aar [.] helper_lookup_tb_ptr - 13.03% helper_lookup_tb_ptr + 11.19% tb_htable_lookup 0.55% cpu_get_tb_cpu_state 0.98% 0.71% qemu-system-aar [.] cpu_get_tb_cpu_state 0.87% 0.24% qemu-system-aar [.] rebuild_hflags_a64 Before, helper_lookup_tb_ptr is the second hottest function in the application, consuming almost a quarter of the runtime. Within the entire execution, cpu_get_tb_cpu_state consumes about 12%. After, helper_lookup_tb_ptr has dropped to the fourth hottest function, with consumption dropping to a sixth of the runtime. Within the entire execution, cpu_get_tb_cpu_state has dropped below 1%, and the supporting function to rebuild hflags also consumes about 1%. Assertions are retained for --enable-debug-tcg. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- v2: Retain asserts for future debugging. --- target/arm/helper.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index aae7b62458..c3e3dd2c41 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11249,12 +11249,15 @@ void HELPER(rebuild_hflags_a64)(CPUARMState *env,= int el) void cpu_get_tb_cpu_state(CPUARMState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { - uint32_t flags, pstate_for_ss; + uint32_t flags =3D env->hflags; + uint32_t pstate_for_ss; =20 *cs_base =3D 0; - flags =3D rebuild_hflags_internal(env); +#ifdef CONFIG_DEBUG_TCG + assert(flags =3D=3D rebuild_hflags_internal(env)); +#endif =20 - if (is_a64(env)) { + if (FIELD_EX32(flags, TBFLAG_ANY, AARCH64_STATE)) { *pc =3D env->pc; if (cpu_isar_feature(aa64_bti, env_archcpu(env))) { flags =3D FIELD_DP32(flags, TBFLAG_A64, BTYPE, env->btype); --=20 2.17.1