From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org
Subject: [PATCH 3/7] target/arm: Add AIE to ARMVAParameters
Date: Fri, 10 Oct 2025 13:19:13 -0700 [thread overview]
Message-ID: <20251010201917.685716-4-richard.henderson@linaro.org> (raw)
In-Reply-To: <20251010201917.685716-1-richard.henderson@linaro.org>
Allow the bit to be set in TCR2;
extract the bit in aa64_va_parameters.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/internals.h | 1 +
target/arm/helper.c | 30 +++++++++++++++++++++---------
2 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/target/arm/internals.h b/target/arm/internals.h
index f539bbe58e..a65386aaed 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -1391,6 +1391,7 @@ typedef struct ARMVAParameters {
bool hd : 1;
ARMGranuleSize gran : 2;
bool pie : 1;
+ bool aie : 1;
} ARMVAParameters;
/**
diff --git a/target/arm/helper.c b/target/arm/helper.c
index e4d1651440..8c0b8889db 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -6098,6 +6098,9 @@ static void tcr2_el1_write(CPUARMState *env, const ARMCPRegInfo *ri,
if (cpu_isar_feature(aa64_s1pie, cpu)) {
valid_mask |= TCR2_PIE;
}
+ if (cpu_isar_feature(aa64_aie, cpu)) {
+ valid_mask |= TCR2_AIE;
+ }
value &= valid_mask;
raw_write(env, ri, value);
}
@@ -6111,7 +6114,10 @@ static void tcr2_el2_write(CPUARMState *env, const ARMCPRegInfo *ri,
if (cpu_isar_feature(aa64_s1pie, cpu)) {
valid_mask |= TCR2_PIE;
}
- if (cpu_isar_feature(aa64_mec, env_archcpu(env))) {
+ if (cpu_isar_feature(aa64_aie, cpu)) {
+ valid_mask |= TCR2_AIE;
+ }
+ if (cpu_isar_feature(aa64_mec, cpu)) {
valid_mask |= TCR2_AMEC0 | TCR2_AMEC1;
}
value &= valid_mask;
@@ -9666,6 +9672,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
{
uint64_t tcr = regime_tcr(env, mmu_idx);
bool epd, hpd, tsz_oob, ds, ha, hd, pie = false;
+ bool aie = false;
int select, tsz, tbi, max_tsz, min_tsz, ps, sh;
ARMGranuleSize gran;
ARMCPU *cpu = env_archcpu(env);
@@ -9688,10 +9695,12 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
if (r_el == 3) {
pie = (extract64(tcr, 35, 1)
&& cpu_isar_feature(aa64_s1pie, cpu));
- } else {
- pie = ((env->cp15.tcr2_el[2] & TCR2_PIE)
- && (!arm_feature(env, ARM_FEATURE_EL3)
- || (env->cp15.scr_el3 & SCR_TCR2EN)));
+ aie = (extract64(tcr, 37, 1)
+ && cpu_isar_feature(aa64_aie, cpu));
+ } else if (!arm_feature(env, ARM_FEATURE_EL3)
+ || (env->cp15.scr_el3 & SCR_TCR2EN)) {
+ pie = env->cp15.tcr2_el[2] & TCR2_PIE;
+ aie = env->cp15.tcr2_el[2] & TCR2_AIE;
}
}
epd = false;
@@ -9733,10 +9742,12 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
epd = true;
}
- pie = ((env->cp15.tcr2_el[r_el] & TCR2_PIE)
- && (!arm_feature(env, ARM_FEATURE_EL3)
- || (env->cp15.scr_el3 & SCR_TCR2EN))
- && (r_el == 2 || (arm_hcrx_el2_eff(env) & HCRX_TCR2EN)));
+ if ((!arm_feature(env, ARM_FEATURE_EL3)
+ || (env->cp15.scr_el3 & SCR_TCR2EN))
+ && (r_el == 2 || (arm_hcrx_el2_eff(env) & HCRX_TCR2EN))) {
+ pie = env->cp15.tcr2_el[r_el] & TCR2_PIE;
+ aie = env->cp15.tcr2_el[r_el] & TCR2_AIE;
+ }
}
hpd |= pie;
@@ -9818,6 +9829,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
.hd = ha && hd,
.gran = gran,
.pie = pie,
+ .aie = aie,
};
}
--
2.43.0
next prev parent reply other threads:[~2025-10-10 20:22 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-10 20:19 [PATCH 0/7] target/arm: Implement FEAT_AIE Richard Henderson
2025-10-10 20:19 ` [PATCH 1/7] target/arm: Add isar feature test for FEAT_AIE Richard Henderson
2025-10-13 13:35 ` Peter Maydell
2025-10-10 20:19 ` [PATCH 2/7] target/arm: Implement MAIR2_ELx and AMAIR2_ELx Richard Henderson
2025-10-13 13:55 ` Peter Maydell
2025-10-10 20:19 ` Richard Henderson [this message]
2025-10-13 14:05 ` [PATCH 3/7] target/arm: Add AIE to ARMVAParameters Peter Maydell
2025-10-10 20:19 ` [PATCH 4/7] target/arm: Drop trivial assert vs attrindx Richard Henderson
2025-10-13 13:44 ` Peter Maydell
2025-10-10 20:19 ` [PATCH 5/7] target/arm: Use el local indexing mair_el Richard Henderson
2025-10-13 13:36 ` Peter Maydell
2025-10-10 20:19 ` [PATCH 6/7] target/arm: Honor param.aie in get_phys_addr_lpae Richard Henderson
2025-10-13 13:50 ` Peter Maydell
2025-10-10 20:19 ` [PATCH 7/7] target/arm: Enable FEAT_AIE for -cpu max Richard Henderson
2025-10-13 13:44 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251010201917.685716-4-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).