On 5/5/25 07:41, Philippe Mathieu-Daudé wrote:
On 4/5/25 22:57, Richard Henderson wrote:
Use the existing wrap_address function.
Cc: qemu-s3...@nongnu.org
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
target/s390x/cpu.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 9c1158ebcc..f05ce317da 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -347,6 +347,14 @@ static TCGTBCPUState s390x_get_tb_cpu_state(CPUState *cs)
};
}
+#ifndef CONFIG_USER_ONLY
+static vaddr s390_pointer_wrap(CPUState *cs, int mmu_idx,
+ vaddr result, vaddr base)
+{
+ return wrap_address(cpu_env(cs), result);
+}
+#endif
+
static const TCGCPUOps s390_tcg_ops = {
.mttcg_supported = true,
.precise_smc = true,
@@ -367,6 +375,7 @@ static const TCGCPUOps s390_tcg_ops = {
.record_sigbus = s390_cpu_record_sigbus,
#else
.tlb_fill = s390_cpu_tlb_fill,
+ .pointer_wrap = s390_pointer_wrap,
As future cleanup, we might now remove the wrap_address() calls
in target/s390x/tcg/crypto_helper.c, and target/s390x/tcg/vec_helper.c,
is that correct?
Also some uses in target/s390x/tcg/mem_helper.c.
No, not correct.
The new pointer_wrap hook is only used for unaligned accesses that cross page boundaries.
It does not apply to a sequence of individual accesses like we have in the s390x helpers.
r~