From nobody Thu Nov 13 21:55:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.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=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1583257944; cv=none; d=zohomail.com; s=zohoarc; b=YlOdszaa0uejSwr8Nqq3jdQacAnoGJVjO5Iuy7/RVCq2hiauSor/nFMyrpmh7msLG/dhZxC/dTSRI2+cjyK23WfGt+w3U4F9wCAkjUi9TnlGcNY573OVa8cUTktRUOZwNC5EaxmwXNkRnM1+SZwvIScnjTLBwljko7vyO2YRu/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583257944; h=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=BW8r3OV+Pyq8lB5xngUwKNwFXrFswSLDbGpWItcOSxQ=; b=Iq7daXjn3ukghaBO4kTaIRBj5DVygLIjeZICMVz9oRBLFpuOXhR5aJCAr4l59q6YCZfmkMiZ0MGDoMuh00Hh4CyR7Gup2ndpvUZqA4KE4pQnM3YUYhnIXH4L0S6d2I2oGE1dYzjquuw0G7DYaMz0ADI/TZ98JQo/4X4ddfjPVe4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1583257944701142.51607560625393; Tue, 3 Mar 2020 09:52:24 -0800 (PST) Received: from localhost ([::1]:51276 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9BiR-00039a-FP for importer@patchew.org; Tue, 03 Mar 2020 12:52:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41091) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9Bg3-0007Uo-OD for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9Bg2-0006JH-OT for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:55 -0500 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:38355) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j9Bg2-0006Ii-Im for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:54 -0500 Received: by mail-wm1-x343.google.com with SMTP id u9so3792890wml.3 for ; Tue, 03 Mar 2020 09:49:54 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id d63sm4867576wmd.44.2020.03.03.09.49.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 09:49:53 -0800 (PST) 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=BW8r3OV+Pyq8lB5xngUwKNwFXrFswSLDbGpWItcOSxQ=; b=Q4PtLl7+HZQYu7VMFn3dxi920sKXxwV2P7w6itTsq8iyzTwEfwZfG4aIul8mqwqMed R8qJV4HoFvWmm/tYYMEzQhEuHpxHqWzQH+AEi3VL7R76f6Cc6MRFmfJnLcMwwoWamjZU lMsEvUE/rqBF5jYRITmWZzSEIONBa8D7tb2hDeGbQ9IJtV+4yNwkU7fKUxsu9jBxDi4c mNMCSQ/L/VWbFnXbQF9zT39dg0NwNUrgvUeikTTXXgmiqctHiDZdmNOa3O4lz2tbgbKt EA3nCznqn6DHBOtb+/l5DgXlzYoU8Su925O6k8JoLV/+NnNoc0DPbzG5dzxAmwh2kHPh EtgA== 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=BW8r3OV+Pyq8lB5xngUwKNwFXrFswSLDbGpWItcOSxQ=; b=dqdvXdIAuTCJtgeOuxfcyVzlWuaNlxf/TS4UxdFcO2ZOPNkeQkD2zsHZbujidJMnoi 4wC+eYUCgXxjw/4uRW+JeZs6UI9gQMRAUs8/XWTgUPU2c/tErKEzJmMk67S7eJh3LbJN kggSxqpGSgfWauyZn2c0FO8Aiag+ONimZhzpEpfNP1gTjzhyC3CjEeVh647M36vtNlsr t0odhjuylZfd9Bq8MzFWpdMnDupb2W+LNwck65sX2982PhqfIFDo5hsCzHF6ldeC2ZWf 8rBpfQqFw0n4xNKI2p9oiP3xgYBsMM7MSYakwccNDXMcEnbaS6dZx3bXONiNOd464Rax Wp/g== X-Gm-Message-State: ANhLgQ1dXlOIAelWEM6XB4VJCPrkRYPJzmToUanbaz1t7fwtM+Dtd17A il9G7YHO6lIj27zkxp6850orcA== X-Google-Smtp-Source: ADFU+vuaNG8fEhdim2g43Smqv+UUcQeCbXLEMRS0YyCS/z/eXCcszpfwWrWKZS8aP+E3ZvZ5YqUkxQ== X-Received: by 2002:a1c:4b0d:: with SMTP id y13mr5450958wma.4.1583257793657; Tue, 03 Mar 2020 09:49:53 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 1/4] hw/intc/armv7m_nvic: Rebuild hflags on reset Date: Tue, 3 Mar 2020 17:49:47 +0000 Message-Id: <20200303174950.3298-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303174950.3298-1-peter.maydell@linaro.org> References: <20200303174950.3298-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 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: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Some of an M-profile CPU's cached hflags state depends on state that's in our NVIC object. We already do an hflags rebuild when the NVIC registers are written, but we also need to do this on NVIC reset, because there's no guarantee that this will happen before the CPU reset. This fixes an assertion due to mismatched hflags which happens if the CPU is reset from inside a HardFault handler. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- hw/intc/armv7m_nvic.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index a62587eb3f0..1ad35e55292 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -2593,6 +2593,12 @@ static void armv7m_nvic_reset(DeviceState *dev) s->itns[i] =3D true; } } + + /* + * We updated state that affects the CPU's MMUidx and thus its hflags; + * and we can't guarantee that we run before the CPU reset function. + */ + arm_rebuild_hflags(&s->cpu->env); } =20 static void nvic_systick_trigger(void *opaque, int n, int level) --=20 2.20.1 From nobody Thu Nov 13 21:55:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.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=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1583257872; cv=none; d=zohomail.com; s=zohoarc; b=IoS7wgdlDuY09/Ob642EP4bi3ScAXIat3z9mO8T9Lt8t670A30CKMMxR0fiyIJ1PJ3g/vl6WiKbt2GILmRkekRdewINySHVWm80faXHtbGw9T9FQeE6TvkmvjQqXYsHoxOUdLPH6bV7ojtVzF0a7tOle1SRXDrMLMQKUVEYz3rc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583257872; h=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=++P9RdISn12IMj2NdnjcFp9KnKYuoL4/wTvl1xQS+Gw=; b=Sebe7Rs2hJ9tvNe1OZ9qPeN2XqIiYoQhAH71Yxbx96ExfYFQAaLsG6V6cwHCpyqFv1eVHwLFMhcEsP/CMvGocSTq80rKf9WaWzrlZT3MRy2U5jbKpFOT+3UsHcG1yIKXmrwewJunMiE5733IM8ZZ78N1KgmiOiiBIgHsS4Nu0v8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1583257872595300.36697270555476; Tue, 3 Mar 2020 09:51:12 -0800 (PST) Received: from localhost ([::1]:51244 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9BhH-0000wz-6x for importer@patchew.org; Tue, 03 Mar 2020 12:51:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41120) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9Bg4-0007V5-RO for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9Bg3-0006K0-RM for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:56 -0500 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:34730) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j9Bg3-0006Jb-Li for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:55 -0500 Received: by mail-wm1-x341.google.com with SMTP id i10so2891060wmd.1 for ; Tue, 03 Mar 2020 09:49:55 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id d63sm4867576wmd.44.2020.03.03.09.49.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 09:49:54 -0800 (PST) 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=++P9RdISn12IMj2NdnjcFp9KnKYuoL4/wTvl1xQS+Gw=; b=Sb2HGiqGWJw+URWcfjeZ6XvDQmnlaKryWB6to+KJ0e0QcFNJ4TTvM4chhG/5Sucqyc W++mC9X8HzAMXuEaR4w0jKzi+ikjhtXC5HxLJNJRQ+rF5+G5ML55fUE+LwNWQQhEIu93 gPABx4jKnifMS6NKJcQJjO5r+6OZchswCGEwqnjvCBvSNuKch0D8GwmgkVd3aMlUq1XK E6tI7mPmHQBVx0TsQaopZXZWIemE7yJQtH+TzJe27PU8GBPN/LsodSrQKA3wxsReDPgT Pdg5H7vB8hY51Pty0IzssZS9xN5ePOy3MiZLoxaGiUgHZDe0ZmBBp86a3xW5uO2EWr73 CRLA== 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=++P9RdISn12IMj2NdnjcFp9KnKYuoL4/wTvl1xQS+Gw=; b=Adq/Led/sYDUkB3RAJSDv0kXyfVFVtgmCZ7eZCyA2/5JgiSqa35kqbeVZanuEloIFM goJLcanoHHPsHhgwUVF/IZoPry2+wyL71ae/XEyxGl7RI57A3riLlNk6MflixoIj9iZF /uI/2yEHRjluMPb28qGHd6IgIa5vwbVA0OLtoiGio74Md7OLCf/mFbr4DxTzmsn0YAGU ZIjfeFt4oDWu59a/mVSANnv9ZUNLGFcxUTMneiaJMyQkTc3TnaNxhQnMj2Ex1GGRq+HP D/ttSMvFMBZWpwKM5VVCyjYHMMFpb9bAZNs/y4c2qU8nbUbaN2JBiB6yh2pF60eVsXNj jM1Q== X-Gm-Message-State: ANhLgQ0lXW+XfVxubDYWJK6puvvZ8zUN9kMreO0ZxUznjCJ9sQbe6nV9 VWlh+SkmCZYjxhrrWT8KpJPz4w== X-Google-Smtp-Source: ADFU+vtUCD3eszDzWo5fF6fkO5Fu5wKAa6L20hf5s3VlOg9jBgextiPsDqDAu1pZjUnO1KWX0l5amg== X-Received: by 2002:a1c:4c13:: with SMTP id z19mr5159852wmf.75.1583257794709; Tue, 03 Mar 2020 09:49:54 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 2/4] target/arm: Update hflags in trans_CPS_v7m() Date: Tue, 3 Mar 2020 17:49:48 +0000 Message-Id: <20200303174950.3298-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303174950.3298-1-peter.maydell@linaro.org> References: <20200303174950.3298-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 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: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For M-profile CPUs, the FAULTMASK value affects the CPU's MMU index (it changes the NegPri bit). We update the hflags after calls to the v7m_msr helper in trans_MSR_v7m() but forgot to do so in trans_CPS_v7m(). Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/translate.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index 6259064ea7c..7f0154194cf 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -10590,7 +10590,7 @@ static bool trans_CPS(DisasContext *s, arg_CPS *a) =20 static bool trans_CPS_v7m(DisasContext *s, arg_CPS_v7m *a) { - TCGv_i32 tmp, addr; + TCGv_i32 tmp, addr, el; =20 if (!arm_dc_feature(s, ARM_FEATURE_M)) { return false; @@ -10613,6 +10613,9 @@ static bool trans_CPS_v7m(DisasContext *s, arg_CPS_= v7m *a) gen_helper_v7m_msr(cpu_env, addr, tmp); tcg_temp_free_i32(addr); } + el =3D tcg_const_i32(s->current_el); + gen_helper_rebuild_hflags_m32(cpu_env, el); + tcg_temp_free_i32(el); tcg_temp_free_i32(tmp); gen_lookup_tb(s); return true; --=20 2.20.1 From nobody Thu Nov 13 21:55:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.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=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1583257874; cv=none; d=zohomail.com; s=zohoarc; b=NsVBWvjrPGYrA828gsPumFuyyQ/I4uVeDOr4BXdCSJwbKn0go0sVG1IMjagKkL2UEI7gW1SSTAk7xQ5bWYgIyc75ejeI9qMxnUm9Ao4nxUsQaCzxW3D2bjhkXpODgQNWI8IEn8YuIyN8FCj0hSdqEcWS6QfJ6k3AxGI6jgy57h8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583257874; h=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=YrErCxdPD0FB72C1AvkhsFUhJwKacmb/G8K5xzzB0Es=; b=XsMQQ+HmA5lGrOFM3uYgJ8Kd2lwLu+9hPvlUpOFOENDfxTNMBtGzL24hkjj5ffyAFrH6FxmvC4N26Y2nhiy4uXUrK6z1jqlu1+pKRHK5A9P4zthy7svqyUHp/Q/HXqlLNxsoxJBdR6xPb8QGBhu6D7Jjtoqf0e5szjIbZAFgVZE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1583257874608817.4304719059045; Tue, 3 Mar 2020 09:51:14 -0800 (PST) Received: from localhost ([::1]:51248 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9BhJ-0000zS-Go for importer@patchew.org; Tue, 03 Mar 2020 12:51:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41145) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9Bg5-0007VH-Ud for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9Bg4-0006Ke-R7 for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:57 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:32962) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j9Bg4-0006KE-Ks for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:56 -0500 Received: by mail-wm1-x344.google.com with SMTP id a25so2898124wmm.0 for ; Tue, 03 Mar 2020 09:49:56 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id d63sm4867576wmd.44.2020.03.03.09.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 09:49:55 -0800 (PST) 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=YrErCxdPD0FB72C1AvkhsFUhJwKacmb/G8K5xzzB0Es=; b=VH9HZj4kdw+98MsTFuffbD0riDElu6ZAEL7Z1/aF/roWyIv3rj1tpjftPAqTrXCfTq DxK0YlbpYLBfFkHFpYbklmxMiRVZJ3jpO5krV4iLqOIIWBryyG1wGP3xonegd41lxjCa oRsci3/RemWGFmUFb8HHDqVgk10br8axwsQWgommwmrObGWaIivqrB1Ti3JqJKIJjP7T fWIAR1bl9MAyte+VGoZY7LJqA/jfq3VjQSoNRjGiVnqcOKSxWYkxlwzLsdMrsuxUs8m1 DREmdgGH3I7fwFnwslPaPx0w4it+1B3CcFlZB0P0kBho0V1dHyDra3X5tswy5BBVmFX0 zvWw== 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=YrErCxdPD0FB72C1AvkhsFUhJwKacmb/G8K5xzzB0Es=; b=DKSzlJQVT+8CcNa0V9v/4YN3h8lrou8Cq35XGJ7/3nVD2inSaGKyQTCI7oBBf9dzHH wpXj5kdzyjEu/gFBrpbXQ5MAVqlamQ12tQ0FNOlGv5pkWydAN+K5PN2TfBwr4svYocal /ZCJ1O2GqfLaE+jGMpobes48wftqk9KlymPJ21Ogj8glBUVhU2UlgY/7gRUxzoI8Q3Dy vvkQSwaYRL+HTOTtM3EXTiRwtoEQiepG1oOliYxXd4K5zaGht7FzTqmyv2PjndbSF9IM SlyWQwvhd7vcBX8V5anjDiOKDBjs4gywm4aVsRKIgnvVK+6/rzl+N4UEkDk/65/5yC1W eVKA== X-Gm-Message-State: ANhLgQ3T8TlIh9gwg4KetmAvDVjOAiELFvVKh3Cmz9HvZ9FHmUzckOSJ b3H1h2i1E4RA8OetqMXFk04Ikst/y9mppA== X-Google-Smtp-Source: ADFU+vscjtQjsVWZFCrRJ5DUhLjyQhn1uhDTZlxVGenumY2Ltc9aZ7uanQvxC2muyO/FVMMNcQiA2A== X-Received: by 2002:a05:600c:552:: with SMTP id k18mr5507694wmc.171.1583257795766; Tue, 03 Mar 2020 09:49:55 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 3/4] target/arm: Recalculate hflags correctly after writes to CONTROL Date: Tue, 3 Mar 2020 17:49:49 +0000 Message-Id: <20200303174950.3298-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303174950.3298-1-peter.maydell@linaro.org> References: <20200303174950.3298-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 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: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" A write to the CONTROL register can change our current EL (by writing to the nPRIV bit). That means that we can't assume that s->current_el is still valid in trans_MSR_v7m() when we try to rebuild the hflags. Add a new helper rebuild_hflags_m32_newel() which, like the existing rebuild_hflags_a32_newel(), recalculates the current EL from scratch, and use it in trans_MSR_v7m(). This fixes an assertion about an hflags mismatch when the guest changes privilege by writing to CONTROL. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/helper.h | 1 + target/arm/helper.c | 12 ++++++++++++ target/arm/translate.c | 7 +++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/target/arm/helper.h b/target/arm/helper.h index fcbf5041213..a63fd5dfb73 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -90,6 +90,7 @@ 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_1(rebuild_hflags_m32_newel, TCG_CALL_NO_RWG, void, env) DEF_HELPER_FLAGS_2(rebuild_hflags_m32, TCG_CALL_NO_RWG, void, env, int) DEF_HELPER_FLAGS_1(rebuild_hflags_a32_newel, TCG_CALL_NO_RWG, void, env) DEF_HELPER_FLAGS_2(rebuild_hflags_a32, TCG_CALL_NO_RWG, void, env, int) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6be9ffa09ef..2eec812b80b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -12325,6 +12325,18 @@ void arm_rebuild_hflags(CPUARMState *env) env->hflags =3D rebuild_hflags_internal(env); } =20 +/* + * If we have triggered a EL state change we can't rely on the + * translator having passed it to us, we need to recompute. + */ +void HELPER(rebuild_hflags_m32_newel)(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_el(env, el); + env->hflags =3D rebuild_hflags_m32(env, fp_el, mmu_idx); +} + void HELPER(rebuild_hflags_m32)(CPUARMState *env, int el) { int fp_el =3D fp_exception_el(env, el); diff --git a/target/arm/translate.c b/target/arm/translate.c index 7f0154194cf..4715ca0d2ad 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -8551,7 +8551,7 @@ static bool trans_MRS_v7m(DisasContext *s, arg_MRS_v7= m *a) =20 static bool trans_MSR_v7m(DisasContext *s, arg_MSR_v7m *a) { - TCGv_i32 addr, reg, el; + TCGv_i32 addr, reg; =20 if (!arm_dc_feature(s, ARM_FEATURE_M)) { return false; @@ -8561,9 +8561,8 @@ static bool trans_MSR_v7m(DisasContext *s, arg_MSR_v7= m *a) gen_helper_v7m_msr(cpu_env, addr, reg); tcg_temp_free_i32(addr); tcg_temp_free_i32(reg); - el =3D tcg_const_i32(s->current_el); - gen_helper_rebuild_hflags_m32(cpu_env, el); - tcg_temp_free_i32(el); + /* If we wrote to CONTROL, the EL might have changed */ + gen_helper_rebuild_hflags_m32_newel(cpu_env); gen_lookup_tb(s); return true; } --=20 2.20.1 From nobody Thu Nov 13 21:55:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.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=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1583257950; cv=none; d=zohomail.com; s=zohoarc; b=nBobtoi+9ge7Iwe74lAecbJwtwkD8cFXOJMHkY1f+xMjpLwAMj8GZz6eHHSJZWsbz5Wkc7d8MNw77qT3tGMF27xBr5lFksqZmxtA/ZTdi1j2jcXpCyOYBFLw9aItDjHlgKtVwuskIHmg4WWXoK8fPGPcoRWbAVGEYw+FXxJn9oI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583257950; h=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=WjgOJgBdYSXtQmeNwF9DoqEimVF3dYdv8tsIBaWzzNA=; b=AYjPNPhvWOgd8H+m5sT5FwMfSc7CEbCR3J+ZV/TvWeYLZNgcDeQVpBDlxxic5DbrBVN5lw3vnPlM7Jvngd0yIkeM6oNUcTziozYhURrqrJs5INcrDQkxoTBIlBGfaykk2QM1Y74oZPk0HiPPEDqiDvOgTrX0EQDrcRG3qXzFDVA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1583257950548611.7555553557744; Tue, 3 Mar 2020 09:52:30 -0800 (PST) Received: from localhost ([::1]:51280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9BiX-0003JO-BZ for importer@patchew.org; Tue, 03 Mar 2020 12:52:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41165) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9Bg6-0007Wm-QE for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9Bg5-0006LE-Rf for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:58 -0500 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:52652) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j9Bg5-0006Km-Lk for qemu-devel@nongnu.org; Tue, 03 Mar 2020 12:49:57 -0500 Received: by mail-wm1-x342.google.com with SMTP id p9so4296698wmc.2 for ; Tue, 03 Mar 2020 09:49:57 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id d63sm4867576wmd.44.2020.03.03.09.49.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 09:49:56 -0800 (PST) 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=WjgOJgBdYSXtQmeNwF9DoqEimVF3dYdv8tsIBaWzzNA=; b=zFrEHhWJBoRbD4SyQnI007OXIaxcomKTDOAW99kVGSTurKjqjxiDvRLAEXusDS8zhd YOEt9wkyxlWDz+ovbqi914IssmmEHx+x2CSjt8CHhSacHeqTST22rMBwDe57/pjIDGc+ /7w9sAOkTEQiY2j+YjxASst0rW5uhLntesWgjPb4Yqrny/142hFAzu+tPYXOlYt8YU5n Bro93hyC3FQoktYTPKHeI9xxAWkVfAAq7ddm1Mz671OvjxPreHx9dtaYQ0ESGFJ38UkM +pqj9Tag4e2M0O6JSlNrnOrtXu9kZcG8605AReiHV1WDEOQE9S0Tyck67A4v5gxQtE0d UFuw== 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=WjgOJgBdYSXtQmeNwF9DoqEimVF3dYdv8tsIBaWzzNA=; b=Id/wlx4ZB+bGTzbjV7ZZmopj1M7ZYas6S6QOCwnIWDPC0MwI5mjuqkFPiE2F2624aF GVJ8KCAdUX9uV3tZGyt41gVMd98TvzA0Q4NCmnvC9itKyupjLpDrpnzB6WubtpK+EmMu c5OfLrwoU5tj6aEeNi+HaaT8GdInClrKQ5WpuY2iCwhNpOviDiLjBlmF+LNCWGfQ5AiS jv1ZUjjXVPMXvFqVRP02909yJiFFE/GxjCkH7uCqebOZlEyXrJ/pW7MfI4dYJmljb0qO DrRejdugPhrdLtwmX0UC5S/4Wo+seYcS+LhoW7J1wski5ypuWAf5tHsTjJ0OuDfqel0v ZzRQ== X-Gm-Message-State: ANhLgQ28yDcEvZUBqWXTLxi/hwxcVYgTRIeKpabt5ybtlH9+mhIX+jxF dYUAfQKZAWkMmFxNtVB7k62PSA== X-Google-Smtp-Source: ADFU+vtVxvtiXXsWjXTUbqTPz38XOuLoRzA/ON4DmwuQ1uYBwJYghuWC+WhxJ29IvnpCw4aeCAmnrw== X-Received: by 2002:a1c:1bd6:: with SMTP id b205mr5307915wmb.186.1583257796764; Tue, 03 Mar 2020 09:49:56 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH 4/4] target/arm: Fix some comment typos Date: Tue, 3 Mar 2020 17:49:50 +0000 Message-Id: <20200303174950.3298-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303174950.3298-1-peter.maydell@linaro.org> References: <20200303174950.3298-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 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: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Fix a couple of comment typos. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- Noticed these while writing the other patches... --- target/arm/helper.c | 2 +- target/arm/translate.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 2eec812b80b..3fa9c0cc861 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -12347,7 +12347,7 @@ void HELPER(rebuild_hflags_m32)(CPUARMState *env, i= nt el) =20 /* * If we have triggered a EL state change we can't rely on the - * translator having passed it too us, we need to recompute. + * translator having passed it to us, we need to recompute. */ void HELPER(rebuild_hflags_a32_newel)(CPUARMState *env) { diff --git a/target/arm/translate.c b/target/arm/translate.c index 4715ca0d2ad..9f9f4e19e04 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -7296,7 +7296,7 @@ static int disas_coproc_insn(DisasContext *s, uint32_= t insn) =20 if (!isread && !(ri->type & ARM_CP_SUPPRESS_TB_END)) { /* - * A write to any coprocessor regiser that ends a TB + * A write to any coprocessor register that ends a TB * must rebuild the hflags for the next TB. */ TCGv_i32 tcg_el =3D tcg_const_i32(s->current_el); --=20 2.20.1