On Thu, 29 Jul 2021 at 01:57, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > linux-user/hppa/cpu_loop.c | 2 +- > target/hppa/cpu.c | 8 +++++--- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c > index 82d8183821..5ce30fec8b 100644 > --- a/linux-user/hppa/cpu_loop.c > +++ b/linux-user/hppa/cpu_loop.c > @@ -161,7 +161,7 @@ void cpu_loop(CPUHPPAState *env) > case EXCP_UNALIGN: > info.si_signo = TARGET_SIGBUS; > info.si_errno = 0; > - info.si_code = 0; > + info.si_code = TARGET_BUS_ADRALN; > info._sifields._sigfault._addr = env->cr[CR_IOR]; > queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > break; > diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c > index 2eace4ee12..55c0d81046 100644 > --- a/target/hppa/cpu.c > +++ b/target/hppa/cpu.c > @@ -71,7 +71,6 @@ static void hppa_cpu_disas_set_info(CPUState *cs, > disassemble_info *info) > info->print_insn = print_insn_hppa; > } > > -#ifndef CONFIG_USER_ONLY > static void hppa_cpu_do_unaligned_access(CPUState *cs, vaddr addr, > MMUAccessType access_type, > int mmu_idx, uintptr_t retaddr) > @@ -80,15 +79,18 @@ static void hppa_cpu_do_unaligned_access(CPUState *cs, > vaddr addr, > CPUHPPAState *env = &cpu->env; > > cs->exception_index = EXCP_UNALIGN; > +#ifdef CONFIG_USER_ONLY > + env->cr[CR_IOR] = addr;
Do we not need the top 32 bits of the address, which the softmmu version is recording in CR_ISR ? > +#else > if (env->psw & PSW_Q) { > /* ??? Needs tweaking for hppa64. */ > env->cr[CR_IOR] = addr; > env->cr[CR_ISR] = addr >> 32; > } > +#endif > > cpu_loop_exit_restore(cs, retaddr); > } > -#endif /* CONFIG_USER_ONLY */ -- PMM