From 9a5d878f6e7c9c87d92d391f97a593e94be92031 Mon Sep 17 00:00:00 2001 From: ths Date: Thu, 3 Jan 2008 21:26:23 +0000 Subject: [PATCH] Fix exception debug output. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3885 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-mips/helper.c | 75 +++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/target-mips/helper.c b/target-mips/helper.c index a7252a07b..2645a44d7 100644 --- a/target-mips/helper.c +++ b/target-mips/helper.c @@ -319,43 +319,40 @@ int cpu_mips_handle_mmu_fault (CPUState *env, target_ulong address, int rw, } #if !defined(CONFIG_USER_ONLY) -static struct _excp_names { - int excp; - char *name; -} excp_names[EXCP_LAST + 1] = { - { EXCP_RESET, "reset" }, - { EXCP_SRESET, "soft reset" }, - { EXCP_DSS, "debug single step" }, - { EXCP_DINT, "debug interrupt" }, - { EXCP_NMI, "non-maskable interrupt" }, - { EXCP_MCHECK, "machine check" }, - { EXCP_EXT_INTERRUPT, "interrupt" }, - { EXCP_DFWATCH, "deferred watchpoint" }, - { EXCP_DIB, "debug instruction breakpoint" }, - { EXCP_IWATCH, "instruction fetch watchpoint" }, - { EXCP_AdEL, "address error load" }, - { EXCP_AdES, "address error store" }, - { EXCP_TLBF, "TLB refill" }, - { EXCP_IBE, "instruction bus error" }, - { EXCP_DBp, "debug breakpoint" }, - { EXCP_SYSCALL, "syscall" }, - { EXCP_BREAK, "break" }, - { EXCP_CpU, "coprocessor unusable" }, - { EXCP_RI, "reserved instruction" }, - { EXCP_OVERFLOW, "arithmetic overflow" }, - { EXCP_TRAP, "trap" }, - { EXCP_FPE, "floating point" }, - { EXCP_DDBS, "debug data break store" }, - { EXCP_DWATCH, "data watchpoint" }, - { EXCP_LTLBL, "TLB modify" }, - { EXCP_TLBL, "TLB load" }, - { EXCP_TLBS, "TLB store" }, - { EXCP_DBE, "data bus error" }, - { EXCP_DDBL, "debug data break load" }, - { EXCP_THREAD, "thread" }, - { EXCP_MDMX, "MDMX" }, - { EXCP_C2E, "precise coprocessor 2" }, - { EXCP_CACHE, "cache error" }, +static const char * const excp_names[EXCP_LAST + 1] = { + [EXCP_RESET] = "reset", + [EXCP_SRESET] = "soft reset", + [EXCP_DSS] = "debug single step", + [EXCP_DINT] = "debug interrupt", + [EXCP_NMI] = "non-maskable interrupt", + [EXCP_MCHECK] = "machine check", + [EXCP_EXT_INTERRUPT] = "interrupt", + [EXCP_DFWATCH] = "deferred watchpoint", + [EXCP_DIB] = "debug instruction breakpoint", + [EXCP_IWATCH] = "instruction fetch watchpoint", + [EXCP_AdEL] = "address error load", + [EXCP_AdES] = "address error store", + [EXCP_TLBF] = "TLB refill", + [EXCP_IBE] = "instruction bus error", + [EXCP_DBp] = "debug breakpoint", + [EXCP_SYSCALL] = "syscall", + [EXCP_BREAK] = "break", + [EXCP_CpU] = "coprocessor unusable", + [EXCP_RI] = "reserved instruction", + [EXCP_OVERFLOW] = "arithmetic overflow", + [EXCP_TRAP] = "trap", + [EXCP_FPE] = "floating point", + [EXCP_DDBS] = "debug data break store", + [EXCP_DWATCH] = "data watchpoint", + [EXCP_LTLBL] = "TLB modify", + [EXCP_TLBL] = "TLB load", + [EXCP_TLBS] = "TLB store", + [EXCP_DBE] = "data bus error", + [EXCP_DDBL] = "debug data break load", + [EXCP_THREAD] = "thread", + [EXCP_MDMX] = "MDMX", + [EXCP_C2E] = "precise coprocessor 2", + [EXCP_CACHE] = "cache error", }; #endif @@ -364,13 +361,13 @@ void do_interrupt (CPUState *env) #if !defined(CONFIG_USER_ONLY) target_ulong offset; int cause = -1; - char *name; + const char *name; if (logfile && env->exception_index != EXCP_EXT_INTERRUPT) { if (env->exception_index < 0 || env->exception_index > EXCP_LAST) name = "unknown"; else - name = excp_names[env->exception_index].name; + name = excp_names[env->exception_index]; fprintf(logfile, "%s enter: PC " TARGET_FMT_lx " EPC " TARGET_FMT_lx " %s exception\n", __func__, env->PC[env->current_tc], env->CP0_EPC, name); -- 2.39.5