[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 05/16] cputlb: Split out load/store_memop
From: |
Alex Bennée |
Subject: |
Re: [PATCH v4 05/16] cputlb: Split out load/store_memop |
Date: |
Tue, 24 Sep 2019 16:51:00 +0100 |
User-agent: |
mu4e 1.3.4; emacs 27.0.50 |
Richard Henderson <address@hidden> writes:
> We will shortly be using these more than once.
>
> Signed-off-by: Richard Henderson <address@hidden>
<snip>
> }
>
> /*
> @@ -1415,7 +1412,8 @@ load_helper(CPUArchState *env, target_ulong addr,
> TCGMemOpIdx oi,
> static uint64_t full_ldub_mmu(CPUArchState *env, target_ulong addr,
> TCGMemOpIdx oi, uintptr_t retaddr)
> {
> - return load_helper(env, addr, oi, retaddr, MO_UB, false, full_ldub_mmu);
> + return load_helper(env, addr, oi, retaddr, MO_UB, false,
> + full_ldub_mmu);
This is an unrelated change, otherwise:
Reviewed-by: Alex Bennée <address@hidden>
> }
>
> tcg_target_ulong helper_ret_ldub_mmu(CPUArchState *env, target_ulong addr,
> @@ -1530,6 +1528,36 @@ tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env,
> target_ulong addr,
> * Store Helpers
> */
>
> +static inline void QEMU_ALWAYS_INLINE
> +store_memop(void *haddr, uint64_t val, MemOp op)
> +{
> + switch (op) {
> + case MO_UB:
> + stb_p(haddr, val);
> + break;
> + case MO_BEUW:
> + stw_be_p(haddr, val);
> + break;
> + case MO_LEUW:
> + stw_le_p(haddr, val);
> + break;
> + case MO_BEUL:
> + stl_be_p(haddr, val);
> + break;
> + case MO_LEUL:
> + stl_le_p(haddr, val);
> + break;
> + case MO_BEQ:
> + stq_be_p(haddr, val);
> + break;
> + case MO_LEQ:
> + stq_le_p(haddr, val);
> + break;
> + default:
> + optimize_away();
> + }
> +}
> +
> static inline void QEMU_ALWAYS_INLINE
> store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
> TCGMemOpIdx oi, uintptr_t retaddr, MemOp op)
> @@ -1657,31 +1685,7 @@ store_helper(CPUArchState *env, target_ulong addr,
> uint64_t val,
>
> do_aligned_access:
> haddr = (void *)((uintptr_t)addr + entry->addend);
> - switch (op) {
> - case MO_UB:
> - stb_p(haddr, val);
> - break;
> - case MO_BEUW:
> - stw_be_p(haddr, val);
> - break;
> - case MO_LEUW:
> - stw_le_p(haddr, val);
> - break;
> - case MO_BEUL:
> - stl_be_p(haddr, val);
> - break;
> - case MO_LEUL:
> - stl_le_p(haddr, val);
> - break;
> - case MO_BEQ:
> - stq_be_p(haddr, val);
> - break;
> - case MO_LEQ:
> - stq_le_p(haddr, val);
> - break;
> - default:
> - optimize_away();
> - }
> + store_memop(haddr, val, op);
> }
>
> void helper_ret_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
--
Alex Bennée
- Re: [PATCH v4 03/16] qemu/compiler.h: Add optimize_away, (continued)
- [PATCH v4 04/16] cputlb: Use optimize_away in load/store_helpers, Richard Henderson, 2019/09/23
- [PATCH v4 06/16] cputlb: Introduce TLB_BSWAP, Richard Henderson, 2019/09/23
- [PATCH v4 07/16] exec: Adjust notdirty tracing, Richard Henderson, 2019/09/23
- [PATCH v4 05/16] cputlb: Split out load/store_memop, Richard Henderson, 2019/09/23
- [PATCH v4 08/16] cputlb: Move ROM handling from I/O path to TLB path, Richard Henderson, 2019/09/23
- [PATCH v4 14/16] cputlb: Remove tb_invalidate_phys_page_range is_cpu_write_access, Richard Henderson, 2019/09/23
- [PATCH v4 11/16] cputlb: Merge and move memory_notdirty_write_{prepare, complete}, Richard Henderson, 2019/09/23