Expose powerpc_excp_name() prototype and register it as the CPUClass::exception_name() handler, so the common exception logging can resolve PPC exception codes to names.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Pierrick Bouvier <[email protected]> --- target/ppc/cpu.h | 2 ++ target/ppc/cpu_init.c | 1 + target/ppc/excp_helper.c | 5 +++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 3fb51bbeb82..4eb7db3d727 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -153,6 +153,8 @@ enum { POWERPC_EXCP_SYSCALL_USER = 0x203, /* System call in user mode only */ }; +const char *powerpc_excp_name(int excp); + /* Exceptions error codes */ enum { /* Exception subtypes for POWERPC_EXCP_ALIGN */ diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index b711f9c0a85..d5f9ac28020 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -7529,6 +7529,7 @@ static void ppc_cpu_class_init(ObjectClass *oc, const void *data) &pcc->parent_phases); cc->class_by_name = ppc_cpu_class_by_name; + cc->exception_name = powerpc_excp_name; cc->list_cpus = ppc_cpu_list; cc->dump_state = ppc_cpu_dump_state; cc->set_pc = ppc_cpu_set_pc; diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 4892cbaeb07..76ac41e964d 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -34,9 +34,8 @@ /*****************************************************************************/ /* Exception processing */ -#ifndef CONFIG_USER_ONLY -static const char *powerpc_excp_name(int excp) +const char *powerpc_excp_name(int excp) { static const char * const excp_names[POWERPC_EXCP_NB] = { [POWERPC_EXCP_CRITICAL] = "CRITICAL", @@ -108,6 +107,8 @@ static const char *powerpc_excp_name(int excp) return STR_ARRAY_ELEM_OR_NULL(excp_names, excp) ?: "unknown"; } +#ifndef CONFIG_USER_ONLY + static void dump_syscall(CPUPPCState *env) { qemu_log_mask(CPU_LOG_INT, "syscall r0=%016" PRIx64 -- 2.55.0
