From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912543; cv=none; d=zohomail.com; s=zohoarc; b=Xv989rLRhabjCpMnCK9UlJyWBC2aIixhS4GuahQp+VGwL0q7pIs/5LPOKardCGGt9wHXSSVaiJdmvk6f0wzy2CDRhg6WUmG5KvnCxYwSNKzUS/c0w7g5iPrQE9m6ccU220PRBMVffxJpg7HAvw2rzpSIcfckAgzw8d4mBvGZDhw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912543; 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=cp6F7ZXBQgbCbYqEZRE/UiFfLmca7aMu3by8nxJeJnI=; b=KVH8htlFXSzr243hhoSdFb7/gWDUnY9CTp/kw0EWUcUuGzVMmbRo9CoTFkBnT2yAuuwqCKr5IsbdqwrVM+rIXGJhNCFwMdLAxwG6Dt//vnx1XUUi3/Js/URwainQrKxPNexS+AJZKZNRe92HzXe2l1KuBeUxrH+Bcr0kpe8LUgE= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163591254384532.52222690777808; Tue, 2 Nov 2021 21:09:03 -0700 (PDT) Received: from localhost ([::1]:50914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7aA-0006DE-Tb for importer@patchew.org; Wed, 03 Nov 2021 00:09:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VG-00054u-KK for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:58 -0400 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]:45982) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VD-0000tg-OS for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:58 -0400 Received: by mail-qv1-xf2f.google.com with SMTP id s9so1464632qvk.12 for ; Tue, 02 Nov 2021 21:03:55 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=cp6F7ZXBQgbCbYqEZRE/UiFfLmca7aMu3by8nxJeJnI=; b=sPuc0k4lxxJi1HtBFzuhzWVEiHcvGIUiqSm52W24nPR61HagVB/DAf71bR6qgidCFl W8OnH8kwD1fgkVs+v2IH9ULvFhiVX5vIufjuy9YsjH2fBKK4YeHXD6G6WeZEQU81H84U lUmeUmemcvFh9JpAtWH6JoEqbg5iW3nIFvrfuM9PIG+0gwzjTaN6GXKcXB/ZBcZPKxeD ewigaZI+9zSGgFyP4VAXaA81TUupb6/tGa9zv8rFF6wXX+lupTFI8V8w8+MWizE1hNpx eiVfmy/dr7ETV65gMbY4rzhqiU+4GiM4IhrH4pdiRDrwr5P2jxNi2P612F4logEO0Em1 v4bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cp6F7ZXBQgbCbYqEZRE/UiFfLmca7aMu3by8nxJeJnI=; b=Q/im4AptgT8WMfQ/yHeWU7uB3caCrgR0BAvQqnKrlaTyLdgtq6G31TCa65QSs1I953 TObMSgWm7ePaFGxsKXpw6jpSHvwGGYHGCsrqH4Gg55IRWtFkq8gfv/gimW0hoYr8eUE0 Uic0W59eDiwP9uGNOQJrlSgv5ncFOW3q2HNT3p3QPLRziDHO2cQtrG+YY8WoDo2PmN07 ihz5QBR8+eV+7mmqleF9PgiFh+YUneU9bQUZxWf+rJjj03GWuhKLeC2PWJDanjop714+ Rs10gllHHIPepoUUw5rCvOhaicK+S/ZLtYXn6r8lmubXJKvMj5MTQJKdopsY5Q+q7ZgT f16Q== X-Gm-Message-State: AOAM531zzrLSvVCPylZ+DSNmooQw8yEpI2G8wbyyOqWQ8rZkHyf7Pv/8 /LNtS9rUibaaH3BpqlECulwagDdw9Ko8GA== X-Google-Smtp-Source: ABdhPJzyW8yOurG0CkErdRKlA6xcZMR2Mk42onsfmpxYF6lIEJbqf6iqi+J8IPxuSxxQX6CqCcjDLQ== X-Received: by 2002:a05:622a:148d:: with SMTP id t13mr41936079qtx.393.1635912234911; Tue, 02 Nov 2021 21:03:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 01/10] target/arm: Hoist pc_next to a local variable in aarch64_tr_translate_insn Date: Wed, 3 Nov 2021 00:03:43 -0400 Message-Id: <20211103040352.373688-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2f; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912544062100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/translate-a64.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index cec672f229..9c4258ccac 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -14750,6 +14750,7 @@ static void aarch64_tr_translate_insn(DisasContextB= ase *dcbase, CPUState *cpu) { DisasContext *s =3D container_of(dcbase, DisasContext, base); CPUARMState *env =3D cpu->env_ptr; + uint64_t pc =3D s->base.pc_next; uint32_t insn; =20 if (s->ss_active && !s->pstate_ss) { @@ -14769,10 +14770,10 @@ static void aarch64_tr_translate_insn(DisasContex= tBase *dcbase, CPUState *cpu) return; } =20 - s->pc_curr =3D s->base.pc_next; - insn =3D arm_ldl_code(env, &s->base, s->base.pc_next, s->sctlr_b); + s->pc_curr =3D pc; + insn =3D arm_ldl_code(env, &s->base, pc, s->sctlr_b); s->insn =3D insn; - s->base.pc_next +=3D 4; + s->base.pc_next =3D pc + 4; =20 s->fp_access_checked =3D false; s->sve_access_checked =3D false; --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912411; cv=none; d=zohomail.com; s=zohoarc; b=iV8ZYZUdTzIv5H54soLGRUcd5CNVkbP1frldM6HxhCExYHjZ6gyXEdQ5Iy7SfjPM9cYymgTk/B58J+T7ninstyN09R6xN27wiPaXeasPCccHOUsJJvQnTe/5cW0hcz3SiMg1isE7l2d3gFZ5+EYnwaZJxC938vhHhqZDghPwaM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912411; 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=rD85GE1yJzMtNOUqHAoor4VFksIyrwnTsoaHAPCG9mI=; b=bawfi8lHoivqM9IrOJFcPrEPmlxmkymt3XP67QmW+p46t5itrFQ8iUIKowJZKRpAjI9J5AGqqMKlNrfuptAf/CpK+DB1HSFRZp7PZ6H/cMSqBvJZFg3AxPBLFs+JA5QR3PoTfm2feFMQGXCzmEtTF4CdWS3wy7A8pmUpEQshWN8= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912411770260.2447137685273; Tue, 2 Nov 2021 21:06:51 -0700 (PDT) Received: from localhost ([::1]:41164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7Y1-00088r-T7 for importer@patchew.org; Wed, 03 Nov 2021 00:06:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46548) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VG-000557-Q8 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:58 -0400 Received: from mail-qv1-xf35.google.com ([2607:f8b0:4864:20::f35]:33300) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VE-0000tr-Ch for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:58 -0400 Received: by mail-qv1-xf35.google.com with SMTP id bu11so1526966qvb.0 for ; Tue, 02 Nov 2021 21:03:56 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=rD85GE1yJzMtNOUqHAoor4VFksIyrwnTsoaHAPCG9mI=; b=GoIZq52TiCp22gyZy9VBVtNEF0W4g4bSIZV+8O+RZJymDQOznyA4H8wQIfaagm5aBq GmbnjQxHix26nrSMbEWA8dRibQkQ9UnygBFbTzNTz4U+k2l3FHn6MFprhZJIuGNwhaY7 4VULP6BazHeTQSHp/+CaJm/sjtUj0zkfvw1HLd3NpUukZn/DtQQSJtMOsjKU+wMXqT7d DMCn0v8yLm7uM+5xICH/bUbg6KGb83K7ByugUdUZ0pccq8Aw9wTyf8kWWXHpeH1lr0OV p0phNRZH/SmX6me8voZ6VzTAWObOziGHrNKZneWrL2p205C4YFwmqh3BO5vF6c2aVFro E9Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rD85GE1yJzMtNOUqHAoor4VFksIyrwnTsoaHAPCG9mI=; b=Ggq3maGXb5bDgxOgUrTjH8oBmvZI476drnSapAzDmGeEsmIBu7ZuAM5dNJYBXNXFsx ETdje7LZKqq66K2ZdlCt7Dewl4ByXqVFopVp5B5a6RO5hycEhdA6/wsmkhlsxkrpSzzN bTYuLWrIoDdJ/nRHh+mXZQyEk5lV2rfFWy+BTBF9bKTHShXlPPyohREeFcpcMpRKsx6l kJvwxBO97pNgd2b48sBMZO7xfUO0YMwTl/+7DIMlfJHKCzzP+U4qobWmTVVv4WdgdZlG du14mmns2tfyzStWa8xJW6iJ/8eCCpTv/jPqCbeDELKaVpI20/GXFooVwif+eSI6PbPE BS8A== X-Gm-Message-State: AOAM531dchcU4sA+OvB0qbnag8bmR6wJQTaFH3YhCKCFYqvrbntXT4X7 ByetRXSjVyQxqzJiwYbvlS0wUexINh4fBg== X-Google-Smtp-Source: ABdhPJxbe3FCFUZLPoayivFUe7KR5uH82wE2OxFD+9OUOTCras5LMNfhj8dLA509u3JNaU1GUg6/rA== X-Received: by 2002:ac8:7d81:: with SMTP id c1mr23115535qtd.56.1635912235533; Tue, 02 Nov 2021 21:03:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 02/10] target/arm: Hoist pc_next to a local variable in arm_tr_translate_insn Date: Wed, 3 Nov 2021 00:03:44 -0400 Message-Id: <20211103040352.373688-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f35; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf35.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912414181100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/translate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index d6af5b1b03..ead77e9006 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -9559,17 +9559,18 @@ static void arm_tr_translate_insn(DisasContextBase = *dcbase, CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUARMState *env =3D cpu->env_ptr; + uint32_t pc =3D dc->base.pc_next; unsigned int insn; =20 if (arm_pre_translate_insn(dc)) { - dc->base.pc_next +=3D 4; + dc->base.pc_next =3D pc + 4; return; } =20 - dc->pc_curr =3D dc->base.pc_next; - insn =3D arm_ldl_code(env, &dc->base, dc->base.pc_next, dc->sctlr_b); + dc->pc_curr =3D pc; + insn =3D arm_ldl_code(env, &dc->base, pc, dc->sctlr_b); dc->insn =3D insn; - dc->base.pc_next +=3D 4; + dc->base.pc_next =3D pc + 4; disas_arm_insn(dc, insn); =20 arm_post_translate_insn(dc); --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912546; cv=none; d=zohomail.com; s=zohoarc; b=gTC2kQFsE+3DNqDlfbRge052Pi01yHT7dGKTLwCEVul8VieHFa67o2933A4dwLcexOIN0cHeLFVGbidEcOwHjfvglgUDAYgPvIE0j100CyCg4nJN5e4mrc6oVSfLNDoIW0SauEv2hcKnkpOvnPy0yfyTF+I03jqUp85PWtNp8HA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912546; 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=pKojDLUB4PcjfS7SRPDbZQq3hYacmhCQrpop1lkMtjQ=; b=bWS84Wz4HfPOScyAgIUKDRYQoHgoeEOnHrJ0oO47IkaAkqVWeUForDuyKUj2TZkK9pIHjDWecE1rzHQOtGTFp5z51AvW2iqvlTv7FluizbhDlc+WDMwMtNUQNT/8BH64CDjHLFw8IN8L+NOUXuRWE6PguNRsRnHN1PTLe2e7VZk= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16359125460251019.6117580709066; Tue, 2 Nov 2021 21:09:06 -0700 (PDT) Received: from localhost ([::1]:51100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7aD-0006Kd-32 for importer@patchew.org; Wed, 03 Nov 2021 00:09:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46614) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VI-00057a-2e for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:00 -0400 Received: from mail-qk1-x735.google.com ([2607:f8b0:4864:20::735]:36791) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VF-0000ty-3e for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:59 -0400 Received: by mail-qk1-x735.google.com with SMTP id i9so1140039qki.3 for ; Tue, 02 Nov 2021 21:03:56 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=pKojDLUB4PcjfS7SRPDbZQq3hYacmhCQrpop1lkMtjQ=; b=ToJypVBwDgdrteKyrxJuynqLXboRww/m45VLq3kBP2w2v8+kW7KFCyM71Xg/H+KW+i tCX0WviznXbI1lwupGc9WRFeSWYVjRL/LpsWpzjrojOxK4ush+uGHNVe8mQjWt/c0MHw uY9hOB8fkNbpEy9vvbAvF1s7QTRLoQXoH7GZgh0saw3ITSgvYQfV272Am1T21x6qapae F2Bgfl/rOVSUHG0IY69MNQkaEwhIddS8EuqHH5/1YIo+wCLFuPbK2Qv9a4aNYN46Q0Q6 G+wfZES2R767pRKCCaJ8b49pUfX+K8ZqqTy0X8XShqz8Pvaw9X+intoL4Q2r9DA3TjFl xIOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pKojDLUB4PcjfS7SRPDbZQq3hYacmhCQrpop1lkMtjQ=; b=zNJPl0hszcvi7524ZMJJNFKE2QLK4SXVD9ALUe1Bagt1VMOU1XjXUI7Z412M9rfyST 6BBGrJrWgnPWJ89YMXK0d3ggmSJ5Re49qhIGhrzEcrn04wM5MF3EskvRa5kNLlB61kt9 jmDtymLWUJJ9j6DySng/KTZ2bRqKaksURaGOar8fMn9U3N1uJjVV09UZ6eSQiyL/pVFZ 4MKoY+L+PYFF1R0iXBf7Id4I5u4PRy9JCh10LIuNzi0kaXWKK0yuEhCsutQgTACV//OW ViVAqm7UcOEwSGV64bUKZYXCwtfTCw1RQHm4clWn2BN7OFnGAF/HRJOofe6spupLDIhd ATzA== X-Gm-Message-State: AOAM530JtWtwvX8E+wyPH8MZ66T82EywjPHve+/Sh67TgI4YAVzqBjy2 A5LNVGh5tNJd0TpV7OqNHByrBXVM5OXNzw== X-Google-Smtp-Source: ABdhPJy/9CkQ+uvsYl4FC2IDH1tYblRc/7xUQ7opRzjnQGhDa4B2qh1W9SQpqSdEYGgd1rZ9L5BrZw== X-Received: by 2002:a05:620a:408:: with SMTP id 8mr4294199qkp.116.1635912236141; Tue, 02 Nov 2021 21:03:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 03/10] target/arm: Hoist pc_next to a local variable in thumb_tr_translate_insn Date: Wed, 3 Nov 2021 00:03:45 -0400 Message-Id: <20211103040352.373688-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::735; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x735.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912546232100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/translate.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index ead77e9006..a39456ea98 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -9629,25 +9629,25 @@ static void thumb_tr_translate_insn(DisasContextBas= e *dcbase, CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUARMState *env =3D cpu->env_ptr; + uint32_t pc =3D dc->base.pc_next; uint32_t insn; bool is_16bit; =20 if (arm_pre_translate_insn(dc)) { - dc->base.pc_next +=3D 2; + dc->base.pc_next =3D pc + 2; return; } =20 - dc->pc_curr =3D dc->base.pc_next; - insn =3D arm_lduw_code(env, &dc->base, dc->base.pc_next, dc->sctlr_b); + dc->pc_curr =3D pc; + insn =3D arm_lduw_code(env, &dc->base, pc, dc->sctlr_b); is_16bit =3D thumb_insn_is_16bit(dc, dc->base.pc_next, insn); - dc->base.pc_next +=3D 2; + pc +=3D 2; if (!is_16bit) { - uint32_t insn2 =3D arm_lduw_code(env, &dc->base, dc->base.pc_next, - dc->sctlr_b); - + uint32_t insn2 =3D arm_lduw_code(env, &dc->base, pc, dc->sctlr_b); insn =3D insn << 16 | insn2; - dc->base.pc_next +=3D 2; + pc +=3D 2; } + dc->base.pc_next =3D pc; dc->insn =3D insn; =20 if (dc->pstate_il) { --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912424; cv=none; d=zohomail.com; s=zohoarc; b=k0PjQimynTGn7/WldUbwaIbhIfaeKVbh80PcQcm9XI0jjy+yLFRJssM/vGmwsSo3k1YTDwReKADO7pnAc8fgp8FyhVKux9xCDrp/CdnqXl3/VoHfCGij/MKdgvu8GQ8jKn0ZjI+sydfVIAKsH6RY/5A9BVQ8O/1vQCd0y8AS7Sg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912424; 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=ztwm/zJmHHIzh4HcML3vD8itiNyqlXeIngv750qW5RU=; b=NfsrlU/VYJIoKMueFFJgH+Gx8srcXuEvQeYaUSLsPXHKo6ek8ap62nB5WEGGjBw9qp0XfW5bH2OuKWAVnn8KW2iR4/Z2sEfau+ozrw4z2L1Q8lYSh1uKHXzqtCE1KDp6Tmu800JoDTu17Vn56jRIOaBiQud4EJXPozcErVhOaOk= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912424600385.29889023748285; Tue, 2 Nov 2021 21:07:04 -0700 (PDT) Received: from localhost ([::1]:42284 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7YF-0000WY-Kd for importer@patchew.org; Wed, 03 Nov 2021 00:07:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46612) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VI-00057S-0x for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:00 -0400 Received: from mail-qv1-xf32.google.com ([2607:f8b0:4864:20::f32]:44638) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VF-0000uH-Ku for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:03:59 -0400 Received: by mail-qv1-xf32.google.com with SMTP id v2so1470254qve.11 for ; Tue, 02 Nov 2021 21:03:57 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=ztwm/zJmHHIzh4HcML3vD8itiNyqlXeIngv750qW5RU=; b=wKWi/ht91swZXZ9MgbRYW1cIHg1UDoucdL4PhT0B1oxyOL0thai9m5NWbPn6hB6jld B4jXntWQlxGkjflg3CeiaC4vyvF4xNZ1Czt5cc8UBWD8u97P+7AIXT72FJweaRBWaIiW WlzUYC3EBBxKlYLVAEoP4hiSCq1ARO/jyNEsTfjQNNbXTsi/e30A3J3rbuHTtcM8Azh0 /riDzkuq0EpfGwbZxhYj/hLGYSSa+uhSWTC2iCns8UCKyJhh3gTX65DTjgvku/QN8M3g y2/qY69bjoghrd1nYCoja2GMESOIE8BhI6p+KFbZ8Rm+tEh07UtcFA/i8fhYdHdNOcvN fNdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ztwm/zJmHHIzh4HcML3vD8itiNyqlXeIngv750qW5RU=; b=GwJP3Jr45lr9hs8fop267N5vxD/lZGCaCcYZIXcAmg/Xpp0eWkJ52Gw5K0MF2bobeL eUzraHoYgfaTwd90A6TsVlhxu8OJTtBXNY6i1/Fg+xs0bos+5Rtcw1pRY+6dZ2qmlW4e 5TLwLLv4TcOYMFP3THHrgFhIW0Vsxd+jN9j6Ra99768F7yVr5DMOHA5fKrdRMER38/KP yClNrZbzmI0+XWKeUXLBhskO4ADbDLoanifm3/mZKmmSU168v/yy+Qs/EQWwRJe3QeaO BUEwJ/860rt4TzEIo1NwqCd0OJVsc4zjBEpIwrbwEGV9bDudn16hiB7CqgJyj2zdaA// a4AQ== X-Gm-Message-State: AOAM532bNvthgtDmCHoJqUEiEn/z6Bj9qQm4/sInqxDe/llOUk9yRK05 F2DZta6pOYaJ+L1+agAwPYcz/exEMams5Q== X-Google-Smtp-Source: ABdhPJznIRFJrr1VoBS3QXam76El/7jf+KNQsyiHOkzU9yhZkc6oI/UPWknyYpvW0UJw4Whu5OcYag== X-Received: by 2002:a0c:eec3:: with SMTP id h3mr33999810qvs.17.1635912236757; Tue, 02 Nov 2021 21:03:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 04/10] target/arm: Split arm_pre_translate_insn Date: Wed, 3 Nov 2021 00:03:46 -0400 Message-Id: <20211103040352.373688-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f32; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf32.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912426598100003 Content-Type: text/plain; charset="utf-8" Create arm_check_ss_active and arm_check_kernelpage. Reverse the order of the tests. While it doesn't matter in practice, because only user-only has a kernel page and user-only never sets ss_active, ss_active has priority over execution exceptions and it is best to keep them in the proper order. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/translate.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index a39456ea98..82d4e24c27 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -9513,7 +9513,7 @@ static void arm_tr_insn_start(DisasContextBase *dcbas= e, CPUState *cpu) dc->insn_start =3D tcg_last_op(); } =20 -static bool arm_pre_translate_insn(DisasContext *dc) +static bool arm_check_kernelpage(DisasContext *dc) { #ifdef CONFIG_USER_ONLY /* Intercept jump to the magic kernel page. */ @@ -9525,7 +9525,11 @@ static bool arm_pre_translate_insn(DisasContext *dc) return true; } #endif + return false; +} =20 +static bool arm_check_ss_active(DisasContext *dc) +{ if (dc->ss_active && !dc->pstate_ss) { /* Singlestep state is Active-pending. * If we're in this state at the start of a TB then either @@ -9562,7 +9566,7 @@ static void arm_tr_translate_insn(DisasContextBase *d= cbase, CPUState *cpu) uint32_t pc =3D dc->base.pc_next; unsigned int insn; =20 - if (arm_pre_translate_insn(dc)) { + if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) { dc->base.pc_next =3D pc + 4; return; } @@ -9633,7 +9637,7 @@ static void thumb_tr_translate_insn(DisasContextBase = *dcbase, CPUState *cpu) uint32_t insn; bool is_16bit; =20 - if (arm_pre_translate_insn(dc)) { + if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) { dc->base.pc_next =3D pc + 2; return; } --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912573; cv=none; d=zohomail.com; s=zohoarc; b=PNYs1Ept3CtkvlFkFOaHEw8k+G1Ul8HytW9HKeV3DdhMPzCgN4cImjR8EwyGxZ641QE6QtaJn/4/SpJrkZCKNHWmD8QcEekxhF1yS5UBet8G+1Cur5u1r3fS3wdZoVd9fCEYob3BrGa69ufxxkQ2grglccy7OWdQr4wBNh2PUtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912573; 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=cJZzHtETyU7Abpg6jDwficUEI9QcLIESqh5Jw1opJKw=; b=LNkjSRslNTwJ++04MRwcjO1CE5agxbaNU22rm+5jtPbhOJAnSFEMbYy0AjMr3jlLj6Kc349feNoMhwZSPvPoqhYszgW8tI7fcGYwVUHILJpywpWmmxCS+AGYGJ707+Cx4Mg6gJxWSy5Km+b5G66YGf8tipY7DLKhMWp7lNzkDHc= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912573826685.0556780187472; Tue, 2 Nov 2021 21:09:33 -0700 (PDT) Received: from localhost ([::1]:52806 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7ae-0007Te-S1 for importer@patchew.org; Wed, 03 Nov 2021 00:09:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VL-0005FP-SC for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:05 -0400 Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]:38807) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VG-0000uW-Am for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:02 -0400 Received: by mail-qv1-xf33.google.com with SMTP id a24so1491770qvb.5 for ; Tue, 02 Nov 2021 21:03:57 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=cJZzHtETyU7Abpg6jDwficUEI9QcLIESqh5Jw1opJKw=; b=HiDMshOrF2zCqAXoMW3NpyhDdosFedlv5moEfZxaokT6uG/I+CduLfEO7DRkPhhNL+ L4A1r4rn295Ye9qkFOMqKDBwnXOyV0Asue0rvP7lWneFHHfoa4Ap+G+Xj0h2MS0G9Lca 1j8ITDUpw73jd+VmOJ24Dk19lyzb9z2/Yvg32M8G1Wg5sL2xh37lYhDHK0/IAxt7aRfO XRYq3OTo/tYgF1OxtP4apO2VosQiDOVxFGrTpWdgmnqwiREu8nmO//Am6L281o4tjRvn aedjDCWlXIhrmKcRlm75mcyFJJ3Y5jQXUU+d/9JaE/8qeSjtVDrgueSkm1prwtV95Usz zaHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cJZzHtETyU7Abpg6jDwficUEI9QcLIESqh5Jw1opJKw=; b=DloNYEKAzJB32ER+eC6BusKSMSvoWDTgx58xdlmikmQqBMVCyKtUon1IonijhYm+sA 6a8/3Gu3OCnvwtbpoWhmG5iHxv36KXQrHA8TQFgfcJrxEwUsyAMIyON1qJ8VjAKA7Eaq i/rWiYJZTwlBy+cm1aL2rANmpfzDJIncDPRVIyMzysSvjIh8yHSL/o1Bzm7RIVicJJml wbYFoSh+I/daQUoeupbP+gxdeYxIdavKjNQP/x5crFyX99Oh9FP5yxG/DN/r56gVuG8w VjRuWXFG5A+d7sstFjKSmXXeIuIqgQ8ZhTax1gvJHRxeuXEuoW1z5G9p5jHAaJX6Yd+f ypEw== X-Gm-Message-State: AOAM531SfAgVrVQKjybEv9GmrLjo+r7D7KbkIsEJfN79Q9t5l8r0m4U0 jldSpTIqR926VOAjyKO6Lbz5KZj+cFd1rw== X-Google-Smtp-Source: ABdhPJx56EnYFwsZvlEvYW+jJ5PHAADBQOcxHwbMTNve2p9TFsTB0zW3lJIqMK/Xp3q9jXojqK2PEg== X-Received: by 2002:ac8:7d11:: with SMTP id g17mr5655203qtb.341.1635912237427; Tue, 02 Nov 2021 21:03:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 05/10] target/arm: Advance pc for arch single-step exception Date: Wed, 3 Nov 2021 00:03:47 -0400 Message-Id: <20211103040352.373688-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f33; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf33.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912575729100001 Content-Type: text/plain; charset="utf-8" The size of the code covered by a TranslationBlock cannot be 0; this is checked via assert in tb_gen_code. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/translate-a64.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 9c4258ccac..2986fe1393 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -14767,6 +14767,7 @@ static void aarch64_tr_translate_insn(DisasContextB= ase *dcbase, CPUState *cpu) assert(s->base.num_insns =3D=3D 1); gen_swstep_exception(s, 0, 0); s->base.is_jmp =3D DISAS_NORETURN; + s->base.pc_next =3D pc + 4; return; } =20 --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912674; cv=none; d=zohomail.com; s=zohoarc; b=XAFYPVGQoppEQkv2lDO9uVxphSOxOe+Vi7vjvmFAEmBsPJnoVbf66WgzUkDt1t1VNIKHnCFrJA/I3u7HoQE88A8orSxXOp8V+ZUo7iai622ACPoqoqYKy0fb+mGMgu4gJMd9TQoQKJQ6g7U3ZnrFkzp7k1MjACJN6jVzKRSXQzI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912674; 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=ML6fKNTEkgsDPbAJVxy09+sBxdECZjbfdFlmno/fZac=; b=dxzJOPyWJWUj4MpuEXG3uBlKSbW9tnDrztXGjFM/Env3yalXtP99iKl+qQb4rky81gs6xUDblz0w1kkb3rOzoB/Kc+UT4fR6j1R28cGZdd9KrfUP8ZYKfE9AOgg0exqnSTXzCKKBVogGhfciCrK9D7k+ClI3P8TgiIOb1w/XnFc= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912674676225.5343480518702; Tue, 2 Nov 2021 21:11:14 -0700 (PDT) Received: from localhost ([::1]:60880 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7cH-0004Ur-NV for importer@patchew.org; Wed, 03 Nov 2021 00:11:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46744) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VL-0005FU-QZ for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:05 -0400 Received: from mail-qv1-xf2b.google.com ([2607:f8b0:4864:20::f2b]:42687) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VG-0000ul-U6 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:02 -0400 Received: by mail-qv1-xf2b.google.com with SMTP id b17so1481663qvl.9 for ; Tue, 02 Nov 2021 21:03:58 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=ML6fKNTEkgsDPbAJVxy09+sBxdECZjbfdFlmno/fZac=; b=Xcg/YGsm08ZEMuXvNc00sTULLbwxqvhKV38+Fbbr6CM67bzKPqOePfI3jQj17EFE6Q 6SkbAHsFjMdhaXHlzOjEXJ4MxAgBdSpOwJWsIh3IEl2mR+LF+s3ljeXshn7YX9Yh7yu9 1CAGjiVaHk/lHBmjwjtgTBJLtc/sm8XrSExZ7HyiNPwHlC2LgT+dM7/q861TGSjW+86O MhxE5P7S81Jp0gdAUvYX4eNL8LLRiCzfGSQiD/mioeFbQ9IZ3IumrtaVE0mWMBDqW8Bg IXeBIndqPoOQA+bbKB3+liaTuMOjX0sddO0aN/+rS2bI7hK/+6S0hiGx2DgO6S69/AkH ynWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ML6fKNTEkgsDPbAJVxy09+sBxdECZjbfdFlmno/fZac=; b=VQTYmlnXJmLUwhk4642CE4/yEkxj6keTwdj+1jvbd6MAmgrHhN0QV9nqbA/a+P7iOb dgpu0kMb8PH2P1klwwNY8W5qdKwpimIZmlqcpPhzwS5CMCPk7/EGk5jTYb492hNeY3VX MMU6o5PJtwprnWVSpVgYWcQGY+n1f7S44mDW+OY/Becrg8r2oD/yht2wkWwv4ntgR6U9 V0e86ryHJQMiu1+9nYBhr4w/WNMJvTcu9QUDTi9+7xlPOTtbbRT0QLEDYdmELOywR8qk eckcr+TJgHWlku0kOxrGEcJTqew4Ql2kMZCj5hkWj1o6uQ5YkuZTzQsbEYaxT6Ubqj6+ 7LmQ== X-Gm-Message-State: AOAM533MCdeG1q4xbF1dpB8+Id8abDDCx4ocB+lBKALx02N53FbBpYU5 TnqkcRiQ8Bmmo8o6vlOZjhUJIgrEOZv/vg== X-Google-Smtp-Source: ABdhPJxD2AbZNG790Od1xx9ql5eGyF+oBy6LSDSaRI/vvM1rqrYr12P4L/eEJhp0LNjZ5MfV4j2pWA== X-Received: by 2002:a0c:fec7:: with SMTP id z7mr27995512qvs.16.1635912237981; Tue, 02 Nov 2021 21:03:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 06/10] target/arm: Split compute_fsr_fsc out of arm_deliver_fault Date: Wed, 3 Nov 2021 00:03:48 -0400 Message-Id: <20211103040352.373688-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2b; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912675799100001 Content-Type: text/plain; charset="utf-8" We will reuse this section of arm_deliver_fault for raising pc alignment faults. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tlb_helper.c | 45 +++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/target/arm/tlb_helper.c b/target/arm/tlb_helper.c index 12a934e924..4cacb9658f 100644 --- a/target/arm/tlb_helper.c +++ b/target/arm/tlb_helper.c @@ -49,25 +49,11 @@ static inline uint32_t merge_syn_data_abort(uint32_t te= mplate_syn, return syn; } =20 -static void QEMU_NORETURN arm_deliver_fault(ARMCPU *cpu, vaddr addr, - MMUAccessType access_type, - int mmu_idx, ARMMMUFaultInfo *= fi) +static uint32_t compute_fsr_fsc(CPUARMState *env, ARMMMUFaultInfo *fi, + int target_el, int mmu_idx, uint32_t *ret_= fsc) { - CPUARMState *env =3D &cpu->env; - int target_el; - bool same_el; - uint32_t syn, exc, fsr, fsc; ARMMMUIdx arm_mmu_idx =3D core_to_arm_mmu_idx(env, mmu_idx); - - target_el =3D exception_target_el(env); - if (fi->stage2) { - target_el =3D 2; - env->cp15.hpfar_el2 =3D extract64(fi->s2addr, 12, 47) << 4; - if (arm_is_secure_below_el3(env) && fi->s1ns) { - env->cp15.hpfar_el2 |=3D HPFAR_NS; - } - } - same_el =3D (arm_current_el(env) =3D=3D target_el); + uint32_t fsr, fsc; =20 if (target_el =3D=3D 2 || arm_el_is_aa64(env, target_el) || arm_s1_regime_using_lpae_format(env, arm_mmu_idx)) { @@ -88,6 +74,31 @@ static void QEMU_NORETURN arm_deliver_fault(ARMCPU *cpu,= vaddr addr, fsc =3D 0x3f; } =20 + *ret_fsc =3D fsc; + return fsr; +} + +static void QEMU_NORETURN arm_deliver_fault(ARMCPU *cpu, vaddr addr, + MMUAccessType access_type, + int mmu_idx, ARMMMUFaultInfo *= fi) +{ + CPUARMState *env =3D &cpu->env; + int target_el; + bool same_el; + uint32_t syn, exc, fsr, fsc; + + target_el =3D exception_target_el(env); + if (fi->stage2) { + target_el =3D 2; + env->cp15.hpfar_el2 =3D extract64(fi->s2addr, 12, 47) << 4; + if (arm_is_secure_below_el3(env) && fi->s1ns) { + env->cp15.hpfar_el2 |=3D HPFAR_NS; + } + } + same_el =3D (arm_current_el(env) =3D=3D target_el); + + fsr =3D compute_fsr_fsc(env, fi, target_el, mmu_idx, &fsc); + if (access_type =3D=3D MMU_INST_FETCH) { syn =3D syn_insn_abort(same_el, fi->ea, fi->s1ptw, fsc); exc =3D EXCP_PREFETCH_ABORT; --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.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=1635912656; cv=none; d=zohomail.com; s=zohoarc; b=EI+7Z//eedAVlVIMmiMt7snME3cycWpuZIeeojatm807wjmj/hNH/Y3YUSBkGiAb7MIdwFs1Iuq1jyEL+vv3oCU/mzCW2B8/BA+nsH2B24+4MxPJqltzSqBNhgxalJYXnlb7KKm64KXGBEKxKYDv0EvKo/1L6sbcXrv/Wb3JsZo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635912656; 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=baj/I/Bz1wNfmusOUpoAH2XUyOJ1rLb4eb+amBeVoKQ=; b=AYVNuDYFsWc8Gqp1qKBGZj993R25lR/55Ocy05DEhvjBVXjxku3MQrlbylDX3zxot22zcOWj3uBDgJeb4caQGhOfs2yG1i9v47xm54njoBQODlJlINeDIrb8N/RTjnYWjkCJ0TxTLRA5MM6syaEk+lHs9YeLi2Hip1OCs9uAM8Y= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912656824463.8681092831848; Tue, 2 Nov 2021 21:10:56 -0700 (PDT) Received: from localhost ([::1]:59296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7bz-0003PV-Iu for importer@patchew.org; Wed, 03 Nov 2021 00:10:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46746) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VL-0005FV-RK for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:05 -0400 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:45638) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VH-0000vQ-GX for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:02 -0400 Received: by mail-qk1-x733.google.com with SMTP id n15so1092690qkp.12 for ; Tue, 02 Nov 2021 21:03:59 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=baj/I/Bz1wNfmusOUpoAH2XUyOJ1rLb4eb+amBeVoKQ=; b=NmUMYFsf96tTM2wLwmrZnuxrGwGcb7LQ0dJNN9fKJ4RFnzpmCiMxdCOGN/ez3PpG2M 7vcYXHAFOk2lUrqnp0L704eL34i7I6V6gn00NU28BpmNKya+GiAV/lsA+j6MQqViq5l8 Mq6XRLISWEiKwWr8m/WZKmebLBb476kOrJS/xO84CpUl7dMNJ4pIBcpCcMzygj1QLVVr U1Vo+SoyGfFkqqCBWTbsGJw4TagvT3QRoXwun1/PgiG0CGr024YFZH0/V23gGqpVtzFR fbsUfVxwWT4En0XwZKnPVYQGsT3ZdwycFun/iLBQSgrfRp+1otnxm19J41ksXoeHM4wI GQIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=baj/I/Bz1wNfmusOUpoAH2XUyOJ1rLb4eb+amBeVoKQ=; b=3EEfldETbUW+p0Ab2qG2PRmOjkmRqPbPAW4AxIQ3shPvSdjl8JxajCVIrq6yzfiyk2 B6B+p33QPdHjkv2L6h6gzhcOSF4kKKxOJFBUwj+RoKr1WPlodY/yZWQuB265fEntDfKr oLDA61FkEDR4EiYAhdI+xD65MxxPf5YJCQAKk+QM6T4gAMKAZ5kMiK4vh0ZXaik/IxrW zgBcd59++iwU07UdrYY1/z+sNUmlcINrTp752HYT94J7q/C2PghPOFoDDgRrldxqrhWZ en6/2PFqLW4upcKvS5dlI8mia4EJIm33GIs4CkBoFO8gqkVUNSQaFj8/H5LJ87UFwUBq KTLQ== X-Gm-Message-State: AOAM530TtQdMR7cdnXayP9vsXU9Bbg06jrNbEHxjEaXKMwMlyoXPBikB ypdc5nwDU1G18z8r6sDtffNIdPrST/nwIA== X-Google-Smtp-Source: ABdhPJzU9lycRt/3mLIhfMTgyk4AGjUIxTG0YJewjxnNDwkWTZ1pwWm3iJhbmiZspO4JxsvaPCV3uQ== X-Received: by 2002:a37:b781:: with SMTP id h123mr5521240qkf.491.1635912238492; Tue, 02 Nov 2021 21:03:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 07/10] target/arm: Take an exception if PC is misaligned Date: Wed, 3 Nov 2021 00:03:49 -0400 Message-Id: <20211103040352.373688-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::733; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x733.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1635912658803100001 Content-Type: text/plain; charset="utf-8" For A64, any input to an indirect branch can cause this. For A32, many indirect branch paths force the branch to be aligned, but BXWritePC does not. This includes the BX instruction but also other interworking changes to PC. Prior to v8, this case is UNDEFINED. With v8, this is CONSTRAINED UNPREDICTABLE and may either raise an exception or force align the PC. We choose to raise an exception because we have the infrastructure, it makes the generated code for gen_bx simpler, and it has the possibility of catching more guest bugs. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/helper.h | 1 + target/arm/syndrome.h | 5 ++++ linux-user/aarch64/cpu_loop.c | 46 ++++++++++++++++++++--------------- target/arm/tlb_helper.c | 18 ++++++++++++++ target/arm/translate-a64.c | 15 ++++++++++++ target/arm/translate.c | 22 ++++++++++++++++- 6 files changed, 87 insertions(+), 20 deletions(-) diff --git a/target/arm/helper.h b/target/arm/helper.h index 448a86edfd..b463d9343b 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -47,6 +47,7 @@ DEF_HELPER_FLAGS_3(sel_flags, TCG_CALL_NO_RWG_SE, DEF_HELPER_2(exception_internal, void, env, i32) DEF_HELPER_4(exception_with_syndrome, void, env, i32, i32, i32) DEF_HELPER_2(exception_bkpt_insn, void, env, i32) +DEF_HELPER_2(exception_pc_alignment, noreturn, env, tl) DEF_HELPER_1(setend, void, env) DEF_HELPER_2(wfi, void, env, i32) DEF_HELPER_1(wfe, void, env) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index f30f4130a2..8cde8e7243 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -282,4 +282,9 @@ static inline uint32_t syn_illegalstate(void) return (EC_ILLEGALSTATE << ARM_EL_EC_SHIFT) | ARM_EL_IL; } =20 +static inline uint32_t syn_pcalignment(void) +{ + return (EC_PCALIGNMENT << ARM_EL_EC_SHIFT) | ARM_EL_IL; +} + #endif /* TARGET_ARM_SYNDROME_H */ diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index 97e0728b67..f9f3473288 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -113,27 +113,35 @@ void cpu_loop(CPUARMState *env) break; case EXCP_PREFETCH_ABORT: case EXCP_DATA_ABORT: - /* We should only arrive here with EC in {DATAABORT, INSNABORT= }. */ ec =3D syn_get_ec(env->exception.syndrome); - assert(ec =3D=3D EC_DATAABORT || ec =3D=3D EC_INSNABORT); - - /* Both EC have the same format for FSC, or close enough. */ - fsc =3D extract32(env->exception.syndrome, 0, 6); - switch (fsc) { - case 0x04 ... 0x07: /* Translation fault, level {0-3} */ - si_signo =3D TARGET_SIGSEGV; - si_code =3D TARGET_SEGV_MAPERR; + switch (ec) { + case EC_DATAABORT: + case EC_INSNABORT: + /* Both EC have the same format for FSC, or close enough. = */ + fsc =3D extract32(env->exception.syndrome, 0, 6); + switch (fsc) { + case 0x04 ... 0x07: /* Translation fault, level {0-3} */ + si_signo =3D TARGET_SIGSEGV; + si_code =3D TARGET_SEGV_MAPERR; + break; + case 0x09 ... 0x0b: /* Access flag fault, level {1-3} */ + case 0x0d ... 0x0f: /* Permission fault, level {1-3} */ + si_signo =3D TARGET_SIGSEGV; + si_code =3D TARGET_SEGV_ACCERR; + break; + case 0x11: /* Synchronous Tag Check Fault */ + si_signo =3D TARGET_SIGSEGV; + si_code =3D TARGET_SEGV_MTESERR; + break; + case 0x21: /* Alignment fault */ + si_signo =3D TARGET_SIGBUS; + si_code =3D TARGET_BUS_ADRALN; + break; + default: + g_assert_not_reached(); + } break; - case 0x09 ... 0x0b: /* Access flag fault, level {1-3} */ - case 0x0d ... 0x0f: /* Permission fault, level {1-3} */ - si_signo =3D TARGET_SIGSEGV; - si_code =3D TARGET_SEGV_ACCERR; - break; - case 0x11: /* Synchronous Tag Check Fault */ - si_signo =3D TARGET_SIGSEGV; - si_code =3D TARGET_SEGV_MTESERR; - break; - case 0x21: /* Alignment fault */ + case EC_PCALIGNMENT: si_signo =3D TARGET_SIGBUS; si_code =3D TARGET_BUS_ADRALN; break; diff --git a/target/arm/tlb_helper.c b/target/arm/tlb_helper.c index 4cacb9658f..b79004e0cc 100644 --- a/target/arm/tlb_helper.c +++ b/target/arm/tlb_helper.c @@ -9,6 +9,7 @@ #include "cpu.h" #include "internals.h" #include "exec/exec-all.h" +#include "exec/helper-proto.h" =20 static inline uint32_t merge_syn_data_abort(uint32_t template_syn, unsigned int target_el, @@ -134,6 +135,23 @@ void arm_cpu_do_unaligned_access(CPUState *cs, vaddr v= addr, arm_deliver_fault(cpu, vaddr, access_type, mmu_idx, &fi); } =20 +void helper_exception_pc_alignment(CPUARMState *env, target_ulong pc) +{ + ARMMMUFaultInfo fi =3D { .type =3D ARMFault_Alignment }; + int target_el =3D exception_target_el(env); + int mmu_idx =3D cpu_mmu_index(env, true); + uint32_t fsc; + + env->exception.vaddress =3D pc; + + /* + * Note that the fsc is not applicable to this exception, + * since any syndrome is pcalignment not insn_abort. + */ + env->exception.fsr =3D compute_fsr_fsc(env, &fi, target_el, mmu_idx, &= fsc); + raise_exception(env, EXCP_PREFETCH_ABORT, syn_pcalignment(), target_el= ); +} + #if !defined(CONFIG_USER_ONLY) =20 /* diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 2986fe1393..130a9ff8d5 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -14753,6 +14753,7 @@ static void aarch64_tr_translate_insn(DisasContextB= ase *dcbase, CPUState *cpu) uint64_t pc =3D s->base.pc_next; uint32_t insn; =20 + /* Singlestep exceptions have the highest priority. */ if (s->ss_active && !s->pstate_ss) { /* Singlestep state is Active-pending. * If we're in this state at the start of a TB then either @@ -14771,6 +14772,20 @@ static void aarch64_tr_translate_insn(DisasContext= Base *dcbase, CPUState *cpu) return; } =20 + if (pc & 3) { + /* + * PC alignment fault. This has priority over the instruction abo= rt + * that we would receive from a translation fault via arm_ldl_code. + * This should only be possible after an indirect branch, at the + * start of the TB. + */ + assert(s->base.num_insns =3D=3D 1); + gen_helper_exception_pc_alignment(cpu_env, tcg_constant_tl(pc)); + s->base.is_jmp =3D DISAS_NORETURN; + s->base.pc_next =3D QEMU_ALIGN_UP(pc, 4); + return; + } + s->pc_curr =3D pc; insn =3D arm_ldl_code(env, &s->base, pc, s->sctlr_b); s->insn =3D insn; diff --git a/target/arm/translate.c b/target/arm/translate.c index 82d4e24c27..828fb328ee 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -9566,7 +9566,27 @@ static void arm_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cpu) uint32_t pc =3D dc->base.pc_next; unsigned int insn; =20 - if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) { + /* Singlestep exceptions have the highest priority. */ + if (arm_check_ss_active(dc)) { + dc->base.pc_next =3D pc + 4; + return; + } + + if (pc & 3) { + /* + * PC alignment fault. This has priority over the instruction abo= rt + * that we would receive from a translation fault via arm_ldl_code + * (or the execution of the kernelpage entrypoint). This should on= ly + * be possible after an indirect branch, at the start of the TB. + */ + assert(dc->base.num_insns =3D=3D 1); + gen_helper_exception_pc_alignment(cpu_env, tcg_constant_tl(pc)); + dc->base.is_jmp =3D DISAS_NORETURN; + dc->base.pc_next =3D QEMU_ALIGN_UP(pc, 4); + return; + } + + if (arm_check_kernelpage(dc)) { dc->base.pc_next =3D pc + 4; return; } --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912455739943.2755738862593; Tue, 2 Nov 2021 21:07:35 -0700 (PDT) Received: from localhost ([::1]:44348 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7Yk-0001u3-Pq for importer@patchew.org; Wed, 03 Nov 2021 00:07:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46750) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VL-0005FX-SA for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:05 -0400 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]:42688) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VI-0000vi-5Y for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:03 -0400 Received: by mail-qv1-xf2c.google.com with SMTP id b17so1481708qvl.9 for ; Tue, 02 Nov 2021 21:03:59 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03: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 :mime-version:content-transfer-encoding; bh=FTtJgfAjhjyjpChmV21pyJSxrF1nuLy+//JpsWJ6z/k=; b=g1E1hcAcf148YccyIG7stM2rzbaOfCDKL4sQGbSu7j5SU5Wyd+GlFbTwOoUvstVwh7 vv0O1mD8GjGrMzoFa+cazf0fvTomf+2EcDlckiBzj/aPBwkd0r9SFVyK0m8aLUTvsFhw SQt2jfiYxF/Rv1MCW3x9qiwVWGZAiOld7TeoREk5wOVbF27quqjs7KtywCX0NOX4mUd2 dh0o/aHzJFlOKbiaeC0EZ0SbEntVAJARcrcgdAA+cT3EcKKSq0ooKW+DGZ9GKBDOY8RB t6q5o7onewcLADNzbWzbn8DJKAr80wS11oDSaCiBBR+i66TYNf4l/z0Xoq2NTtf+OXk7 C+MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FTtJgfAjhjyjpChmV21pyJSxrF1nuLy+//JpsWJ6z/k=; b=MOH0wVW8kA2qTUMUBoRZdXLRlChMkJgHI4YNpG1WUvPAAtY1T3IE6b6rjdod90ggtr I9SJx/9suIQuy5q24bywSGpA1GXo9hzlGj/KCikQmBF2wlnriYcfzjXtAaouUD38FDLI HFRfmTxh90hQpY5Netp1TdPiNlBVqqe1TNet3cOTys45tHkIEPD0+RD4Vg9eMh15OR8j DBjGjeoRi+ECR+UYJ/ojrmMBOxye44ugceDB6Shr1IW4rFakStiZfDxM7g/R+tia6WFO j8bCVBsO73tUiqOfIHKx+3f4B1UI0L3tYB80JRJUTQnuT0NGxQahvL5Fce6SWWsazRJl YPjg== X-Gm-Message-State: AOAM532wwMJblZ1m5FvRL/PwtNSKMT5G4PzpzWJ/+dRij9dajDRdKU43 ZqcptXmQvXvl/kLCHsZQL25es+FNI6lqCw== X-Google-Smtp-Source: ABdhPJxR/z6fsILl13zkDQ0Cpdnc73WPxC4Sz86oi1au4g2bQN8cyBn9lbGV4b9JdXxKkhKNcPUPgA== X-Received: by 2002:a0c:ec12:: with SMTP id y18mr18128801qvo.24.1635912239149; Tue, 02 Nov 2021 21:03:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 08/10] target/arm: Assert thumb pc is aligned Date: Wed, 3 Nov 2021 00:03:50 -0400 Message-Id: <20211103040352.373688-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2c; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , 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) X-ZM-MESSAGEID: 1635912456778100001 Content-Type: text/plain; charset="utf-8" Misaligned thumb PC is architecturally impossible. Assert is better than proceeding, in case we've missed something somewhere. Expand a comment about aligning the pc in gdbstub. Fail an incoming migrate if a thumb pc is misaligned. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/gdbstub.c | 9 +++++++-- target/arm/machine.c | 10 ++++++++++ target/arm/translate.c | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index e0dcb33e32..90bf803be2 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -77,8 +77,13 @@ int arm_cpu_gdb_write_register(CPUState *cs, uint8_t *me= m_buf, int n) =20 tmp =3D ldl_p(mem_buf); =20 - /* Mask out low bit of PC to workaround gdb bugs. This will probably - cause problems if we ever implement the Jazelle DBX extensions. */ + /* + * Mask out low bits of PC to workaround gdb bugs. + * This avoids an assert in thumb_tr_translate_insn, because it is + * architecturally impossible to misalign the pc. + * This will probably cause problems if we ever implement the + * Jazelle DBX extensions. + */ if (n =3D=3D 15) { tmp &=3D ~1; } diff --git a/target/arm/machine.c b/target/arm/machine.c index c74d8c3f4b..135d2420b5 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -794,6 +794,16 @@ static int cpu_post_load(void *opaque, int version_id) return -1; } } + + /* + * Misaligned thumb pc is architecturally impossible. + * We have an assert in thumb_tr_translate_insn to verify this. + * Fail an incoming migrate to avoid this assert. + */ + if (!is_a64(env) && env->thumb && (env->regs[15] & 1)) { + return -1; + } + if (!kvm_enabled()) { pmu_op_finish(&cpu->env); } diff --git a/target/arm/translate.c b/target/arm/translate.c index 828fb328ee..9ac4292cfb 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -9657,6 +9657,9 @@ static void thumb_tr_translate_insn(DisasContextBase = *dcbase, CPUState *cpu) uint32_t insn; bool is_16bit; =20 + /* Misaligned thumb PC is architecturally impossible. */ + assert((dc->base.pc_next & 1) =3D=3D 0); + if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) { dc->base.pc_next =3D pc + 2; return; --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912669125653.3708398813978; Tue, 2 Nov 2021 21:11:09 -0700 (PDT) Received: from localhost ([::1]:60382 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7cC-0004AR-6L for importer@patchew.org; Wed, 03 Nov 2021 00:11:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46760) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VM-0005Fk-Al for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:06 -0400 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]:36499) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VI-0000w7-NC for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:04 -0400 Received: by mail-qv1-xf2c.google.com with SMTP id d6so1502012qvb.3 for ; Tue, 02 Nov 2021 21:04:00 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:03:59 -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=1GwQXaikJPOnXJQIMQ/JzNg2jCKDE196b7cKL2erVtk=; b=eoMwY3zXHU5BmWu0Wwlxb1SANRZPySGNMZi1IV6nZBvpTxPNEH2w/GVO9g6aRKSRVW wsDgWGEBtQodTE1GObNyI8FXRdxaEYSXixYDa1xnvf93R8B0juhB056bchODawDw8ts4 v5v4Bs5PVaYr59zS0KOR9sa28PfzxQ/6fpo+BD8okn8tKJY4kiR/kDNQaAioRIVxX0N1 5qzc80HQS5pujyEdZXHcZDYIQrvMqZDRIz6bHBbA3AUCv4B4/a8q93yuodv0I+Zc78Du WCBiulhmDBQhCgnZwF2q+9nwcOKwQ4ogrdU3H4Ec7FVZeqGAg6ZLBWAMPJBx+kJUZSuR Da2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1GwQXaikJPOnXJQIMQ/JzNg2jCKDE196b7cKL2erVtk=; b=JJQ1onWmd1I54P4frPxNRsD4s+V9JlitteYO6VL2bVGC2aJUzFi/EudkVAGES4Mh7b K+y7+cVmETZGR+ew0xAOqpBqgzFFRqqiT1/2H7yg1FZRSF5jfWnxAkAhn9fQbnXK5NBO aiOowXw1EuKzMeu9bNNJRHr93MMkzo67aHXbja2XaYh14cGEdgu9BZoZOXT03Jf/F9yj 8YpKTMeoSkHxIgH/6y11tbDtFCe9WNED9KP2VFCBKZ2oIQRljwVXFtW9VtyY2ICMFVg+ krnU5VYTarUWBSdabD+fCW6mVgy6qLG5n/MWy0RAvsxMkhCrnU4JgbhAmfSPlhKdUGQw laLA== X-Gm-Message-State: AOAM533Y+Ddxq/hzo9mzHwZokU9DJ3HO8cA1417zUXF5BEZ14x0TvBW/ IkhQDt4S0v3mqhs5vMW4hworo7D9l4PLMQ== X-Google-Smtp-Source: ABdhPJyIZDu+4Mao3PSCeRvH/+E6+bwxfcNClkCR1fbaKMKbRfPmHoiB8xrw4qD9bxcq2lFfB4LOnw== X-Received: by 2002:ac8:5d86:: with SMTP id d6mr42533562qtx.194.1635912239748; Tue, 02 Nov 2021 21:03:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 09/10] target/arm: Suppress bp for exceptions with more priority Date: Wed, 3 Nov 2021 00:03:51 -0400 Message-Id: <20211103040352.373688-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2c; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , 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) X-ZM-MESSAGEID: 1635912669537100003 Content-Type: text/plain; charset="utf-8" Both single-step and pc alignment faults have priority over breakpoint exceptions. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/debug_helper.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c index 2983e36dd3..32f3caec23 100644 --- a/target/arm/debug_helper.c +++ b/target/arm/debug_helper.c @@ -220,6 +220,7 @@ bool arm_debug_check_breakpoint(CPUState *cs) { ARMCPU *cpu =3D ARM_CPU(cs); CPUARMState *env =3D &cpu->env; + target_ulong pc; int n; =20 /* @@ -231,6 +232,28 @@ bool arm_debug_check_breakpoint(CPUState *cs) return false; } =20 + /* + * Single-step exceptions have priority over breakpoint exceptions. + * If single-step state is active-pending, suppress the bp. + */ + if (arm_singlestep_active(env) && !(env->pstate & PSTATE_SS)) { + return false; + } + + /* + * PC alignment faults have priority over breakpoint exceptions. + */ + pc =3D is_a64(env) ? env->pc : env->regs[15]; + if ((is_a64(env) || !env->thumb) && (pc & 3) !=3D 0) { + return false; + } + + /* + * Instruction aborts have priority over breakpoint exceptions. + * TODO: We would need to look up the page for PC and verify that + * it is present and executable. + */ + for (n =3D 0; n < ARRAY_SIZE(env->cpu_breakpoint); n++) { if (bp_wp_matches(cpu, n, false)) { return true; --=20 2.25.1 From nobody Wed May 15 02:40:29 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635912520922879.5540134496708; Tue, 2 Nov 2021 21:08:40 -0700 (PDT) Received: from localhost ([::1]:49620 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7Zo-0005M3-04 for importer@patchew.org; Wed, 03 Nov 2021 00:08:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46780) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7VN-0005G3-SF for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:06 -0400 Received: from mail-qv1-xf2d.google.com ([2607:f8b0:4864:20::f2d]:42689) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7VL-0000wN-EZ for qemu-devel@nongnu.org; Wed, 03 Nov 2021 00:04:05 -0400 Received: by mail-qv1-xf2d.google.com with SMTP id b17so1481790qvl.9 for ; Tue, 02 Nov 2021 21:04:00 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id br20sm730408qkb.104.2021.11.02.21.03.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Nov 2021 21:04: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 :mime-version:content-transfer-encoding; bh=j3xcIy2m2TMlH3aTyvVTXEM5j7IHz1QAadoWnnY7f2s=; b=JeL6e5zCxxONpWPtKVZ/l5YNS4AcWs48xxKKlqdHbKIiM8xq9QwFcRpEsUrTauMkJ+ 4CevVkNSr+T/uEroVwfeBjY1tipbjzVhrGEPDvl8xUaiwgaPNhS5i90vngod+RCSt48K x1y3OMzu0uCeOmq9G1RJBJLE0O6w+96W9cT3kf6u0Uk3q+Iae0pByexyjJbnHH+J8YNg Pn4qGdu1WLa9yIBfhOwjAM3V5FJq4lPVLv90HrsfZuucfiuI1P3rtFGRnCK1qm4Dyrkz b0ly/4u17rC3kfU+FX8Lk3HpzG3UP4SfP9t0MITEUazTPPbwGg/TAYXKW+rlxANQHeaD BMLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=j3xcIy2m2TMlH3aTyvVTXEM5j7IHz1QAadoWnnY7f2s=; b=cr5EaHTn7D4VJEV3c4jThc18+jIdmfxDZ7XcbT6nUEVLWiHDTg+1OoplyrPa7WTZ8v 3yZB7uGd81ZeleVHeg6OdCDKdhSGDVcStcWUIPlq3ZrUsnd1WdobazNX3HD3DKxwqdhd Lb4l6v62316m2xq4L7g+TMaQjDkItvNzGIK+/8Sr30WKFGb7R5QJS3Wln5r7c9A3yPgy QIaJqlIFhdc89sYwprEiXUZ+dRUF6yEODtkvP1kFqVj8p58JYGDeMMW31uHis34noFez 7JSp7SLyCWjNH+2kXOPkxfgQzcNC7pMbTNxIax9MMrIaemFD0pBjf8qQCRXOYiYB/so0 rtbQ== X-Gm-Message-State: AOAM533x3tmQCKtG73SJux+g8CoQ2+fgsvm9XdA9EMUL4GjLfbfTRXix M4jqXBtXVankOYN/tJHzmgmKEypTGj49RA== X-Google-Smtp-Source: ABdhPJyXRyaVLqmXIYU6Xk7pV9taBE7pjZRkkIU4HfY1aOzhfSlaopHF3j5kdlozhCCKZ3/23zxhwQ== X-Received: by 2002:ad4:5f4c:: with SMTP id p12mr24008002qvg.11.1635912240400; Tue, 02 Nov 2021 21:04:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 10/10] tests/tcg: Add arm and aarch64 pc alignment tests Date: Wed, 3 Nov 2021 00:03:52 -0400 Message-Id: <20211103040352.373688-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103040352.373688-1-richard.henderson@linaro.org> References: <20211103040352.373688-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2d; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , 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) X-ZM-MESSAGEID: 1635912522695100001 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tests/tcg/aarch64/pcalign-a64.c | 37 +++++++++++++++++++++++++ tests/tcg/arm/pcalign-a32.c | 46 +++++++++++++++++++++++++++++++ tests/tcg/aarch64/Makefile.target | 4 +-- tests/tcg/arm/Makefile.target | 4 +++ 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 tests/tcg/aarch64/pcalign-a64.c create mode 100644 tests/tcg/arm/pcalign-a32.c diff --git a/tests/tcg/aarch64/pcalign-a64.c b/tests/tcg/aarch64/pcalign-a6= 4.c new file mode 100644 index 0000000000..6b9277f919 --- /dev/null +++ b/tests/tcg/aarch64/pcalign-a64.c @@ -0,0 +1,37 @@ +/* Test PC misalignment exception */ + +#include +#include +#include +#include + +static void *expected; + +static void sigbus(int sig, siginfo_t *info, void *vuc) +{ + assert(info->si_code =3D=3D BUS_ADRALN); + assert(info->si_addr =3D=3D expected); + exit(EXIT_SUCCESS); +} + +int main() +{ + void *tmp; + + struct sigaction sa =3D { + .sa_sigaction =3D sigbus, + .sa_flags =3D SA_SIGINFO + }; + + if (sigaction(SIGBUS, &sa, NULL) < 0) { + perror("sigaction"); + return EXIT_FAILURE; + } + + asm volatile("adr %0, 1f + 1\n\t" + "str %0, %1\n\t" + "br %0\n" + "1:" + : "=3D&r"(tmp), "=3Dm"(expected)); + abort(); +} diff --git a/tests/tcg/arm/pcalign-a32.c b/tests/tcg/arm/pcalign-a32.c new file mode 100644 index 0000000000..3c9c8cc97b --- /dev/null +++ b/tests/tcg/arm/pcalign-a32.c @@ -0,0 +1,46 @@ +/* Test PC misalignment exception */ + +#ifdef __thumb__ +#error "This test must be compiled for ARM" +#endif + +#include +#include +#include +#include + +static void *expected; + +static void sigbus(int sig, siginfo_t *info, void *vuc) +{ + assert(info->si_code =3D=3D BUS_ADRALN); + assert(info->si_addr =3D=3D expected); + exit(EXIT_SUCCESS); +} + +int main() +{ + void *tmp; + + struct sigaction sa =3D { + .sa_sigaction =3D sigbus, + .sa_flags =3D SA_SIGINFO + }; + + if (sigaction(SIGBUS, &sa, NULL) < 0) { + perror("sigaction"); + return EXIT_FAILURE; + } + + asm volatile("adr %0, 1f + 2\n\t" + "str %0, %1\n\t" + "bx %0\n" + "1:" + : "=3D&r"(tmp), "=3Dm"(expected)); + + /* + * From v8, it is CONSTRAINED UNPREDICTABLE whether BXWritePC aligns + * the address or not. If so, we can legitimately fall through. + */ + return EXIT_SUCCESS; +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 2c05c90d17..1d967901bd 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -8,8 +8,8 @@ VPATH +=3D $(ARM_SRC) AARCH64_SRC=3D$(SRC_PATH)/tests/tcg/aarch64 VPATH +=3D $(AARCH64_SRC) =20 -# Float-convert Tests -AARCH64_TESTS=3Dfcvt +# Base architecture tests +AARCH64_TESTS=3Dfcvt pcalign-a64 =20 fcvt: LDFLAGS+=3D-lm =20 diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target index 5ab59ed6ce..f509d823d4 100644 --- a/tests/tcg/arm/Makefile.target +++ b/tests/tcg/arm/Makefile.target @@ -29,6 +29,10 @@ run-fcvt: fcvt $(call run-test,fcvt,$(QEMU) $<,"$< on $(TARGET_NAME)") $(call diff-out,fcvt,$(ARM_SRC)/fcvt.ref) =20 +# PC alignment test +ARM_TESTS +=3D pcalign-a32 +pcalign-a32: CFLAGS+=3D-marm + ifeq ($(CONFIG_ARM_COMPATIBLE_SEMIHOSTING),y) =20 # Semihosting smoke test for linux-user --=20 2.25.1