We ought to have been recording the virtual address for reporting to the guest trap handler. Mirror the SFSR FIXME from the sparc64 version of get_physical_address_data.
Cc: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- target/sparc/ldst_helper.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/sparc/ldst_helper.c b/target/sparc/ldst_helper.c index 974afea041..7367b48c8b 100644 --- a/target/sparc/ldst_helper.c +++ b/target/sparc/ldst_helper.c @@ -1963,6 +1963,14 @@ void QEMU_NORETURN sparc_cpu_do_unaligned_access(CPUState *cs, vaddr addr, SPARCCPU *cpu = SPARC_CPU(cs); CPUSPARCState *env = &cpu->env; +#ifdef TARGET_SPARC64 + /* FIXME: ASI field in SFSR must be set */ + env->dmmu.sfsr = SFSR_VALID_BIT; /* Fault status register */ + env->dmmu.sfar = addr; /* Fault address register */ +#else + env->mmuregs[4] = addr; +#endif + cpu_raise_exception_ra(env, TT_UNALIGNED, retaddr); } #endif -- 2.25.1