[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 02/28] cputlb: Use trace_mem_get_info instead of trace_mem
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 02/28] cputlb: Use trace_mem_get_info instead of trace_mem_build_info |
Date: |
Fri, 20 Dec 2019 15:04:21 +0000 |
User-agent: |
mu4e 1.3.5; emacs 27.0.50 |
Richard Henderson <address@hidden> writes:
> In the cpu_ldst templates, we already require a MemOp, and it
> is cleaner and clearer to pass that instead of 3 separate
> arguments describing the memory operation.
>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> include/exec/cpu_ldst_template.h | 22 +++++++++++-----------
> include/exec/cpu_ldst_useronly_template.h | 12 ++++++------
> 2 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/include/exec/cpu_ldst_template.h
> b/include/exec/cpu_ldst_template.h
> index 54b5e858ce..0ad5de3ef9 100644
> --- a/include/exec/cpu_ldst_template.h
> +++ b/include/exec/cpu_ldst_template.h
> @@ -86,9 +86,9 @@ glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> RES_TYPE res;
> target_ulong addr;
> int mmu_idx = CPU_MMU_INDEX;
> - TCGMemOpIdx oi;
> + MemOp op = MO_TE | SHIFT;
> #if !defined(SOFTMMU_CODE_ACCESS)
> - uint16_t meminfo = trace_mem_build_info(SHIFT, false, MO_TE, false,
> mmu_idx);
> + uint16_t meminfo = trace_mem_get_info(op, mmu_idx, false);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> #endif
>
> @@ -96,9 +96,9 @@ glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> entry = tlb_entry(env, mmu_idx, addr);
> if (unlikely(entry->ADDR_READ !=
> (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> - oi = make_memop_idx(SHIFT, mmu_idx);
> + TCGMemOpIdx oi = make_memop_idx(op, mmu_idx);
> res = glue(glue(helper_ret_ld, URETSUFFIX), MMUSUFFIX)(env, addr,
> - oi, retaddr);
> + oi, retaddr);
> } else {
> uintptr_t hostaddr = addr + entry->addend;
> res = glue(glue(ld, USUFFIX), _p)((uint8_t *)hostaddr);
> @@ -125,9 +125,9 @@ glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> int res;
> target_ulong addr;
> int mmu_idx = CPU_MMU_INDEX;
> - TCGMemOpIdx oi;
> -#if !defined(SOFTMMU_CODE_ACCESS)
> - uint16_t meminfo = trace_mem_build_info(SHIFT, true, MO_TE, false,
> mmu_idx);
> + MemOp op = MO_TE | MO_SIGN | SHIFT;
> +#ifndef SOFTMMU_CODE_ACCESS
> + uint16_t meminfo = trace_mem_get_info(op, mmu_idx, false);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> #endif
>
> @@ -135,7 +135,7 @@ glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> entry = tlb_entry(env, mmu_idx, addr);
> if (unlikely(entry->ADDR_READ !=
> (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> - oi = make_memop_idx(SHIFT, mmu_idx);
> + TCGMemOpIdx oi = make_memop_idx(op & ~MO_SIGN, mmu_idx);
> res = (DATA_STYPE)glue(glue(helper_ret_ld, SRETSUFFIX),
> MMUSUFFIX)(env, addr, oi, retaddr);
> } else {
> @@ -167,9 +167,9 @@ glue(glue(glue(cpu_st, SUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> CPUTLBEntry *entry;
> target_ulong addr;
> int mmu_idx = CPU_MMU_INDEX;
> - TCGMemOpIdx oi;
> + MemOp op = MO_TE | SHIFT;
> #if !defined(SOFTMMU_CODE_ACCESS)
> - uint16_t meminfo = trace_mem_build_info(SHIFT, false, MO_TE, true,
> mmu_idx);
> + uint16_t meminfo = trace_mem_get_info(op, mmu_idx, true);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> #endif
>
> @@ -177,7 +177,7 @@ glue(glue(glue(cpu_st, SUFFIX), MEMSUFFIX),
> _ra)(CPUArchState *env,
> entry = tlb_entry(env, mmu_idx, addr);
> if (unlikely(tlb_addr_write(entry) !=
> (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> - oi = make_memop_idx(SHIFT, mmu_idx);
> + TCGMemOpIdx oi = make_memop_idx(op, mmu_idx);
> glue(glue(helper_ret_st, SUFFIX), MMUSUFFIX)(env, addr, v, oi,
> retaddr);
> } else {
> diff --git a/include/exec/cpu_ldst_useronly_template.h
> b/include/exec/cpu_ldst_useronly_template.h
> index dbdc7a845d..e5a3d1983a 100644
> --- a/include/exec/cpu_ldst_useronly_template.h
> +++ b/include/exec/cpu_ldst_useronly_template.h
> @@ -70,8 +70,8 @@ glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env,
> abi_ptr ptr)
> ret = glue(glue(ld, USUFFIX), _p)(g2h(ptr));
> clear_helper_retaddr();
> #else
> - uint16_t meminfo = trace_mem_build_info(SHIFT, false, MO_TE, false,
> - MMU_USER_IDX);
> + MemOp op = MO_TE | SHIFT;
> + uint16_t meminfo = trace_mem_get_info(op, MMU_USER_IDX, false);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> ret = glue(glue(ld, USUFFIX), _p)(g2h(ptr));
> #endif
> @@ -102,8 +102,8 @@ glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env,
> abi_ptr ptr)
> ret = glue(glue(lds, SUFFIX), _p)(g2h(ptr));
> clear_helper_retaddr();
> #else
> - uint16_t meminfo = trace_mem_build_info(SHIFT, true, MO_TE, false,
> - MMU_USER_IDX);
> + MemOp op = MO_TE | MO_SIGN | SHIFT;
> + uint16_t meminfo = trace_mem_get_info(op, MMU_USER_IDX, false);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> ret = glue(glue(lds, SUFFIX), _p)(g2h(ptr));
> qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
> @@ -131,8 +131,8 @@ static inline void
> glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, abi_ptr ptr,
> RES_TYPE v)
> {
> - uint16_t meminfo = trace_mem_build_info(SHIFT, false, MO_TE, true,
> - MMU_USER_IDX);
> + MemOp op = MO_TE | SHIFT;
> + uint16_t meminfo = trace_mem_get_info(op, MMU_USER_IDX, true);
> trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
> glue(glue(st, SUFFIX), _p)(g2h(ptr), v);
> qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
--
Alex Bennée
- [PATCH v2 00/28] cputlb: Remove support for MMU_MODE*_SUFFIX, Richard Henderson, 2019/12/16
- [PATCH v2 01/28] target/xtensa: Use probe_access for itlb_hit_test, Richard Henderson, 2019/12/16
- [PATCH v2 02/28] cputlb: Use trace_mem_get_info instead of trace_mem_build_info, Richard Henderson, 2019/12/16
- [PATCH v2 03/28] trace: Remove trace_mem_build_info_no_se_[bl]e, Richard Henderson, 2019/12/16
- [PATCH v2 04/28] cputlb: Move body of cpu_ldst_template.h out of line, Richard Henderson, 2019/12/16
- [PATCH v2 05/28] translator: Use cpu_ld*_code instead of open-coding, Richard Henderson, 2019/12/16