aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2025-05-04 09:46:28 -0700
committerRichard Henderson <richard.henderson@linaro.org>2025-05-28 08:08:48 +0100
commit7174cd2eec67d9b7bf969cdc87e656b4c4c93465 (patch)
tree9fbd00cb93a733990713257d185dc553a5104a2a
parentd21144a48c1a9d1998c594d976d5e906276eca4c (diff)
downloadqemu-7174cd2eec67d9b7bf969cdc87e656b4c4c93465.zip
qemu-7174cd2eec67d9b7bf969cdc87e656b4c4c93465.tar.gz
qemu-7174cd2eec67d9b7bf969cdc87e656b4c4c93465.tar.bz2
target/i386: Fill in TCGCPUOps.pointer_wrap
Check 32 vs 64-bit state. Cc: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--target/i386/tcg/tcg-cpu.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index 179dfdf..6f5dc06 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -149,6 +149,12 @@ static void x86_cpu_exec_reset(CPUState *cs)
do_cpu_init(env_archcpu(env));
cs->exception_index = EXCP_HALTED;
}
+
+static vaddr x86_pointer_wrap(CPUState *cs, int mmu_idx,
+ vaddr result, vaddr base)
+{
+ return cpu_env(cs)->hflags & HF_CS64_MASK ? result : (uint32_t)result;
+}
#endif
const TCGCPUOps x86_tcg_ops = {
@@ -172,6 +178,7 @@ const TCGCPUOps x86_tcg_ops = {
.record_sigbus = x86_cpu_record_sigbus,
#else
.tlb_fill = x86_cpu_tlb_fill,
+ .pointer_wrap = x86_pointer_wrap,
.do_interrupt = x86_cpu_do_interrupt,
.cpu_exec_halt = x86_cpu_exec_halt,
.cpu_exec_interrupt = x86_cpu_exec_interrupt,