]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/ppc: Fill in TCGCPUOps.pointer_wrap
authorRichard Henderson <richard.henderson@linaro.org>
Sun, 4 May 2025 17:20:02 +0000 (10:20 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Wed, 28 May 2025 07:08:48 +0000 (08:08 +0100)
Check 32 vs 64-bit state.

Cc: qemu-ppc@nongnu.org
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
target/ppc/cpu_init.c

index 9642812a71b2d2a2f14a318546fe0d3b8c0cc180..a0e77f2673e56be80414fb33e7347af7c47a0d24 100644 (file)
@@ -7386,6 +7386,12 @@ static void ppc_cpu_exec_exit(CPUState *cs)
         cpu->vhyp_class->cpu_exec_exit(cpu->vhyp, cpu);
     }
 }
+
+static vaddr ppc_pointer_wrap(CPUState *cs, int mmu_idx,
+                              vaddr result, vaddr base)
+{
+    return (cpu_env(cs)->hflags >> HFLAGS_64) & 1 ? result : (uint32_t)result;
+}
 #endif /* CONFIG_TCG */
 
 #endif /* !CONFIG_USER_ONLY */
@@ -7490,6 +7496,7 @@ static const TCGCPUOps ppc_tcg_ops = {
   .record_sigsegv = ppc_cpu_record_sigsegv,
 #else
   .tlb_fill = ppc_cpu_tlb_fill,
+  .pointer_wrap = ppc_pointer_wrap,
   .cpu_exec_interrupt = ppc_cpu_exec_interrupt,
   .cpu_exec_halt = ppc_cpu_has_work,
   .cpu_exec_reset = cpu_reset,