Replace the switch statement with a static lookup table. With '-d int', unlisted exception codes are now logged as "unknown" instead of "<unknown>".
Suggested-by: Pierrick Bouvier <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Pierrick Bouvier <[email protected]> --- target/alpha/helper.c | 55 ++++++++++++------------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/target/alpha/helper.c b/target/alpha/helper.c index cedb0006892..84997ef3a99 100644 --- a/target/alpha/helper.c +++ b/target/alpha/helper.c @@ -19,6 +19,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" +#include "qemu/cutils.h" #include "cpu.h" #include "exec/cputlb.h" #include "exec/page-protection.h" @@ -37,47 +38,21 @@ const char *alpha_exception_name(int excp) { - const char *name; + static const char * const excp_names[] = { + [EXCP_RESET] = "reset", + [EXCP_MCHK] = "mchk", + [EXCP_SMP_INTERRUPT] = "smp_interrupt", + [EXCP_CLK_INTERRUPT] = "clk_interrupt", + [EXCP_DEV_INTERRUPT] = "dev_interrupt", + [EXCP_MMFAULT] = "mmfault", + [EXCP_UNALIGN] = "unalign", + [EXCP_OPCDEC] = "opcdec", + [EXCP_ARITH] = "arith", + [EXCP_FEN] = "fen", + [EXCP_CALL_PAL] = "call_pal", + }; - switch (excp) { - case EXCP_RESET: - name = "reset"; - break; - case EXCP_MCHK: - name = "mchk"; - break; - case EXCP_SMP_INTERRUPT: - name = "smp_interrupt"; - break; - case EXCP_CLK_INTERRUPT: - name = "clk_interrupt"; - break; - case EXCP_DEV_INTERRUPT: - name = "dev_interrupt"; - break; - case EXCP_MMFAULT: - name = "mmfault"; - break; - case EXCP_UNALIGN: - name = "unalign"; - break; - case EXCP_OPCDEC: - name = "opcdec"; - break; - case EXCP_ARITH: - name = "arith"; - break; - case EXCP_FEN: - name = "fen"; - break; - case EXCP_CALL_PAL: - name = "call_pal"; - break; - default: - name = "<unknown>"; - break; - } - return name; + return STR_ARRAY_ELEM_OR_NULL(excp_names, excp) ?: "unknown"; } uint64_t cpu_alpha_load_fpcr(CPUAlphaState *env) -- 2.55.0
