[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 12/26] target/moxie: Convert to CPUClass::tlb_fi
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH 12/26] target/moxie: Convert to CPUClass::tlb_fill |
Date: |
Tue, 30 Apr 2019 11:47:54 +0100 |
On Wed, 3 Apr 2019 at 04:52, Richard Henderson
<address@hidden> wrote:
>
> Cc: Anthony Green <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>
> -#if defined(CONFIG_USER_ONLY)
> -
> -void moxie_cpu_do_interrupt(CPUState *cs)
> -{
> - CPUState *cs = CPU(moxie_env_get_cpu(env));
> -
> - cs->exception_index = -1;
> -}
> -
> -int moxie_cpu_handle_mmu_fault(CPUState *cs, vaddr address, int size,
> - int rw, int mmu_idx)
> -{
> - MoxieCPU *cpu = MOXIE_CPU(cs);
> -
> - cs->exception_index = 0xaa;
> - cpu->env.debug1 = address;
> - cpu_dump_state(cs, stderr, fprintf, 0);
> - return 1;
> -}
The commit message should say that we can just delete the old
user-only code because we don't have a moxie-linux-user config.
> -
> -#else /* !CONFIG_USER_ONLY */
> -
> -int moxie_cpu_handle_mmu_fault(CPUState *cs, vaddr address, int size,
> - int rw, int mmu_idx)
> +bool moxie_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
> + MMUAccessType access_type, int mmu_idx,
> + bool probe, uintptr_t retaddr)
> {
> MoxieCPU *cpu = MOXIE_CPU(cs);
> CPUMoxieState *env = &cpu->env;
> MoxieMMUResult res;
> int prot, miss;
> - target_ulong phy;
> - int r = 1;
>
> address &= TARGET_PAGE_MASK;
> prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
> - miss = moxie_mmu_translate(&res, env, address, rw, mmu_idx);
> - if (miss) {
> - /* handle the miss. */
> - phy = 0;
> - cs->exception_index = MOXIE_EX_MMU_MISS;
> - } else {
> - phy = res.phy;
> - r = 0;
> + miss = moxie_mmu_translate(&res, env, address, access_type, mmu_idx);
> + if (likely(!miss)) {
> + tlb_set_page(cs, address, res.phy, prot, mmu_idx, TARGET_PAGE_SIZE);
> + return true;
> + }
> + if (probe) {
> + return false;
> }
> - tlb_set_page(cs, address, phy, prot, mmu_idx, TARGET_PAGE_SIZE);
> - return r;
> -}
>
> + cs->exception_index = MOXIE_EX_MMU_MISS;
> + cpu_loop_exit_restore(cs, retaddr);
> +}
The old code was calling tlb_set_page() even on an MMU miss,
and the new could doesn't do that. This looks like it was
a bug to me, but if we're fixing bugs we should mention them
in the commit message, at least.
Otherwise
Reviewed-by: Peter Maydell <address@hidden>
thanks
-- PMM
- [Qemu-devel] [PATCH 05/26] target/cris: Convert to CPUClass::tlb_fill, (continued)
- [Qemu-devel] [PATCH 05/26] target/cris: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 06/26] target/hppa: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 08/26] target/lm32: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 07/26] target/i386: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 09/26] target/m68k: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 10/26] target/microblaze: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 11/26] target/mips: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 12/26] target/moxie: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- Re: [Qemu-devel] [PATCH 12/26] target/moxie: Convert to CPUClass::tlb_fill,
Peter Maydell <=
- [Qemu-devel] [PATCH 13/26] target/nios2: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 14/26] target/openrisc: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 15/26] target/ppc: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 16/26] target/riscv: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02
- [Qemu-devel] [PATCH 17/26] target/s390x: Convert to CPUClass::tlb_fill, Richard Henderson, 2019/04/02