mirror of https://github.com/xemu-project/xemu.git
target/ppc/mem_helper.c: Remove a conditional from dcbz_common()
Instead of passing a bool and select a value within dcbz_common() let the callers pass in the right value to avoid this conditional statement. On PPC dcbz is often used to zero memory and some code uses it a lot. This change improves the run time of a test case that copies memory with a dcbz call in every iteration from 6.23 to 5.83 seconds. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Message-Id: <20240622204833.5F7C74E6000@zero.eik.bme.hu> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
3b9991e35c
commit
73a93ae5f4
|
@ -271,12 +271,11 @@ void helper_stsw(CPUPPCState *env, target_ulong addr, uint32_t nb,
|
|||
}
|
||||
|
||||
static void dcbz_common(CPUPPCState *env, target_ulong addr,
|
||||
uint32_t opcode, bool epid, uintptr_t retaddr)
|
||||
uint32_t opcode, int mmu_idx, uintptr_t retaddr)
|
||||
{
|
||||
target_ulong mask, dcbz_size = env->dcache_line_size;
|
||||
uint32_t i;
|
||||
void *haddr;
|
||||
int mmu_idx = epid ? PPC_TLB_EPID_STORE : ppc_env_mmu_index(env, false);
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
/* Check for dcbz vs dcbzl on 970 */
|
||||
|
@ -309,12 +308,12 @@ static void dcbz_common(CPUPPCState *env, target_ulong addr,
|
|||
|
||||
void helper_dcbz(CPUPPCState *env, target_ulong addr, uint32_t opcode)
|
||||
{
|
||||
dcbz_common(env, addr, opcode, false, GETPC());
|
||||
dcbz_common(env, addr, opcode, ppc_env_mmu_index(env, false), GETPC());
|
||||
}
|
||||
|
||||
void helper_dcbzep(CPUPPCState *env, target_ulong addr, uint32_t opcode)
|
||||
{
|
||||
dcbz_common(env, addr, opcode, true, GETPC());
|
||||
dcbz_common(env, addr, opcode, PPC_TLB_EPID_STORE, GETPC());
|
||||
}
|
||||
|
||||
void helper_icbi(CPUPPCState *env, target_ulong addr)
|
||||
|
|
Loading…
Reference in New Issue