[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 04/28] cputlb: Move body of cpu_ldst_template.h out of lin
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 04/28] cputlb: Move body of cpu_ldst_template.h out of line |
Date: |
Fri, 20 Dec 2019 18:36:27 +0000 |
User-agent: |
mu4e 1.3.5; emacs 27.0.50 |
Richard Henderson <address@hidden> writes:
> With the tracing hooks, the inline functions are no longer
> so simple. Once out-of-line, the current tlb_entry lookup
> is redundant with the one in the main load/store_helper.
>
> This also begins the introduction of a new target facing
> interface, with suffix *_mmuidx_ra. This is not yet
> official because the interface is not done for user-only.
>
> Use abi_ptr instead of target_ulong in preparation for
> user-only; the two types are identical for softmmu.
>
> What remains in cpu_ldst_template.h are the expansions
> for _code, _data, and MMU_MODE<N>_SUFFIX.
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> include/exec/cpu_ldst.h | 25 ++++++-
> include/exec/cpu_ldst_template.h | 125 +++++++------------------------
> accel/tcg/cputlb.c | 116 ++++++++++++++++++++++++++++
> 3 files changed, 166 insertions(+), 100 deletions(-)
>
> diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
> index fd499f7e2f..cf8af36dbc 100644
> --- a/include/exec/cpu_ldst.h
> +++ b/include/exec/cpu_ldst.h
> @@ -152,7 +152,7 @@ static inline void clear_helper_retaddr(void)
>
> #else
>
> -/* The memory helpers for tcg-generated code need tcg_target_long etc. */
> +/* Needed for TCG_OVERSIZED_GUEST */
> #include "tcg.h"
>
> static inline target_ulong tlb_addr_write(const CPUTLBEntry *entry)
> @@ -185,6 +185,29 @@ static inline CPUTLBEntry *tlb_entry(CPUArchState *env,
> uintptr_t mmu_idx,
> return &env_tlb(env)->f[mmu_idx].table[tlb_index(env, mmu_idx, addr)];
> }
>
> +uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +uint32_t cpu_lduw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +uint32_t cpu_ldl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +uint64_t cpu_ldq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +
> +int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +int cpu_ldsw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
> + int mmu_idx, uintptr_t ra);
> +
> +void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
> + int mmu_idx, uintptr_t retaddr);
> +void cpu_stw_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
> + int mmu_idx, uintptr_t retaddr);
> +void cpu_stl_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
> + int mmu_idx, uintptr_t retaddr);
> +void cpu_stq_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
> + int mmu_idx, uintptr_t retaddr);
> +
> #ifdef MMU_MODE0_SUFFIX
> #define CPU_MMU_INDEX 0
> #define MEMSUFFIX MMU_MODE0_SUFFIX
> diff --git a/include/exec/cpu_ldst_template.h
> b/include/exec/cpu_ldst_template.h
> index 0ad5de3ef9..ea39e29c19 100644
> --- a/include/exec/cpu_ldst_template.h
> +++ b/include/exec/cpu_ldst_template.h
> @@ -24,13 +24,6 @@
> * License along with this library; if not, see
> <http://www.gnu.org/licenses/>.
> */
>
> -#if !defined(SOFTMMU_CODE_ACCESS)
> -#include "trace-root.h"
> -#endif
> -
> -#include "qemu/plugin.h"
> -#include "trace/mem.h"
I think api.c needs to include trace/mem.h
--
Alex Bennée
- Re: [PATCH v2 01/28] target/xtensa: Use probe_access for itlb_hit_test, (continued)
- [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
- [PATCH v2 06/28] cputlb: Rename helper_ret_ld*_cmmu to cpu_ld*_code, Richard Henderson, 2019/12/16
- [PATCH v2 07/28] cputlb: Provide cpu_(ld, st}*_mmuidx_ra for user-only, Richard Henderson, 2019/12/16
- [PATCH v2 08/28] target/i386: Use cpu_*_mmuidx_ra instead of templates, Richard Henderson, 2019/12/16