diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2025-05-04 11:14:01 -0700 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2025-05-28 08:08:48 +0100 |
commit | 90f80e4b0fedfc78163c1c112bb74ccbfcae2365 (patch) | |
tree | 75d51a5ae26787db5006e9a6ef07feb69dc55927 | |
parent | c2a0439f1ee99cb29883311f75ba08d9cca759c9 (diff) | |
download | qemu-90f80e4b0fedfc78163c1c112bb74ccbfcae2365.zip qemu-90f80e4b0fedfc78163c1c112bb74ccbfcae2365.tar.gz qemu-90f80e4b0fedfc78163c1c112bb74ccbfcae2365.tar.bz2 |
target/sparc: Fill in TCGCPUOps.pointer_wrap
Check address masking state for sparc64.
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r-- | target/sparc/cpu.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index 2a3e408..ed7701b 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -1002,6 +1002,18 @@ static const struct SysemuCPUOps sparc_sysemu_ops = { #ifdef CONFIG_TCG #include "accel/tcg/cpu-ops.h" +#ifndef CONFIG_USER_ONLY +static vaddr sparc_pointer_wrap(CPUState *cs, int mmu_idx, + vaddr result, vaddr base) +{ +#ifdef TARGET_SPARC64 + return cpu_env(cs)->pstate & PS_AM ? (uint32_t)result : result; +#else + return (uint32_t)result; +#endif +} +#endif + static const TCGCPUOps sparc_tcg_ops = { /* * From Oracle SPARC Architecture 2015: @@ -1036,6 +1048,7 @@ static const TCGCPUOps sparc_tcg_ops = { #ifndef CONFIG_USER_ONLY .tlb_fill = sparc_cpu_tlb_fill, + .pointer_wrap = sparc_pointer_wrap, .cpu_exec_interrupt = sparc_cpu_exec_interrupt, .cpu_exec_halt = sparc_cpu_has_work, .cpu_exec_reset = cpu_reset, |