Message ID | 20250127102620.39159-6-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | target/ppc: Move TCG code from excp_helper.c to tcg-excp_helper.c | expand |
On 1/27/25 15:56, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/ppc/excp_helper.c | 21 --------------------- > target/ppc/tcg-excp_helper.c | 18 ++++++++++++++++++ > 2 files changed, 18 insertions(+), 21 deletions(-) > This patch also needs to remove the function declaration introduced in internal.h in patch 3. Otherwise, Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com> > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index b05eb7f5aec..8956466db1d 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -136,27 +136,6 @@ static void dump_hcall(CPUPPCState *env) > env->nip); > } > > -#ifdef CONFIG_TCG > -/* Return true iff byteswap is needed to load instruction */ > -static inline bool insn_need_byteswap(CPUArchState *env) > -{ > - /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ > - return !!(env->msr & ((target_ulong)1 << MSR_LE)); > -} > - > -uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) > -{ > - uint32_t insn = cpu_ldl_code(env, addr); > - > - if (insn_need_byteswap(env)) { > - insn = bswap32(insn); > - } > - > - return insn; > -} > - > -#endif > - > static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) > { > const char *es; > diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c > index 3402dbe05ee..6950b78774d 100644 > --- a/target/ppc/tcg-excp_helper.c > +++ b/target/ppc/tcg-excp_helper.c > @@ -199,4 +199,22 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp) > return false; > } > > +/* Return true iff byteswap is needed to load instruction */ > +static inline bool insn_need_byteswap(CPUArchState *env) > +{ > + /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ > + return !!(env->msr & ((target_ulong)1 << MSR_LE)); > +} > + > +uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) > +{ > + uint32_t insn = cpu_ldl_code(env, addr); > + > + if (insn_need_byteswap(env)) { > + insn = bswap32(insn); > + } > + > + return insn; > +} > + > #endif /* !CONFIG_USER_ONLY */
On 28/1/25 07:13, Harsh Prateek Bora wrote: > > > On 1/27/25 15:56, Philippe Mathieu-Daudé wrote: >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> target/ppc/excp_helper.c | 21 --------------------- >> target/ppc/tcg-excp_helper.c | 18 ++++++++++++++++++ >> 2 files changed, 18 insertions(+), 21 deletions(-) >> > > This patch also needs to remove the function declaration introduced in > internal.h in patch 3. No, it is still used in 2 distinct units: $ git grep ppc_ldl_code a09cb1ead a09cb1ead:target/ppc/excp_helper.c:1291: return is_prefix_insn(env, ppc_ldl_code(env, env->nip)); a09cb1ead:target/ppc/excp_helper.c:1516: uint32_t insn = ppc_ldl_code(env, env->nip); a09cb1ead:target/ppc/excp_helper.c:1519: uint32_t insn2 = ppc_ldl_code(env, env->nip + 4); a09cb1ead:target/ppc/internal.h:271:uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr); a09cb1ead:target/ppc/tcg-excp_helper.c:38: insn = ppc_ldl_code(env, env->nip); a09cb1ead:target/ppc/tcg-excp_helper.c:209:uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) > Otherwise, > Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Thanks!
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index b05eb7f5aec..8956466db1d 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -136,27 +136,6 @@ static void dump_hcall(CPUPPCState *env) env->nip); } -#ifdef CONFIG_TCG -/* Return true iff byteswap is needed to load instruction */ -static inline bool insn_need_byteswap(CPUArchState *env) -{ - /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ - return !!(env->msr & ((target_ulong)1 << MSR_LE)); -} - -uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) -{ - uint32_t insn = cpu_ldl_code(env, addr); - - if (insn_need_byteswap(env)) { - insn = bswap32(insn); - } - - return insn; -} - -#endif - static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) { const char *es; diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 3402dbe05ee..6950b78774d 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -199,4 +199,22 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp) return false; } +/* Return true iff byteswap is needed to load instruction */ +static inline bool insn_need_byteswap(CPUArchState *env) +{ + /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ + return !!(env->msr & ((target_ulong)1 << MSR_LE)); +} + +uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) +{ + uint32_t insn = cpu_ldl_code(env, addr); + + if (insn_need_byteswap(env)) { + insn = bswap32(insn); + } + + return insn; +} + #endif /* !CONFIG_USER_ONLY */
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/ppc/excp_helper.c | 21 --------------------- target/ppc/tcg-excp_helper.c | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 21 deletions(-)