From nobody Sun May 11 15:32:11 2025
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=1733928354; cv=none;
	d=zohomail.com; s=zohoarc;
	b=XJ2+BRwJaK22QfiGWORjHruRzxlsC6AMCTlFNB7XD7GZ8WjNHRN9svdcGJgNB0N6QQdLytRI0+ylz+GcQ/+SYOE3qHvDjKLRo6UnVcwa7ctUaS+73zwQgmS2Edexad3cswk5ugN9xi/2hXaIJ2UIN+iljQU2moWw2UdCadY3XCo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928354;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=na2mVMXjYERuCY2HfRkKGK/haMymRcX2C110KFrsYNY=;
	b=mPSrWlkwN/FMe8i8gm820x6Ug/+D3iMuJBqZxf5xRzt1pdWymQJ0nWISBptEfaWBSn4cc8dbU8PNuZLqlW2ijTnkVI/Ib521D25KKno2y/GIyan/dhbszTH3zXMP8pVWfweF8jrTnpcMeRs+18HguApxFboGTfLT7WTvtR/ivbo=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928354737615.6781992091906;
 Wed, 11 Dec 2024 06:45:54 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxJ-0006rY-6I; Wed, 11 Dec 2024 09:44:49 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxH-0006qo-RX
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:47 -0500
Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxF-0003qk-8b
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:47 -0500
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-435004228c0so29576845e9.0
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:44 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928284; x=1734533084; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=na2mVMXjYERuCY2HfRkKGK/haMymRcX2C110KFrsYNY=;
 b=ORHtmYyBFOZWzDHgAV9xx+P1M6MDUsbQIUB47p41H7evCN0EU2NG6iRrZjrdkWk4Hu
 92He0QvuUtysAfPnCRM8ilmKSe960SYNgaohHC6Z2NGXkR9AgvJjWa/PyhaiI3LID2nj
 RRpH/hmFvk2qGOSAjqRhK9JuI+tpu3yX+XKP2G2fBU5d3ZpVfDaV7KbMB7AHhJ/iuoio
 bAToB2b2BbC52IOUyKW1/D9ycn4o+F0+FrOl0w6tmOO536pUF4WkyBtgwE8h/apsofVX
 LbGc+zid7ExiYEa2MS0VcR2uBdQpc1s6wN/2TQWvX4/X5AZ5Ql6WWqXGgB0WfY+Fd7ca
 TJGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928284; x=1734533084;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=na2mVMXjYERuCY2HfRkKGK/haMymRcX2C110KFrsYNY=;
 b=ZWl42uJGcpeRaDJZN30OHp4t1EGxbC+AaFDVTR5h7Y/5kyKsH/53mjSSX5vCqzqAkD
 QKDW2yldcligTQj4vCZLmcQEZnT71SyepXYuC77KSbpHbjQioYFE4eqG1GgJQ8fzIzMm
 15V3oIafCEtrNVfBrwRH+a0pzpUJXKHQcd+bZ8WooxQpZy8X7fnUmiPZsB/ESLOGvn4B
 ICKrF/OTFooiBZoZl3mmwx3sRZKa4jJ4VYRrc82CkXnWGy/9LLpLKOZTuaTe6ysnE97n
 xOJURSZNqBd0CEZrlHBRXcpMDM7OoFRBimdhlUh3I7dDOg6MvdrfQop0B2+0z17FJEQW
 lijw==
X-Forwarded-Encrypted: i=1;
 AJvYcCWlWbvE75JlGk2QjhuLq+KLcbNhJU4YXW02TSKYyfbxgv/CBtYK1vwvDdxmoDaUViEIFdHa/8uKIxnL@nongnu.org
X-Gm-Message-State: AOJu0YxrQ+Fitlskqs+U5gLJ9OAS29vUFO1F3aagkvUd2WA9hE4rmh8M
 kV8V9+IKio8YGub90TtVj9RjGA6P7gRZfCqy6LJ5JyHbwG5IgmO7wtR9KdkyvpQ=
X-Gm-Gg: ASbGnctJQYIxsGGLgYidMkVKkO43mXhBgQEJ2vvHzj7bOWJB/52EXXmUAytPky+2Zzo
 bscdrvqEsdFmKuCJUHCUTsZ8u7ebYaADkwrjQl/cjFA466QoPwpo8/2MIjA+MuL3/SZzMgN8v69
 iVImHYgeMKXhv+OLJhj1eH53JMznGsiPwFgXXgmSzhuUhgixrX2WEHmQSsHBMYohRh4k1lc2alf
 rohpwQkjZQmePMjN6T+opTHffkamoKoLyNN5NS+vMHPkOiKBcilQG/Zv5pY
X-Google-Smtp-Source: 
 AGHT+IGosAjhqHyVcCafiF3oKnSrx57sKB+artIlZcAF8Z1AvmgMi45HkYD3b1MSbZZbbKxb1McgWQ==
X-Received: by 2002:a05:600c:35c9:b0:434:a734:d279 with SMTP id
 5b1f17b1804b1-4361c3c6fbfmr30226985e9.16.1733928283603;
 Wed, 11 Dec 2024 06:44:43 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 1/6] target/arm: Implement fine-grained-trap handling for
 FEAT_XS
Date: Wed, 11 Dec 2024 14:44:35 +0000
Message-Id: <20241211144440.2700268-2-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::330;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928357275116600
Content-Type: text/plain; charset="utf-8"

FEAT_XS introduces a set of new TLBI maintenance instructions with an
"nXS" qualifier.  These behave like the stardard ones except that
they do not wait for memory accesses with the XS attribute to
complete.  They have an interaction with the fine-grained-trap
handling: the FGT bits that a hypervisor can use to trap TLBI
maintenance instructions normally trap also the nXS variants, but the
hypervisor can elect to not trap the nXS variants by setting
HCRX_EL2.FGTnXS to 1.

Add support to our FGT mechanism for these TLBI bits. For each
TLBI-trapping FGT bit we define, for example:
 * FGT_TLBIVAE1 -- the same value we do at present for the
   normal variant of the insn
 * FGT_TLBIVAE1NXS -- for the nXS qualified insn; the value of
   this enum has an NXS bit ORed into it

In access_check_cp_reg() we can then ignore the trap bit for an
access where ri->fgt has the NXS bit set and HCRX_EL2.FGTnXS is 1.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/arm/cpregs.h        | 72 ++++++++++++++++++++++----------------
 target/arm/cpu-features.h  |  5 +++
 target/arm/helper.c        |  5 ++-
 target/arm/tcg/op_helper.c | 11 +++++-
 4 files changed, 61 insertions(+), 32 deletions(-)

diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h
index cc7c54378f4..87704762ef9 100644
--- a/target/arm/cpregs.h
+++ b/target/arm/cpregs.h
@@ -621,6 +621,7 @@ FIELD(HDFGWTR_EL2, NBRBCTL, 60, 1)
 FIELD(HDFGWTR_EL2, NBRBDATA, 61, 1)
 FIELD(HDFGWTR_EL2, NPMSNEVFR_EL1, 62, 1)
=20
+FIELD(FGT, NXS, 13, 1) /* Honour HCR_EL2.FGTnXS to suppress FGT */
 /* Which fine-grained trap bit register to check, if any */
 FIELD(FGT, TYPE, 10, 3)
 FIELD(FGT, REV, 9, 1) /* Is bit sense reversed? */
@@ -639,6 +640,17 @@ FIELD(FGT, BITPOS, 0, 6) /* Bit position within the ui=
nt64_t */
 #define DO_REV_BIT(REG, BITNAME)                                        \
     FGT_##BITNAME =3D FGT_##REG | FGT_REV | R_##REG##_EL2_##BITNAME##_SHIFT
=20
+/*
+ * The FGT bits for TLBI maintenance instructions accessible at EL1 always
+ * affect the "normal" TLBI insns; they affect the corresponding TLBI insns
+ * with the nXS qualifier only if HCRX_EL2.FGTnXS is 0. We define e.g.
+ * FGT_TLBIVAE1 to use for the normal insn, and FGT_TLBIVAE1NXS to use
+ * for the nXS qualified insn.
+ */
+#define DO_TLBINXS_BIT(REG, BITNAME)                             \
+    FGT_##BITNAME =3D FGT_##REG | R_##REG##_EL2_##BITNAME##_SHIFT, \
+    FGT_##BITNAME##NXS =3D FGT_##BITNAME | R_FGT_NXS_MASK
+
 typedef enum FGTBit {
     /*
      * These bits tell us which register arrays to use:
@@ -772,36 +784,36 @@ typedef enum FGTBit {
     DO_BIT(HFGITR, ATS1E0W),
     DO_BIT(HFGITR, ATS1E1RP),
     DO_BIT(HFGITR, ATS1E1WP),
-    DO_BIT(HFGITR, TLBIVMALLE1OS),
-    DO_BIT(HFGITR, TLBIVAE1OS),
-    DO_BIT(HFGITR, TLBIASIDE1OS),
-    DO_BIT(HFGITR, TLBIVAAE1OS),
-    DO_BIT(HFGITR, TLBIVALE1OS),
-    DO_BIT(HFGITR, TLBIVAALE1OS),
-    DO_BIT(HFGITR, TLBIRVAE1OS),
-    DO_BIT(HFGITR, TLBIRVAAE1OS),
-    DO_BIT(HFGITR, TLBIRVALE1OS),
-    DO_BIT(HFGITR, TLBIRVAALE1OS),
-    DO_BIT(HFGITR, TLBIVMALLE1IS),
-    DO_BIT(HFGITR, TLBIVAE1IS),
-    DO_BIT(HFGITR, TLBIASIDE1IS),
-    DO_BIT(HFGITR, TLBIVAAE1IS),
-    DO_BIT(HFGITR, TLBIVALE1IS),
-    DO_BIT(HFGITR, TLBIVAALE1IS),
-    DO_BIT(HFGITR, TLBIRVAE1IS),
-    DO_BIT(HFGITR, TLBIRVAAE1IS),
-    DO_BIT(HFGITR, TLBIRVALE1IS),
-    DO_BIT(HFGITR, TLBIRVAALE1IS),
-    DO_BIT(HFGITR, TLBIRVAE1),
-    DO_BIT(HFGITR, TLBIRVAAE1),
-    DO_BIT(HFGITR, TLBIRVALE1),
-    DO_BIT(HFGITR, TLBIRVAALE1),
-    DO_BIT(HFGITR, TLBIVMALLE1),
-    DO_BIT(HFGITR, TLBIVAE1),
-    DO_BIT(HFGITR, TLBIASIDE1),
-    DO_BIT(HFGITR, TLBIVAAE1),
-    DO_BIT(HFGITR, TLBIVALE1),
-    DO_BIT(HFGITR, TLBIVAALE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVMALLE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIASIDE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAAE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVALE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAALE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAAE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVALE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAALE1OS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVMALLE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIASIDE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAAE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVALE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAALE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAAE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVALE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAALE1IS),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAAE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVALE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIRVAALE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVMALLE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIASIDE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAAE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVALE1),
+    DO_TLBINXS_BIT(HFGITR, TLBIVAALE1),
     DO_BIT(HFGITR, CFPRCTX),
     DO_BIT(HFGITR, DVPRCTX),
     DO_BIT(HFGITR, CPPRCTX),
diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h
index e806f138b8f..30302d6c5b4 100644
--- a/target/arm/cpu-features.h
+++ b/target/arm/cpu-features.h
@@ -474,6 +474,11 @@ static inline bool isar_feature_aa64_fcma(const ARMISA=
Registers *id)
     return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, FCMA) !=3D 0;
 }
=20
+static inline bool isar_feature_aa64_xs(const ARMISARegisters *id)
+{
+    return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, XS) !=3D 0;
+}
+
 /*
  * These are the values from APA/API/APA3.
  * In general these must be compared '>=3D', per the normal Arm ARM
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 910ae62c476..8e62769ec0d 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5346,10 +5346,13 @@ static void hcrx_write(CPUARMState *env, const ARMC=
PRegInfo *ri,
         valid_mask |=3D HCRX_TALLINT | HCRX_VINMI | HCRX_VFNMI;
     }
     /* FEAT_CMOW adds CMOW */
-
     if (cpu_isar_feature(aa64_cmow, cpu)) {
         valid_mask |=3D HCRX_CMOW;
     }
+    /* FEAT_XS adds FGTnXS, FnXS */
+    if (cpu_isar_feature(aa64_xs, cpu)) {
+        valid_mask |=3D HCRX_FGTNXS | HCRX_FNXS;
+    }
=20
     /* Clear RES0 bits.  */
     env->cp15.hcrx_el2 =3D value & valid_mask;
diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c
index 1ecb4659889..1161d301b71 100644
--- a/target/arm/tcg/op_helper.c
+++ b/target/arm/tcg/op_helper.c
@@ -817,6 +817,7 @@ const void *HELPER(access_check_cp_reg)(CPUARMState *en=
v, uint32_t key,
         unsigned int idx =3D FIELD_EX32(ri->fgt, FGT, IDX);
         unsigned int bitpos =3D FIELD_EX32(ri->fgt, FGT, BITPOS);
         bool rev =3D FIELD_EX32(ri->fgt, FGT, REV);
+        bool nxs =3D FIELD_EX32(ri->fgt, FGT, NXS);
         bool trapbit;
=20
         if (ri->fgt & FGT_EXEC) {
@@ -830,7 +831,15 @@ const void *HELPER(access_check_cp_reg)(CPUARMState *e=
nv, uint32_t key,
             trapword =3D env->cp15.fgt_write[idx];
         }
=20
-        trapbit =3D extract64(trapword, bitpos, 1);
+        if (nxs && (arm_hcrx_el2_eff(env) & HCRX_FGTNXS)) {
+            /*
+             * If HCRX_EL2.FGTnXS is 1 then the fine-grained trap for
+             * TLBI maintenance insns does *not* apply to the nXS variant.
+             */
+            trapbit =3D 0;
+        } else {
+            trapbit =3D extract64(trapword, bitpos, 1);
+        }
         if (trapbit !=3D rev) {
             res =3D CP_ACCESS_TRAP_EL2;
             goto fail;
--=20
2.34.1
From nobody Sun May 11 15:32:11 2025
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=1733928426; cv=none;
	d=zohomail.com; s=zohoarc;
	b=C7XloPtD5wRXRns1oxMhowSUoBxWdTOluLdctnOkfv8qDq5TTRhntexnmquZkKQLOt42zYyLDWoDFb4ejEs/caCLdL5Xc52FZgQFwx4nvjf1BzoROH8E53LGEGe+TT8Q45uBlQDQB6zqzBZNETTnq5/xutNhbo1u63OdTAZuH2Y=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928426;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=G5JRzKrOBu8p2naVBHN4TEm9PW9soALL8/T3IRSujEg=;
	b=F42kz/P8L+TzN0GZILFH6q+I73X/4dKmnxkl6/bxo4l8+dEc3i0oR90n0SKANCtJGBZBRguq9EB4i1ZneHjiHrXBydufps3/5vymxILfmmIv0Z+I4VQLY0GwCYC3BxMa/QMn16kei/a6y0HUDalI5Vst7XOOfY+KwSMpjUL/cTs=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928426399446.37560156797474;
 Wed, 11 Dec 2024 06:47:06 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxK-0006rz-J3; Wed, 11 Dec 2024 09:44:50 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxI-0006r8-1Y
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:48 -0500
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxG-0003r5-Bv
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:47 -0500
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-434ab938e37so44555355e9.0
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:45 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928284; x=1734533084; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=G5JRzKrOBu8p2naVBHN4TEm9PW9soALL8/T3IRSujEg=;
 b=abqFYTQ9YeFcJKDz6JJjlSdTtrvT/s5hgPTLXgf5BgBVGB8zCtA8fGPoE8wuj/9Nte
 mE3EB5xehp+c5dJbfkEMqssxfTID9g6PrInBi8MriAWVK/NLU1D4lNXXA2DNkJBEEm3x
 3fXg0LzQdNSQY6pjr660HPX7d881pyr1XaKLslBOUPvzTEqg5Xpl4zu2e8+GY9gzF9T1
 nsHVo/4r+kvWrhEt+6snQUJ4Ve5uL8KYrCS+SrNhbfSEILVySV+sP/XtmnDjQ1nsq+5g
 kLYGfqKKu12ffMTqL/olmN2kd9fNS1yaxVT8tNxG+eeSsA1f1B5kS+7FUdSQXwW7v9Da
 POJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928284; x=1734533084;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=G5JRzKrOBu8p2naVBHN4TEm9PW9soALL8/T3IRSujEg=;
 b=xTB60OZwENrQXw27gM7ker+8b3TQmc3+MUYftyyDgBJu8hSLpCLnAG0cae3ZE/yMwh
 9Z8Jo8mG9Vz1HaxxZGmV6DvlktHcdWTkOmCXpVw34WLLF/yBLNXVHB9ztSAKlLAARQym
 XTCwE1nsD6och6HPjfZV0TuLjklBKLQgGklrlQF6sEO2dBO3LvSXpaHorVYlpZAR+XIX
 7ctiUN2hOPyglbgbwGPa/Tlhy4J9uFPu0Jc4a/JXkeusNn6vKIOGwDtD5kSq7Inyz3kJ
 YeJ7ZV3wJUptX1bfSd84RNzuOySaTy4lWtiSSxaLJkGuvALCQlFzINqhrvFcN+3WdZbU
 uSDQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUru+qAHfCWGD8Zt0DL9iYOOkxM0OcydD81PGFfyOICpDtxvCQ2UXTZZP3bxzZuNeT+sAzihlagLpa+@nongnu.org
X-Gm-Message-State: AOJu0Yx4IPrSABCfQ/3QaHCmT5uhv66nZXgbPCps2yqUEgOtHGgQIlYw
 4ZV2I3HZ5uovvlnRawgk+G55nohIe/0UffaOv0CT7r9eIX/w1nYHrAUxcAteUzA=
X-Gm-Gg: ASbGncuyr4mLEgmWVsr3ky1s6Nt7zq1mvAjr+Q7ZPRnNSJfMr01mADwQProskvGYerW
 n20MWZG12vC2V+rlzIFaj5YU0aFX48p4A1oKntgysOXidIRe3PdyiCr0T0Nd/V1rHmt5t0MMCRb
 bwelMopfK+WkqmFy+fiV0LJxfQGcyubaMeZRSRT/FrB2uX/8ft7fFf8bUYajQJgD3DvXDi8zS8n
 1tXStOzY0bwMDmxxz+hFccluUgvAMaTcypTk3Dkln0vUHyeby253/F58+Gb
X-Google-Smtp-Source: 
 AGHT+IEoA3LqXQuNmdPLYRGIs/HrUnX6ih3jA7UF7fpnfh/Jp/XaYAqcrb/YYEASxDeByg9qDZrXWg==
X-Received: by 2002:a05:600c:3109:b0:431:5044:e388 with SMTP id
 5b1f17b1804b1-4361c3f4ff1mr20807295e9.22.1733928284563;
 Wed, 11 Dec 2024 06:44:44 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 2/6] target/arm: Add ARM_CP_ADD_TLBI_NXS type flag for NXS
 insns
Date: Wed, 11 Dec 2024 14:44:36 +0000
Message-Id: <20241211144440.2700268-3-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::331;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928427415116600
Content-Type: text/plain; charset="utf-8"

All of the TLBI insns with an NXS variant put that variant at the
same encoding but with a CRn field that is one greater than for the
original TLBI insn.  To avoid having to define every TLBI insn
effectively twice, once in the normal way and once in a set of cpreg
arrays that are only registered when FEAT_XS is present, we define a
new ARM_CP_ADD_TLB_NXS type flag for cpregs.  When this flag is set
in a cpreg struct and FEAT_XS is present,
define_one_arm_cp_reg_with_opaque() will automatically add a second
cpreg to the hash table for the TLBI NXS insn with:
 * the crn+1 encoding
 * an FGT field that indicates that it should honour HCR_EL2.FGTnXS
 * a name with the "NXS" suffix

(If there are future TLBI NXS insns that don't use this same
encoding convention, it is also possible to define them manually.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/arm/cpregs.h |  8 ++++++++
 target/arm/helper.c | 25 +++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h
index 87704762ef9..1759d9defbe 100644
--- a/target/arm/cpregs.h
+++ b/target/arm/cpregs.h
@@ -126,6 +126,14 @@ enum {
      * equivalent EL1 register when FEAT_NV2 is enabled.
      */
     ARM_CP_NV2_REDIRECT          =3D 1 << 20,
+    /*
+     * Flag: this is a TLBI insn which (when FEAT_XS is present) also has
+     * an NXS variant at the same encoding except that crn is 1 greater,
+     * so when registering this cpreg automatically also register one
+     * for the TLBI NXS variant. (For QEMU the NXS variant behaves
+     * identically to the normal one, other than FGT trapping handling.)
+     */
+    ARM_CP_ADD_TLBI_NXS          =3D 1 << 21,
 };
=20
 /*
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 8e62769ec0d..c2a70f8c053 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -9146,6 +9146,31 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu,
                     if (r->state !=3D state && r->state !=3D ARM_CP_STATE_=
BOTH) {
                         continue;
                     }
+                    if ((r->type & ARM_CP_ADD_TLBI_NXS) &&
+                        cpu_isar_feature(aa64_xs, cpu)) {
+                        /*
+                         * This is a TLBI insn which has an NXS variant. T=
he
+                         * NXS variant is at the same encoding except that
+                         * crn is +1, and has the same behaviour except for
+                         * fine-grained trapping. Add the NXS insn here and
+                         * then fall through to add the normal register.
+                         * add_cpreg_to_hashtable() copies the cpreg struct
+                         * and name that it is passed, so it's OK to use
+                         * a local struct here.
+                         */
+                        ARMCPRegInfo nxs_ri =3D *r;
+                        g_autofree char *name =3D g_strdup_printf("%sNXS",=
 r->name);
+
+                        assert(state =3D=3D ARM_CP_STATE_AA64);
+                        assert(nxs_ri.crn < 0xf);
+                        nxs_ri.crn++;
+                        if (nxs_ri.fgt) {
+                            nxs_ri.fgt |=3D R_FGT_NXS_MASK;
+                        }
+                        add_cpreg_to_hashtable(cpu, &nxs_ri, opaque, state,
+                                               ARM_CP_SECSTATE_NS,
+                                               crm, opc1, opc2, name);
+                    }
                     if (state =3D=3D ARM_CP_STATE_AA32) {
                         /*
                          * Under AArch32 CP registers can be common
--=20
2.34.1
From nobody Sun May 11 15:32:11 2025
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=1733928369; cv=none;
	d=zohomail.com; s=zohoarc;
	b=bXHgcobzyiIatgujJP8Ji+Ylpo1uQunQVlfzE4Af7MT6zalNiBuBsVjBhhJlzCoH/W7EvYtWel6a/bSA8KCZd/IQFj9NEw90Io9tSMU4UYyarnMnMu25xIAuVbqc/xMMC8KiM/r3xb5iMmBJWp4vx6WFQVjAVi7V/5MGRUBn+P0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928369;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=z7Wwz4+m7jwaNqLs/+a9euIZsSuuSSKkipHbZZdLh88=;
	b=gfQbHmPHyBVo2d1hIIVkDGMNsYLv06ZxnZDOAFULp2p5XNZXjW41W269V7rrhMj30gyaeIIijfuTucaYVboqz2DaTvCcZNIL4cA5kqPFK15bc+3CCYwa3Z6t2wdZMqhW21K2ncTYSNUgYYwcc3I3U4T7duJUliY1yOvRGF7qpsM=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928369892754.1701459429328;
 Wed, 11 Dec 2024 06:46:09 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxm-000783-P0; Wed, 11 Dec 2024 09:45:18 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxK-0006sD-8O
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:50 -0500
Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxH-0003ri-1d
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:49 -0500
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-435004228c0so29577255e9.0
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:46 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928285; x=1734533085; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=z7Wwz4+m7jwaNqLs/+a9euIZsSuuSSKkipHbZZdLh88=;
 b=mImTA1i/ax7yFynEpLzhC2H4IeziU8JS6cvtTrVB/7ZTt64b3kvYRaZbTgCCo9gQpc
 r2LeAn2vDKu2q6f9fM0PQ6Y988bB9N8oAS4Y2sRyZDlnraF0WguZIjnyPjDNrajPZeKn
 Ef7NlsJTRp98V+cMOn+IJ7ZGa1RaNFCQYSAYvx+En2JzQdWs0Eo93wqJVoJ1NTtB6X23
 q0RPAjbZG4BB55P4QmnpQzLNmam5cUlHkw/LqyeVG7XKxitXYySdvlmuv+N1iwvu8ZDT
 vyCK9ffhQRL5vulMX1ll94bs6cH4e2QyvEeuFQZH52BikFxTsDJ37kr8M4ehu0dUrh8B
 Bw+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928285; x=1734533085;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=z7Wwz4+m7jwaNqLs/+a9euIZsSuuSSKkipHbZZdLh88=;
 b=bH31aUgaFw2S2Y80WlVynsFVAj1MLC8OLP1RMMtLWG972Psw06Sd6e96kDuFcJlPGi
 4EUgZ5PxAD/YESWgtqK8XMN/TH6KimmvVJspk9ajuOkGpOPfKSPLGxPfZJY+pTavXxW1
 TvBaNs3PmExz3b/E4yvnCN2u7j12I+janZ7y9rRkBxhp5s3PPkRSCHP+jUwQV/of2lBq
 q7pIl9wR6Jgc+qsmIZY9FrExrOC+2QqPUa0h9dezqpiQVEerBNXOD3I4IR0nLNaoK/+T
 6I9rj9pBatGSmRVOnLZYjksGamq5/ac9mu7gSD8AIpYXlNhZ32BT0OAE4RVzXS/Gx9iX
 yanQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUwjP2SwO/7YADtEie+IJMdukUz/zq91OI8+trLFsyM1kHTZ11zKiF2EAUO31fD3K26OEpOpHDv0uxX@nongnu.org
X-Gm-Message-State: AOJu0YxpWJpZIIgOcvSaLpeodgFudqABphoWrO4t+aYrkDmV+YSDYn1k
 T6+C5SJB0/3D1NO5cdEnJFj+LuCDn6fLQgjlnc7U9PcU47lN5F87D+ewIoselAA=
X-Gm-Gg: ASbGncsFhdZPFVs75fpFWPmisMiLlhpd80yqDjPOspN/gPBKspxd9PeDajfhH+lK7Tz
 O2MWk4NACGtKdUMzoOtlj0uQdzSEA/P0EGehoweQihvTK7rxpfonK17KWyIdLKy8f00hk1jWqH4
 zPlygRV2G0wPqsLcw6oFI82FJMar7z+MWWsb0MbEHDqw+SoacbquVWFb4LTMbEBBcwntm2SxTzy
 QD5VG6aYv9wbt2/0vuLd00RJilIWDDyi819GzwAo168mZ83T4st95mIbns4
X-Google-Smtp-Source: 
 AGHT+IEH95jIYcGe5bMADH9R1pWThmTgQo9lPy2iTLO0QLX6tba8h5gWEHW/PP37U4dysSYifp9XFQ==
X-Received: by 2002:a05:600c:1f0d:b0:434:f753:6012 with SMTP id
 5b1f17b1804b1-4361c3c7155mr30554195e9.17.1733928285517;
 Wed, 11 Dec 2024 06:44:45 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 3/6] target/arm: Add ARM_CP_ADD_TLBI_NXS type flag to TLBI
 insns
Date: Wed, 11 Dec 2024 14:44:37 +0000
Message-Id: <20241211144440.2700268-4-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::329;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928371278116600
Content-Type: text/plain; charset="utf-8"

Add the ARM_CP_ADD_TLBI_NXS to the TLBI insns with an NXS variant.
This is every AArch64 TLBI encoding except for the four FEAT_RME TLBI
insns.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/arm/tcg/tlb-insns.c | 202 +++++++++++++++++++++++--------------
 1 file changed, 124 insertions(+), 78 deletions(-)

diff --git a/target/arm/tcg/tlb-insns.c b/target/arm/tcg/tlb-insns.c
index 0f67294edc4..fadc61a76e9 100644
--- a/target/arm/tcg/tlb-insns.c
+++ b/target/arm/tcg/tlb-insns.c
@@ -617,95 +617,107 @@ static const ARMCPRegInfo tlbi_v8_cp_reginfo[] =3D {
     /* AArch64 TLBI operations */
     { .name =3D "TLBI_VMALLE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 0,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVMALLE1IS,
       .writefn =3D tlbi_aa64_vmalle1is_write },
     { .name =3D "TLBI_VAE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 1,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAE1IS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_ASIDE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 2,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIASIDE1IS,
       .writefn =3D tlbi_aa64_vmalle1is_write },
     { .name =3D "TLBI_VAAE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAAE1IS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_VALE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVALE1IS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_VAALE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 3, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAALE1IS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_VMALLE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 0,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVMALLE1,
       .writefn =3D tlbi_aa64_vmalle1_write },
     { .name =3D "TLBI_VAE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 1,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAE1,
       .writefn =3D tlbi_aa64_vae1_write },
     { .name =3D "TLBI_ASIDE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 2,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIASIDE1,
       .writefn =3D tlbi_aa64_vmalle1_write },
     { .name =3D "TLBI_VAAE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAAE1,
       .writefn =3D tlbi_aa64_vae1_write },
     { .name =3D "TLBI_VALE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVALE1,
       .writefn =3D tlbi_aa64_vae1_write },
     { .name =3D "TLBI_VAALE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 7, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAALE1,
       .writefn =3D tlbi_aa64_vae1_write },
     { .name =3D "TLBI_IPAS2E1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ipas2e1is_write },
     { .name =3D "TLBI_IPAS2LE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ipas2e1is_write },
     { .name =3D "TLBI_ALLE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 4,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1is_write },
     { .name =3D "TLBI_VMALLS12E1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 6,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1is_write },
     { .name =3D "TLBI_IPAS2E1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ipas2e1_write },
     { .name =3D "TLBI_IPAS2LE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ipas2e1_write },
     { .name =3D "TLBI_ALLE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 4,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1_write },
     { .name =3D "TLBI_VMALLS12E1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 6,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1is_write },
 };
=20
@@ -732,54 +744,60 @@ static const ARMCPRegInfo tlbi_el2_cp_reginfo[] =3D {
       .writefn =3D tlbimva_hyp_is_write },
     { .name =3D "TLBI_ALLE2", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 0,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_alle2_write },
     { .name =3D "TLBI_VAE2", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2_write },
     { .name =3D "TLBI_VALE2", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 7, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2_write },
     { .name =3D "TLBI_ALLE2IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 0,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_alle2is_write },
     { .name =3D "TLBI_VAE2IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2is_write },
     { .name =3D "TLBI_VALE2IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 3, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2is_write },
 };
=20
 static const ARMCPRegInfo tlbi_el3_cp_reginfo[] =3D {
     { .name =3D "TLBI_ALLE3IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 0,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle3is_write },
     { .name =3D "TLBI_VAE3IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3is_write },
     { .name =3D "TLBI_VALE3IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 3, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3is_write },
     { .name =3D "TLBI_ALLE3", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 0,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle3_write },
     { .name =3D "TLBI_VAE3", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3_write },
     { .name =3D "TLBI_VALE3", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 7, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3_write },
 };
=20
@@ -981,204 +999,232 @@ static void tlbi_aa64_ripas2e1is_write(CPUARMState =
*env,
 static const ARMCPRegInfo tlbirange_reginfo[] =3D {
     { .name =3D "TLBI_RVAE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 1,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAE1IS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAAE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAAE1IS,
       .writefn =3D tlbi_aa64_rvae1is_write },
    { .name =3D "TLBI_RVALE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVALE1IS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAALE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 2, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlbis, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbis,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAALE1IS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 1,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAE1OS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAAE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAAE1OS,
       .writefn =3D tlbi_aa64_rvae1is_write },
    { .name =3D "TLBI_RVALE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVALE1OS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAALE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 5, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAALE1OS,
       .writefn =3D tlbi_aa64_rvae1is_write },
     { .name =3D "TLBI_RVAE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 1,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAE1,
       .writefn =3D tlbi_aa64_rvae1_write },
     { .name =3D "TLBI_RVAAE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAAE1,
       .writefn =3D tlbi_aa64_rvae1_write },
    { .name =3D "TLBI_RVALE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVALE1,
       .writefn =3D tlbi_aa64_rvae1_write },
     { .name =3D "TLBI_RVAALE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 6, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlb, .type =3D ARM_CP_NO_RA=
W,
+      .access =3D PL1_W, .accessfn =3D access_ttlb,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIRVAALE1,
       .writefn =3D tlbi_aa64_rvae1_write },
     { .name =3D "TLBI_RIPAS2E1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 2,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ripas2e1is_write },
     { .name =3D "TLBI_RIPAS2LE1IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 0, .opc2 =3D 6,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ripas2e1is_write },
     { .name =3D "TLBI_RVAE2IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 2, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2is_write },
    { .name =3D "TLBI_RVALE2IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 2, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2is_write },
     { .name =3D "TLBI_RIPAS2E1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 2,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ripas2e1_write },
     { .name =3D "TLBI_RIPAS2LE1", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 6,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_ripas2e1_write },
    { .name =3D "TLBI_RVAE2OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 5, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2is_write },
    { .name =3D "TLBI_RVALE2OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 5, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2is_write },
     { .name =3D "TLBI_RVAE2", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 6, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2_write },
    { .name =3D "TLBI_RVALE2", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 6, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_rvae2_write },
    { .name =3D "TLBI_RVAE3IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 2, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3is_write },
    { .name =3D "TLBI_RVALE3IS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 2, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3is_write },
    { .name =3D "TLBI_RVAE3OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 5, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3is_write },
    { .name =3D "TLBI_RVALE3OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 5, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3is_write },
    { .name =3D "TLBI_RVAE3", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 6, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3_write },
    { .name =3D "TLBI_RVALE3", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 6, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_rvae3_write },
 };
=20
 static const ARMCPRegInfo tlbios_reginfo[] =3D {
     { .name =3D "TLBI_VMALLE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 0,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVMALLE1OS,
       .writefn =3D tlbi_aa64_vmalle1is_write },
     { .name =3D "TLBI_VAE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 1,
       .fgt =3D FGT_TLBIVAE1OS,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_ASIDE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 2,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIASIDE1OS,
       .writefn =3D tlbi_aa64_vmalle1is_write },
     { .name =3D "TLBI_VAAE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 3,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAAE1OS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_VALE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 5,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVALE1OS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_VAALE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 0, .crn =3D 8, .crm =3D 1, .opc2 =3D 7,
-      .access =3D PL1_W, .accessfn =3D access_ttlbos, .type =3D ARM_CP_NO_=
RAW,
+      .access =3D PL1_W, .accessfn =3D access_ttlbos,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .fgt =3D FGT_TLBIVAALE1OS,
       .writefn =3D tlbi_aa64_vae1is_write },
     { .name =3D "TLBI_ALLE2OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 0,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_alle2is_write },
     { .name =3D "TLBI_VAE2OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 1,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2is_write },
    { .name =3D "TLBI_ALLE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 4,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1is_write },
     { .name =3D "TLBI_VALE2OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 5,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_EL3_NO_EL2_UNDEF,
+      .access =3D PL2_W,
+      .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS | ARM_CP_EL3_NO_EL2_UN=
DEF,
       .writefn =3D tlbi_aa64_vae2is_write },
     { .name =3D "TLBI_VMALLS12E1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 1, .opc2 =3D 6,
-      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL2_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle1is_write },
     { .name =3D "TLBI_IPAS2E1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 0,
-      .access =3D PL2_W, .type =3D ARM_CP_NOP },
+      .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_ADD_TLBI_NXS },
     { .name =3D "TLBI_RIPAS2E1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 3,
-      .access =3D PL2_W, .type =3D ARM_CP_NOP },
+      .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_ADD_TLBI_NXS },
     { .name =3D "TLBI_IPAS2LE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 4,
-      .access =3D PL2_W, .type =3D ARM_CP_NOP },
+      .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_ADD_TLBI_NXS },
     { .name =3D "TLBI_RIPAS2LE1OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 4, .crn =3D 8, .crm =3D 4, .opc2 =3D 7,
-      .access =3D PL2_W, .type =3D ARM_CP_NOP },
+      .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_ADD_TLBI_NXS },
     { .name =3D "TLBI_ALLE3OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 0,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_alle3is_write },
     { .name =3D "TLBI_VAE3OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 1,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3is_write },
     { .name =3D "TLBI_VALE3OS", .state =3D ARM_CP_STATE_AA64,
       .opc0 =3D 1, .opc1 =3D 6, .crn =3D 8, .crm =3D 1, .opc2 =3D 5,
-      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW,
+      .access =3D PL3_W, .type =3D ARM_CP_NO_RAW | ARM_CP_ADD_TLBI_NXS,
       .writefn =3D tlbi_aa64_vae3is_write },
 };
=20
--=20
2.34.1
From nobody Sun May 11 15:32:11 2025
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=1733928387; cv=none;
	d=zohomail.com; s=zohoarc;
	b=JwOHJYUOzH3AjMg+35gTO8pi582POdIO0e/SrBW4Mk5T573pwRCmhxfzx6sJ4gdjsvCevYRFSKmrMsb/IN9NVgP+2zvUVI+RPm48gG5VLNU8suxBVgZphBdkz9dfpZozwxi7vCQVvlCXpMbQUU+F3+yWhTHMe4RXxr1UVrzp9ao=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928387;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=fSuUeuHUzdC2KZRVDcvXd5GipqOsmtMAsr2Y358lzSM=;
	b=AR3E5VdwuRHx1zicunUBer8dxq7D0i8SsDb79v7ZgISX1GZUH9+wvxrR058LBB74VQd6+8Ja0/w0dhzXN0OlHHIYIJ5qPF5B2QarJR+p0BASMRfMHuGGTSYzIbmLu1p2dDnv6QYGlq1bWDQ3pOHPZz5YHnRmG9A2BrpT97Km0ok=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928387347494.04765291377896;
 Wed, 11 Dec 2024 06:46:27 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxL-0006tS-Rf; Wed, 11 Dec 2024 09:44:51 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxJ-0006rc-LX
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:49 -0500
Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxI-0003rx-4T
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:49 -0500
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-434e3953b65so31548365e9.1
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:47 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928286; x=1734533086; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=fSuUeuHUzdC2KZRVDcvXd5GipqOsmtMAsr2Y358lzSM=;
 b=lEVfV+3pWsD6nlCUwDrGawexp989/56IuYNn0tbbUuRcfOt53hzztSTSGY2rt1XtLR
 1DnOAgU1mL0l/k73+McFcvvMvhlGNw9pUGSVhAjEfJsY3exsVuSJHzVwFk43Ow+1n9DM
 gEvky56OvTcHAh0FhlZ4Mvwb2y6Ff4Asp9fiCwp6SzjD3fA3e5rMbcsrE7ZdSBwJIL+d
 Gg4Kdc6hTJzDHxKbHXEOSf19ciW33P1OloLcaPlZXzfZyMk45r6QmaXk+yS/62+bXau4
 LBP4p5QhfJkrtjokX1KYplJGHDjCfHrbiFWRgW/afBVpMNJwsiCg+bPN3cRzlOyFJ2fi
 F+qA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928286; x=1734533086;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=fSuUeuHUzdC2KZRVDcvXd5GipqOsmtMAsr2Y358lzSM=;
 b=N95+MOvM9yEpQzTDWKubTo3X/cHFCpCIL0bhtxCYO+sTV9fdpJHzxFQxqjN3FHfmjG
 okrMOm7D9/L+KDTSMwb+r+E7qhZXy1rCQK/AyLB1qBYb//5l7ZLh33+eDiYlgL42RbBP
 uS5SLckns7IKxrm7XBjAL9x8h51aKuUjQPsu0Vs6yvVUQTlsrFLmN+wzRNo4b7Nh0x8x
 2fd1Ubgyr8l/mjD7DtOEavlDuJ3i6BEPCtkqDUVwtYkqNEKuMs+nhA4MAsPvWIiVzYBP
 ArPTwHWHVU5ymDUcMglGrbwqpLWi9H7VK7tbJCQPKRKltqgxHkeruQhpHOZ9qvn6WG5G
 2w/g==
X-Forwarded-Encrypted: i=1;
 AJvYcCWbnw7igTtjSvFXoQeYaw3fvVzQHE/Ck6fKAcDvfporRI2eW9LlDaNVSKueUpx4mvqJ+Qlps8F6Qq8K@nongnu.org
X-Gm-Message-State: AOJu0Yw0xhsFttvl4LihDsU5PdZbJ8JI28ThLmUupishHmsmyGYUpQf+
 R44OKNtLb/2J/WUN+Op49CUlJmpJ4sznLDzbAKfxdMg3PSHuBkP/mzOd6uTJfGZIBu6O7a4r5Vv
 k
X-Gm-Gg: ASbGncut9i2gSyiLZHibjWGW5LMopU5n2FjV2WRj+Y0HPPY9fQDAm5X5F4NANM6uB9E
 495t8EYGlHPyyhj6m+1Ot1/Ud9cVv28Bu6to0UlhDI/tJCk+KtTrHERYVwWs489WUg/U5lIPAoG
 6Xq/DcSQs020IhM0jo2HPKCOICiqUTlDQoCTpkymzL64D1FdZis0qc4D3lOX13BtcbOZHm4f741
 gjLy4qzTjbLLbKHQIGd15qt2n0MboUfdpG4ohm7QfLMJYnhHCpLgZo0QpeA
X-Google-Smtp-Source: 
 AGHT+IHpq0I473Nb4T7KVbJZ2ScG1jEHVeQwT2VUr4DbNX/a3tglfQaC8upbkyr4wbFCkTWWpMR9Rg==
X-Received: by 2002:a05:600c:468c:b0:434:9936:c823 with SMTP id
 5b1f17b1804b1-4361c387b63mr25218865e9.18.1733928286461;
 Wed, 11 Dec 2024 06:44:46 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 4/6] target/arm: Add decodetree entry for DSB nXS variant
Date: Wed, 11 Dec 2024 14:44:38 +0000
Message-Id: <20241211144440.2700268-5-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::32a;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928389107116600
Content-Type: text/plain; charset="utf-8"

From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

The DSB nXS variant is always both a reads and writes request type.
Ignore the domain field like we do in plain DSB and perform a full
system barrier operation.

The DSB nXS variant is part of FEAT_XS made mandatory from Armv8.7.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
[PMM: added missing "UNDEF unless feature present" check]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/arm/tcg/a64.decode      | 3 +++
 target/arm/tcg/translate-a64.c | 9 +++++++++
 2 files changed, 12 insertions(+)

diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
index 331a8e180c0..c4f516abc18 100644
--- a/target/arm/tcg/a64.decode
+++ b/target/arm/tcg/a64.decode
@@ -245,6 +245,9 @@ WFIT            1101 0101 0000 0011 0001 0000 001 rd:5
=20
 CLREX           1101 0101 0000 0011 0011 ---- 010 11111
 DSB_DMB         1101 0101 0000 0011 0011 domain:2 types:2 10- 11111
+# For the DSB nXS variant, types always equals MBReqTypes_All and we ignor=
e the
+# domain bits.
+DSB_nXS         1101 0101 0000 0011 0011 -- 10 001 11111
 ISB             1101 0101 0000 0011 0011 ---- 110 11111
 SB              1101 0101 0000 0011 0011 0000 111 11111
=20
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
index b2851ea5032..953386c0416 100644
--- a/target/arm/tcg/translate-a64.c
+++ b/target/arm/tcg/translate-a64.c
@@ -1959,6 +1959,15 @@ static bool trans_DSB_DMB(DisasContext *s, arg_DSB_D=
MB *a)
     return true;
 }
=20
+static bool trans_DSB_nXS(DisasContext *s, arg_DSB_nXS *a)
+{
+    if (!dc_isar_feature(aa64_xs, s)) {
+        return false;
+    }
+    tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL);
+    return true;
+}
+
 static bool trans_ISB(DisasContext *s, arg_ISB *a)
 {
     /*
--=20
2.34.1
From nobody Sun May 11 15:32:11 2025
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=1733928367; cv=none;
	d=zohomail.com; s=zohoarc;
	b=RoGgtDWuVhRaUMUCnSm1bDi3q8Bw2SpU2GwKONFtlSdFgX3Oe6JAmbWNTrfI9kZ5vLspvRfihz1xOi+5jcdh6+Fq+g4UvLJf6S/ePlUyDfocpRlGzGJLACNG2mVQQeOYK1l+9D0J214kay6fJQzTgb1MTBtpDPVfSSPI4rWUHmo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928367;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=M7va31x/VOYddYKA/oiv6RnIYgMyqPQV86yEQWd9Sec=;
	b=ZYsAzIK/vulsUkkdhOwfdSuse9JH/5uZQBXcmZXoAvMagq22yeJ4UFw0g9JS9SyN0jT4+n6o2DCZoKCwoWeHZnuSZS2Nl0nVKUGDWT1g9NRUE1ukkVTYM8CdFN4lSZ0kqCacE2Tas5vSmGAtjbuaFo43aT6jWtqaYvQyX/3WYeE=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928367515975.898735722971;
 Wed, 11 Dec 2024 06:46:07 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxN-0006u6-3j; Wed, 11 Dec 2024 09:44:53 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxK-0006sw-TR
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:50 -0500
Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxJ-0003sQ-7W
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:50 -0500
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-434a1fe2b43so68507185e9.2
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:48 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928287; x=1734533087; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=M7va31x/VOYddYKA/oiv6RnIYgMyqPQV86yEQWd9Sec=;
 b=oUyz1bKQ2mKbYTyCYyCPSZZL6NZnAG+y/WikCnY1wW9XS3En29v3cmUIVSiW+HkfZW
 PQSGQeIotrcmPDF8vOSbgdPR7Ge0LPDTgSY7ky4LdNrPhownDVDwtvsWLDepY+7emt5z
 XGqcKdmUuzmLLs7hBBaVbleOQCsXIJubcO4bvVle4Iwa8zJgAuxYXjhLAJOGMfoeDB1C
 2UHs4A4oMU6fHZa2d8JShMrspjLXKwe54Zl1IL5e6KONMxpo7/AGRNnkTzRn+wr0frvz
 Na6YHrTo5DWKJfvAkPcdqssn3Av10rSTtvAdnj2EUZo/MrC3Zs9QQGyi4g9ucKWl3AVs
 cavg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928287; x=1734533087;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=M7va31x/VOYddYKA/oiv6RnIYgMyqPQV86yEQWd9Sec=;
 b=OZQRdj6vcSp5IfmwKbbyeowDd3wlTur/sYuJSyk58weo6r1aEE2EFiThRmlt15ILEh
 Rnsr2gpr0ywZVMjFmbR8ZgudlJnLufd2t0LYcH8NF7Kb9m4iyp950mEkH+cIMD9Es5oq
 2EHfjE88mMDpbLSvqegU1BrV79HWiNtfHCTZpMy/iciF6LoU0urK8FAOJjsTHw0cT3dv
 azcWNtbmPHhBC3QSTnGcSgcpR6nsAXqwvPtkm+3NZFzdYSbfpppMKJJKFElvX1HXWAGv
 vDhFvakG1+YpUqqbFNRrbWvrYZ33EHTb17pT9ROqVzD336QyekWbL9Coc5Hf18jnBHIH
 sgOA==
X-Forwarded-Encrypted: i=1;
 AJvYcCVopPrmdfPluChu7z9V0DHW/17zRI8BZAIdsjfA0IvdM7qpo4q0sGzhVBog1g7iFbkJ6Un08XN7CLgD@nongnu.org
X-Gm-Message-State: AOJu0YwP+rW5Z+p4fHPbrcXGDPm9Vashp03vW61QOdftKGjBFQ2nwtya
 8hLQaxY4ZmIzq1l7HnexVLtPk25MId4VlugN8Wl948A21vieK2KtwecVST/Rh6o4e5bBxgkIEtJ
 2
X-Gm-Gg: ASbGncu4UExUoBCYFoKNF9Xtyo2/Efpc7Eo2ACMb8lKBZQ22PU3sPirMKJOCI3zSDwH
 69dmtH2P6LWRaXxGt/SYuoAYe8ZOL71w1e9KX9FYK9Yo1KBd83XEt/t7hJjKOTjWh/AHAMWdyOs
 B4s6n5ovmoiMMGDLm1zshmk8DhuO9i+sDbUx8ZYZHN4LlYuxI3UkniJ25jWGvi1zJOGYn0+cAIy
 XfqLF7nnxpXnDJRte0Ki1UKzbFeWQVytE3DvVdNRydZ8HWQlV6ZYPjtwKPG
X-Google-Smtp-Source: 
 AGHT+IEJAwcaRDBxa3IX33/WMbtD1mBXdWIlwVvVE5ZC88fjSMX7xesJKfj0QgNoVT7i2br2jXMjYQ==
X-Received: by 2002:a05:600c:4f11:b0:426:647b:1bfc with SMTP id
 5b1f17b1804b1-4361c4485dfmr28057045e9.30.1733928287469;
 Wed, 11 Dec 2024 06:44:47 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 5/6] target/arm: Enable FEAT_XS for the max cpu
Date: Wed, 11 Dec 2024 14:44:39 +0000
Message-Id: <20241211144440.2700268-6-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::335;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928369096116600
Content-Type: text/plain; charset="utf-8"

From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

Add FEAT_XS feature report value in max cpu's ID_AA64ISAR1 sys register.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
[PMM: Add entry for FEAT_XS to documentation]
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 docs/system/arm/emulation.rst | 1 +
 target/arm/tcg/cpu64.c        | 1 +
 2 files changed, 2 insertions(+)

diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst
index 38534dcdd32..60176d08597 100644
--- a/docs/system/arm/emulation.rst
+++ b/docs/system/arm/emulation.rst
@@ -154,6 +154,7 @@ the following architecture extensions:
 - FEAT_VMID16 (16-bit VMID)
 - FEAT_WFxT (WFE and WFI instructions with timeout)
 - FEAT_XNX (Translation table stage 2 Unprivileged Execute-never)
+- FEAT_XS (XS attribute)
=20
 For information on the specifics of these extensions, please refer
 to the `Arm Architecture Reference Manual for A-profile architecture
diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c
index 2963d7510f3..449cec5a626 100644
--- a/target/arm/tcg/cpu64.c
+++ b/target/arm/tcg/cpu64.c
@@ -1163,6 +1163,7 @@ void aarch64_max_tcg_initfn(Object *obj)
     t =3D FIELD_DP64(t, ID_AA64ISAR1, BF16, 2);     /* FEAT_BF16, FEAT_EBF=
16 */
     t =3D FIELD_DP64(t, ID_AA64ISAR1, DGH, 1);      /* FEAT_DGH */
     t =3D FIELD_DP64(t, ID_AA64ISAR1, I8MM, 1);     /* FEAT_I8MM */
+    t =3D FIELD_DP64(t, ID_AA64ISAR1, XS, 1);       /* FEAT_XS */
     cpu->isar.id_aa64isar1 =3D t;
=20
     t =3D cpu->isar.id_aa64isar2;
--=20
2.34.1
From nobody Sun May 11 15:32:11 2025
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=1733928411; cv=none;
	d=zohomail.com; s=zohoarc;
	b=Un2cESmmxZWWjlpGkZdTxTKTETMU4yJuIEk7iKTyTrgbH50CpWBIZ1jf6JXCW3wCNcOU58cFFwKGl8X8ke2GVl+cbUhEX7IdGCAjeRSQqJpv1ABcV2fzVYVNcQsEmQhQicgrX2lb3/VOMFjZLGzjoTh2vgDLTSNWp0yaYWCwEd0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1733928411;
 h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc;
	bh=OtTkwTKI52bcxg/lJzvBSIA6PD09skuET2+JQoRaIc4=;
	b=krnvQ2IdvbgGqjvGi5oJRgLuuUQWBv8zHkZHB4VVX0VW5DMDXo5gZzxQ22ng6reKtht1gd0dwHG9Kmocs9OskxtDkMMwuh1F2akS+8u7r8CTgLdfKiU5drJ9oIOa411Z0s+YX/v5uo3+89IpgEDwECStLxCy78A6uk+K2sj1r8w=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1733928411204246.81819495142918;
 Wed, 11 Dec 2024 06:46:51 -0800 (PST)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1tLNxN-0006uB-OB; Wed, 11 Dec 2024 09:44:54 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxL-0006tT-KB
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:51 -0500
Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1tLNxK-0003sc-3h
 for qemu-devel@nongnu.org; Wed, 11 Dec 2024 09:44:51 -0500
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-385e87b25f0so483708f8f.0
 for <qemu-devel@nongnu.org>; Wed, 11 Dec 2024 06:44:49 -0800 (PST)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4361e54ef20sm19477685e9.5.2024.12.11.06.44.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 11 Dec 2024 06:44:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1733928288; x=1734533088; darn=nongnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=OtTkwTKI52bcxg/lJzvBSIA6PD09skuET2+JQoRaIc4=;
 b=eR+VPz2y0lKC1kb6T2eM9G8BPt0evEq/KC2FMp2WJmoFV3Ck77b3UefbYOqdidglfh
 OGp1+1zteQ5dYhcGqZX5xJObM6VfEGc7plhqd8yYIq/zoLld060t3AgO2JKfetpCDReU
 N4cXvwLEnM2kXaRo3JN+7WYOHs917xGeyOCZhN1akWEx4apzwU4sV4Xi1ynRvj4R8UUU
 56g7DzzhJ+GLPFDPy4O/vTCwjWJq3/u/XkjApdp/tY3Y/r0VmBmvaOzZSAgaaV5fYW1S
 9cqRD76DKyCZ/WLj2Kvi+tauNikakYGsFqSIuEZy81dAWSRNn/LxGJnh3T4iG0X71yRZ
 69LQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1733928288; x=1734533088;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=OtTkwTKI52bcxg/lJzvBSIA6PD09skuET2+JQoRaIc4=;
 b=Y8C2kS7aj99rykQ/qpRblg3Ac9kar5Txzdv1JSmUV5MzhVcZ+RKglYhesPmOZ9BQHP
 Sbkc2ZOQ4OXPqH/47lrE3ZVrf6vVnVb9869c5t4PMHTqTvjXCTYFfzRuqFdTfIl+8YL4
 JqKyAofYfskdmufqypdG/YXAKYgEmE4Li1UYeHkpV99nC84ywgyOelhj40jiXVBT/E11
 yA0dZErAwGhyUhpII9A5ljcP/PjHDkU04wjndzldmVPGaKQ62etRQqgCqtIHyxnSsvOK
 kEyPuUKJ13AcHePx+AcK+sPLfBZnZD6s6yuhs/i8duDaJeaxouAPxpauzA6MXswZsZWo
 zwbQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVIT0S18QPNvqM5BCRlrnSm8LJ8qkLiAJEFgAKLF1TWlJJG0iBtTKzQ8Jsz+kp0oOqVjE46ZNBdo7C4@nongnu.org
X-Gm-Message-State: AOJu0YzEQ0p5Lh+H1ak9XrQdSYzt//+gAPPDgSBG5AybcTxDAOkTLd/y
 6IMGIsJHIog/4UDxVqMHrA4Bm6exRppg50gwH3QLQt9CKvLuGgz8fPPkeVP5BYI=
X-Gm-Gg: ASbGncs3/VAJ+2fBjvibPaDGLonHjiU5EglsFpe4ccVP1rZYV4ReoLlyxt4tzD+BPGF
 zb7N+1oi4pcAbHSjWiydHgSJyqg0am4/+eoqjVcl2nA8Y644BYf6bdMpZrvbvReEpSdozmXKpof
 2elVBTL/RgTNf5/VnuggnX0YPmGf+6SMfUKn6GXZiMLNN3JjD7mVZYV+/XTpdMeXR1DhVZyymiG
 OfnIHIltLt91J8HTG48ATU2kV5d9AU/EZn/qiq3qIwOI7Ldc2VU2UtDDHLa
X-Google-Smtp-Source: 
 AGHT+IEc3+vF597N7ere9YiGlkmyldx4o90YrOiY4AxYeJr789FIgACB1I4kzwKdrHzsrTWV0IIKOg==
X-Received: by 2002:a05:6000:186b:b0:386:3672:73e7 with SMTP id
 ffacd0b85a97d-3864de9e81fmr2504639f8f.9.1733928288468;
 Wed, 11 Dec 2024 06:44:48 -0800 (PST)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: [PATCH v2 6/6] tests/tcg/aarch64: add system test for FEAT_XS
Date: Wed, 11 Dec 2024 14:44:40 +0000
Message-Id: <20241211144440.2700268-7-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241211144440.2700268-1-peter.maydell@linaro.org>
References: <20241211144440.2700268-1-peter.maydell@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=2a00:1450:4864:20::42e;
 envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42e.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1733928413191116600
Content-Type: text/plain; charset="utf-8"

From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

Add system test to make sure FEAT_XS is enabled for max cpu emulation
and that QEMU doesn't crash when encountering an NXS instruction
variant.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
[PMM: In ISAR field test, mask with 0xf, not 0xff; use < rather
 than an equality test to follow the standard ID register field
 check guidelines]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 tests/tcg/aarch64/system/feat-xs.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 tests/tcg/aarch64/system/feat-xs.c

diff --git a/tests/tcg/aarch64/system/feat-xs.c b/tests/tcg/aarch64/system/=
feat-xs.c
new file mode 100644
index 00000000000..f310fc837e0
--- /dev/null
+++ b/tests/tcg/aarch64/system/feat-xs.c
@@ -0,0 +1,27 @@
+/*
+ * FEAT_XS Test
+ *
+ * Copyright (c) 2024 Linaro Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <minilib.h>
+#include <stdint.h>
+
+int main(void)
+{
+    uint64_t isar1;
+
+    asm volatile ("mrs %0, id_aa64isar1_el1" : "=3Dr"(isar1));
+    if (((isar1 >> 56) & 0xf) < 1) {
+        ml_printf("FEAT_XS not supported by CPU");
+        return 1;
+    }
+    /* VMALLE1NXS */
+    asm volatile (".inst 0xd508971f");
+    /* VMALLE1OSNXS */
+    asm volatile (".inst 0xd508911f");
+
+    return 0;
+}
--=20
2.34.1