[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 05/55] target/hppa: Implement do_unaligned_access for user
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 05/55] target/hppa: Implement do_unaligned_access for user-only |
Date: |
Wed, 18 Aug 2021 10:46:56 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
+Helge
On 8/3/21 6:13 AM, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/hppa/cpu_loop.c | 2 +-
> target/hppa/cpu.c | 9 ++++++---
> 2 files changed, 7 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 c2c56e7635..91f149ed77 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 QEMU_NORETURN
> hppa_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
> MMUAccessType access_type, int mmu_idx,
> @@ -81,15 +80,19 @@ hppa_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
> CPUHPPAState *env = &cpu->env;
>
> cs->exception_index = EXCP_UNALIGN;
> +#ifdef CONFIG_USER_ONLY
> + /* Recall that user-only always uses address space 0. */
> + env->cr[CR_IOR] = addr;
> +#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 */
>
> static void hppa_cpu_realizefn(DeviceState *dev, Error **errp)
> {
> @@ -147,10 +150,10 @@ static const struct TCGCPUOps hppa_tcg_ops = {
> .synchronize_from_tb = hppa_cpu_synchronize_from_tb,
> .cpu_exec_interrupt = hppa_cpu_exec_interrupt,
> .tlb_fill = hppa_cpu_tlb_fill,
> + .do_unaligned_access = hppa_cpu_do_unaligned_access,
>
> #ifndef CONFIG_USER_ONLY
> .do_interrupt = hppa_cpu_do_interrupt,
> - .do_unaligned_access = hppa_cpu_do_unaligned_access,
> #endif /* !CONFIG_USER_ONLY */
> };
>
>
- Re: [PATCH v2 01/55] hw/core: Make do_unaligned_access noreturn, (continued)
- [PATCH v2 02/55] hw/core: Make do_unaligned_access available to user-only, Richard Henderson, 2021/08/03
- [PATCH v2 03/55] target/alpha: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 04/55] target/arm: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 05/55] target/hppa: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- Re: [PATCH v2 05/55] target/hppa: Implement do_unaligned_access for user-only,
Philippe Mathieu-Daudé <=
- [PATCH v2 06/55] target/microblaze: Do not set MO_ALIGN for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 07/55] target/mips: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 08/55] target/ppc: Move SPR_DSISR setting to powerpc_excp, Richard Henderson, 2021/08/03
- [PATCH v2 10/55] target/ppc: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 11/55] target/riscv: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03
- [PATCH v2 09/55] target/ppc: Set fault address in ppc_cpu_do_unaligned_access, Richard Henderson, 2021/08/03
- [PATCH v2 13/55] target/sh4: Set fault address in superh_cpu_do_unaligned_access, Richard Henderson, 2021/08/03
- [PATCH v2 14/55] target/sh4: Implement do_unaligned_access for user-only, Richard Henderson, 2021/08/03