79c4324644
Change-Id: I2d302dda68298877c65c99147f5bf22186a59aac
52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
From dd5bf5817259ea414f40b25f4aef3864eddb9706 Mon Sep 17 00:00:00 2001
|
|
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
|
Date: Mon, 27 Nov 2023 03:24:57 +0000
|
|
Subject: [PATCH] target/arm: Don't set syndrome ISS for loads and stores with
|
|
writeback mainline inclusion commit 53ae2fdef1f5661cbaa2ea571c517f98e6041cb8
|
|
category: bugfix
|
|
|
|
---------------------------------------------------------------
|
|
|
|
The architecture requires that for faults on loads and stores which
|
|
do writeback, the syndrome information does not have the ISS
|
|
instruction syndrome information (i.e. ISV is 0). We got this wrong
|
|
for the load and store instructions covered by disas_ldst_reg_imm9().
|
|
Calculate iss_valid correctly so that if the insn is a writeback one
|
|
it is false.
|
|
|
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1057
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
|
Message-id: 20220715123323.1550983-1-peter.maydell@linaro.org
|
|
|
|
Signed-off-by: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
|
---
|
|
target/arm/translate-a64.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
|
|
index cec672f229..549a671bea 100644
|
|
--- a/target/arm/translate-a64.c
|
|
+++ b/target/arm/translate-a64.c
|
|
@@ -3039,7 +3039,7 @@ static void disas_ldst_reg_imm9(DisasContext *s, uint32_t insn,
|
|
bool is_store = false;
|
|
bool is_extended = false;
|
|
bool is_unpriv = (idx == 2);
|
|
- bool iss_valid = !is_vector;
|
|
+ bool iss_valid;
|
|
bool post_index;
|
|
bool writeback;
|
|
int memidx;
|
|
@@ -3092,6 +3092,8 @@ static void disas_ldst_reg_imm9(DisasContext *s, uint32_t insn,
|
|
g_assert_not_reached();
|
|
}
|
|
|
|
+ iss_valid = !is_vector && !writeback;
|
|
+
|
|
if (rn == 31) {
|
|
gen_check_sp_alignment(s);
|
|
}
|
|
--
|
|
2.27.0
|
|
|