diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2025-10-08 14:55:30 -0700 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2025-10-10 10:42:12 +0100 |
| commit | 8a0dda3e6b2394d0e96c16b80f44db97f9cc3e6e (patch) | |
| tree | 070178812261fc3168643df3d51bb06610ca5fd5 | |
| parent | 4c14265b8092a250edaef62891ee2d55fcfac92d (diff) | |
| download | qemu-8a0dda3e6b2394d0e96c16b80f44db97f9cc3e6e.zip qemu-8a0dda3e6b2394d0e96c16b80f44db97f9cc3e6e.tar.gz qemu-8a0dda3e6b2394d0e96c16b80f44db97f9cc3e6e.tar.bz2 | |
target/arm: Implement gcs bit for data abort
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20251008215613.300150-31-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
| -rw-r--r-- | target/arm/tcg/tlb_helper.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/target/arm/tcg/tlb_helper.c b/target/arm/tcg/tlb_helper.c index ae2acd6..f1983a5 100644 --- a/target/arm/tcg/tlb_helper.c +++ b/target/arm/tcg/tlb_helper.c @@ -28,7 +28,7 @@ static inline uint64_t merge_syn_data_abort(uint32_t template_syn, ARMMMUFaultInfo *fi, unsigned int target_el, bool same_el, bool is_write, - int fsc) + int fsc, bool gcs) { uint64_t syn; @@ -78,6 +78,7 @@ static inline uint64_t merge_syn_data_abort(uint32_t template_syn, /* Form ISS2 at the top of the syndrome. */ syn |= (uint64_t)fi->dirtybit << 37; + syn |= (uint64_t)gcs << 40; return syn; } @@ -252,9 +253,10 @@ void arm_deliver_fault(ARMCPU *cpu, vaddr addr, syn = syn_insn_abort(same_el, fi->ea, fi->s1ptw, fsc); exc = EXCP_PREFETCH_ABORT; } else { + bool gcs = regime_is_gcs(core_to_arm_mmu_idx(env, mmu_idx)); syn = merge_syn_data_abort(env->exception.syndrome, fi, target_el, same_el, access_type == MMU_DATA_STORE, - fsc); + fsc, gcs); if (access_type == MMU_DATA_STORE && arm_feature(env, ARM_FEATURE_V6)) { fsr |= (1 << 11); |
