[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 23/28] target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MOD
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 23/28] target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0, 1}_SUFFIX |
Date: |
Fri, 20 Dec 2019 19:34:16 +0000 |
User-agent: |
mu4e 1.3.5; emacs 27.0.50 |
Richard Henderson <address@hidden> writes:
> The generated *_user functions are unused. The *_kernel functions
> have a couple of users in op_helper.c; use *_mmuidx_ra instead,
> with MMU_KERNEL_IDX.
>
> Reviewed-by: Laurent Vivier <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> v2: Use *_mmuidx_ra directly, without intermediate macros.
> ---
> target/m68k/cpu.h | 2 --
> target/m68k/op_helper.c | 77 +++++++++++++++++++++++++----------------
> 2 files changed, 47 insertions(+), 32 deletions(-)
>
> diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h
> index 20de3c379a..89af14e899 100644
> --- a/target/m68k/cpu.h
> +++ b/target/m68k/cpu.h
> @@ -516,8 +516,6 @@ enum {
> #define cpu_list m68k_cpu_list
>
> /* MMU modes definitions */
> -#define MMU_MODE0_SUFFIX _kernel
> -#define MMU_MODE1_SUFFIX _user
> #define MMU_KERNEL_IDX 0
> #define MMU_USER_IDX 1
> static inline int cpu_mmu_index (CPUM68KState *env, bool ifetch)
> diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
> index bc4f845e3f..202498deb5 100644
> --- a/target/m68k/op_helper.c
> +++ b/target/m68k/op_helper.c
> @@ -42,8 +42,8 @@ static void cf_rte(CPUM68KState *env)
> uint32_t fmt;
>
> sp = env->aregs[7];
> - fmt = cpu_ldl_kernel(env, sp);
> - env->pc = cpu_ldl_kernel(env, sp + 4);
> + fmt = cpu_ldl_mmuidx_ra(env, sp, MMU_KERNEL_IDX, 0);
> + env->pc = cpu_ldl_mmuidx_ra(env, sp + 4, MMU_KERNEL_IDX, 0);
> sp |= (fmt >> 28) & 3;
> env->aregs[7] = sp + 8;
>
> @@ -58,13 +58,13 @@ static void m68k_rte(CPUM68KState *env)
>
> sp = env->aregs[7];
> throwaway:
> - sr = cpu_lduw_kernel(env, sp);
> + sr = cpu_lduw_mmuidx_ra(env, sp, MMU_KERNEL_IDX, 0);
> sp += 2;
> - env->pc = cpu_ldl_kernel(env, sp);
> + env->pc = cpu_ldl_mmuidx_ra(env, sp, MMU_KERNEL_IDX, 0);
> sp += 4;
> if (m68k_feature(env, M68K_FEATURE_QUAD_MULDIV)) {
> /* all except 68000 */
> - fmt = cpu_lduw_kernel(env, sp);
> + fmt = cpu_lduw_mmuidx_ra(env, sp, MMU_KERNEL_IDX, 0);
> sp += 2;
> switch (fmt >> 12) {
> case 0:
> @@ -260,12 +260,12 @@ static void cf_interrupt_all(CPUM68KState *env, int
> is_hw)
> /* ??? This could cause MMU faults. */
> sp &= ~3;
> sp -= 4;
> - cpu_stl_kernel(env, sp, retaddr);
> + cpu_stl_mmuidx_ra(env, sp, retaddr, MMU_KERNEL_IDX, 0);
> sp -= 4;
> - cpu_stl_kernel(env, sp, fmt);
> + cpu_stl_mmuidx_ra(env, sp, fmt, MMU_KERNEL_IDX, 0);
> env->aregs[7] = sp;
> /* Jump to vector. */
> - env->pc = cpu_ldl_kernel(env, env->vbr + vector);
> + env->pc = cpu_ldl_mmuidx_ra(env, env->vbr + vector, MMU_KERNEL_IDX, 0);
> }
>
> static inline void do_stack_frame(CPUM68KState *env, uint32_t *sp,
> @@ -278,23 +278,24 @@ static inline void do_stack_frame(CPUM68KState *env,
> uint32_t *sp,
> switch (format) {
> case 4:
> *sp -= 4;
> - cpu_stl_kernel(env, *sp, env->pc);
> + cpu_stl_mmuidx_ra(env, *sp, env->pc, MMU_KERNEL_IDX, 0);
> *sp -= 4;
> - cpu_stl_kernel(env, *sp, addr);
> + cpu_stl_mmuidx_ra(env, *sp, addr, MMU_KERNEL_IDX, 0);
> break;
> case 3:
> case 2:
> *sp -= 4;
> - cpu_stl_kernel(env, *sp, addr);
> + cpu_stl_mmuidx_ra(env, *sp, addr, MMU_KERNEL_IDX, 0);
> break;
> }
> *sp -= 2;
> - cpu_stw_kernel(env, *sp, (format << 12) + (cs->exception_index <<
> 2));
> + cpu_stw_mmuidx_ra(env, *sp, (format << 12) + (cs->exception_index <<
> 2),
> + MMU_KERNEL_IDX, 0);
> }
> *sp -= 4;
> - cpu_stl_kernel(env, *sp, retaddr);
> + cpu_stl_mmuidx_ra(env, *sp, retaddr, MMU_KERNEL_IDX, 0);
> *sp -= 2;
> - cpu_stw_kernel(env, *sp, sr);
> + cpu_stw_mmuidx_ra(env, *sp, sr, MMU_KERNEL_IDX, 0);
> }
>
> static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
> @@ -353,36 +354,52 @@ static void m68k_interrupt_all(CPUM68KState *env, int
> is_hw)
> cpu_abort(cs, "DOUBLE MMU FAULT\n");
> }
> env->mmu.fault = true;
> + /* push data 3 */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* push data 3 */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* push data 2 */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* push data 2 */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* push data 1 */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* push data 1 */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 1 / push data 0 */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* write back 1 / push data 0 */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 1 address */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* write back 1 address */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 2 data */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* write back 2 data */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 2 address */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* write back 2 address */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 3 data */
> sp -= 4;
> - cpu_stl_kernel(env, sp, 0); /* write back 3 data */
> + cpu_stl_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 3 address */
> sp -= 4;
> - cpu_stl_kernel(env, sp, env->mmu.ar); /* write back 3 address */
> + cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0);
> + /* fault address */
> sp -= 4;
> - cpu_stl_kernel(env, sp, env->mmu.ar); /* fault address */
> + cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0);
> + /* write back 1 status */
> sp -= 2;
> - cpu_stw_kernel(env, sp, 0); /* write back 1 status */
> + cpu_stw_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 2 status */
> sp -= 2;
> - cpu_stw_kernel(env, sp, 0); /* write back 2 status */
> + cpu_stw_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* write back 3 status */
> sp -= 2;
> - cpu_stw_kernel(env, sp, 0); /* write back 3 status */
> + cpu_stw_mmuidx_ra(env, sp, 0, MMU_KERNEL_IDX, 0);
> + /* special status word */
> sp -= 2;
> - cpu_stw_kernel(env, sp, env->mmu.ssw); /* special status word */
> + cpu_stw_mmuidx_ra(env, sp, env->mmu.ssw, MMU_KERNEL_IDX, 0);
> + /* effective address */
> sp -= 4;
> - cpu_stl_kernel(env, sp, env->mmu.ar); /* effective address */
> + cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0);
> +
> do_stack_frame(env, &sp, 7, oldsr, 0, retaddr);
> env->mmu.fault = false;
> if (qemu_loglevel_mask(CPU_LOG_INT)) {
> @@ -414,7 +431,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int
> is_hw)
>
> env->aregs[7] = sp;
> /* Jump to vector. */
> - env->pc = cpu_ldl_kernel(env, env->vbr + vector);
> + env->pc = cpu_ldl_mmuidx_ra(env, env->vbr + vector, MMU_KERNEL_IDX, 0);
> }
>
> static void do_interrupt_all(CPUM68KState *env, int is_hw)
--
Alex Bennée
- Re: [PATCH v2 18/28] target/i386: Remove MMU_MODE{0,1,2}_SUFFIX, (continued)
- [PATCH v2 19/28] target/microblaze: Remove MMU_MODE{0,1,2}_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 20/28] target/sh4: Remove MMU_MODE{0,1}_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 21/28] target/unicore32: Remove MMU_MODE{0,1}_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 22/28] target/xtensa: Remove MMU_MODE{0,1,2,3}_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 23/28] target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0, 1}_SUFFIX, Richard Henderson, 2019/12/16
- Re: [PATCH v2 23/28] target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0, 1}_SUFFIX,
Alex Bennée <=
- [PATCH v2 24/28] target/mips: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 25/28] target/s390x: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 26/28] target/ppc: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 27/28] cputlb: Remove support for MMU_MODE*_SUFFIX, Richard Henderson, 2019/12/16