Re: [PATCH v2 1/7] target/ppc: powerpc_excp: Extract software TLB logging into a function
On 1/5/22 12:40 PM, Fabiano Rosas wrote: Signed-off-by: Fabiano Rosas --- target/ppc/excp_helper.c | 63 +++- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a779dc936a..2c5d5470de 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -135,6 +135,41 @@ static void dump_hcall(CPUPPCState *env) env->nip); } +static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) +{ +#if defined(DEBUG_SOFTWARE_TLB) +const char *es; +target_ulong *miss, *cmp; +int en; + +if (!qemu_log_enabled()) { +return; +} + Because code movement, Reviewed-by: Richard Henderson Better is qemu_loglevel_mask(CPU_LOG_MMU) and perhaps then you can remove the ifdef. r~
Re: [PATCH v2 1/7] target/ppc: powerpc_excp: Extract software TLB logging into a function
On Wed, Jan 05, 2022 at 05:40:23PM -0300, Fabiano Rosas wrote: > Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson > --- > target/ppc/excp_helper.c | 63 +++- > 1 file changed, 36 insertions(+), 27 deletions(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index a779dc936a..2c5d5470de 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -135,6 +135,41 @@ static void dump_hcall(CPUPPCState *env) >env->nip); > } > > +static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) > +{ > +#if defined(DEBUG_SOFTWARE_TLB) > +const char *es; > +target_ulong *miss, *cmp; > +int en; > + > +if (!qemu_log_enabled()) { > +return; > +} > + > +if (excp == POWERPC_EXCP_IFTLB) { > +es = "I"; > +en = 'I'; > +miss = &env->spr[SPR_IMISS]; > +cmp = &env->spr[SPR_ICMP]; > +} else { > +if (excp == POWERPC_EXCP_DLTLB) { > +es = "DL"; > +} else { > +es = "DS"; > +} > +en = 'D'; > +miss = &env->spr[SPR_DMISS]; > +cmp = &env->spr[SPR_DCMP]; > +} > +qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " > + TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " > + TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, > + env->spr[SPR_HASH1], env->spr[SPR_HASH2], > + env->error_code); > +#endif > +} > + > + > static int powerpc_reset_wakeup(CPUState *cs, CPUPPCState *env, int excp, > target_ulong *msr) > { > @@ -777,34 +812,8 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) > } > /* fall through */ > case POWERPC_EXCP_7x5: > -#if defined(DEBUG_SOFTWARE_TLB) > -if (qemu_log_enabled()) { > -const char *es; > -target_ulong *miss, *cmp; > -int en; > +ppc_excp_debug_sw_tlb(env, excp); > > -if (excp == POWERPC_EXCP_IFTLB) { > -es = "I"; > -en = 'I'; > -miss = &env->spr[SPR_IMISS]; > -cmp = &env->spr[SPR_ICMP]; > -} else { > -if (excp == POWERPC_EXCP_DLTLB) { > -es = "DL"; > -} else { > -es = "DS"; > -} > -en = 'D'; > -miss = &env->spr[SPR_DMISS]; > -cmp = &env->spr[SPR_DCMP]; > -} > -qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " > - TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " > - TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, > - env->spr[SPR_HASH1], env->spr[SPR_HASH2], > - env->error_code); > -} > -#endif > msr |= env->crf[0] << 28; > msr |= env->error_code; /* key, D/I, S/L bits */ > /* Set way using a LRU mechanism */ -- David Gibson| I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson signature.asc Description: PGP signature
[PATCH v2 1/7] target/ppc: powerpc_excp: Extract software TLB logging into a function
Signed-off-by: Fabiano Rosas --- target/ppc/excp_helper.c | 63 +++- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a779dc936a..2c5d5470de 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -135,6 +135,41 @@ static void dump_hcall(CPUPPCState *env) env->nip); } +static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) +{ +#if defined(DEBUG_SOFTWARE_TLB) +const char *es; +target_ulong *miss, *cmp; +int en; + +if (!qemu_log_enabled()) { +return; +} + +if (excp == POWERPC_EXCP_IFTLB) { +es = "I"; +en = 'I'; +miss = &env->spr[SPR_IMISS]; +cmp = &env->spr[SPR_ICMP]; +} else { +if (excp == POWERPC_EXCP_DLTLB) { +es = "DL"; +} else { +es = "DS"; +} +en = 'D'; +miss = &env->spr[SPR_DMISS]; +cmp = &env->spr[SPR_DCMP]; +} +qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " + TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " + TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, + env->spr[SPR_HASH1], env->spr[SPR_HASH2], + env->error_code); +#endif +} + + static int powerpc_reset_wakeup(CPUState *cs, CPUPPCState *env, int excp, target_ulong *msr) { @@ -777,34 +812,8 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) } /* fall through */ case POWERPC_EXCP_7x5: -#if defined(DEBUG_SOFTWARE_TLB) -if (qemu_log_enabled()) { -const char *es; -target_ulong *miss, *cmp; -int en; +ppc_excp_debug_sw_tlb(env, excp); -if (excp == POWERPC_EXCP_IFTLB) { -es = "I"; -en = 'I'; -miss = &env->spr[SPR_IMISS]; -cmp = &env->spr[SPR_ICMP]; -} else { -if (excp == POWERPC_EXCP_DLTLB) { -es = "DL"; -} else { -es = "DS"; -} -en = 'D'; -miss = &env->spr[SPR_DMISS]; -cmp = &env->spr[SPR_DCMP]; -} -qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " - TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " - TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, - env->spr[SPR_HASH1], env->spr[SPR_HASH2], - env->error_code); -} -#endif msr |= env->crf[0] << 28; msr |= env->error_code; /* key, D/I, S/L bits */ /* Set way using a LRU mechanism */ -- 2.33.1