diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-04 01:57:29 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-04 01:57:29 +0000 |
commit | 077fc2061e254422c44b2de16c526476398113ae (patch) | |
tree | 140f2cc28fc81737544c4d9ca4627328dab2137e | |
parent | 74e9115560fbdd6342f3e1a42ced6bd76b227f82 (diff) |
Improve PowerPC CPU state dump.
Dump NIP on SPR access faults.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3522 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | target-ppc/translate.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/target-ppc/translate.c b/target-ppc/translate.c index 3b1c9919aa..cd7a483465 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -3556,20 +3556,22 @@ static always_inline void gen_op_mfspr (DisasContext *ctx) */ if (sprn != SPR_PVR) { if (loglevel != 0) { - fprintf(logfile, "Trying to read privileged spr %d %03x\n", - sprn, sprn); + fprintf(logfile, "Trying to read privileged spr %d %03x at" + ADDRX "\n", sprn, sprn, ctx->nip); } - printf("Trying to read privileged spr %d %03x\n", sprn, sprn); + printf("Trying to read privileged spr %d %03x at " ADDRX "\n", + sprn, sprn, ctx->nip); } GEN_EXCP_PRIVREG(ctx); } } else { /* Not defined */ if (loglevel != 0) { - fprintf(logfile, "Trying to read invalid spr %d %03x\n", - sprn, sprn); + fprintf(logfile, "Trying to read invalid spr %d %03x at " + ADDRX "\n", sprn, sprn, ctx->nip); } - printf("Trying to read invalid spr %d %03x\n", sprn, sprn); + printf("Trying to read invalid spr %d %03x at " ADDRX "\n", + sprn, sprn, ctx->nip); GEN_EXCP(ctx, POWERPC_EXCP_PROGRAM, POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_SPR); } @@ -3689,19 +3691,21 @@ GEN_HANDLER(mtspr, 0x1F, 0x13, 0x0E, 0x00000001, PPC_MISC) } else { /* Privilege exception */ if (loglevel != 0) { - fprintf(logfile, "Trying to write privileged spr %d %03x\n", - sprn, sprn); + fprintf(logfile, "Trying to write privileged spr %d %03x at " + ADDRX "\n", sprn, sprn, ctx->nip); } - printf("Trying to write privileged spr %d %03x\n", sprn, sprn); + printf("Trying to write privileged spr %d %03x at " ADDRX "\n", + sprn, sprn, ctx->nip); GEN_EXCP_PRIVREG(ctx); } } else { /* Not defined */ if (loglevel != 0) { - fprintf(logfile, "Trying to write invalid spr %d %03x\n", - sprn, sprn); + fprintf(logfile, "Trying to write invalid spr %d %03x at " + ADDRX "\n", sprn, sprn, ctx->nip); } - printf("Trying to write invalid spr %d %03x\n", sprn, sprn); + printf("Trying to write invalid spr %d %03x at " ADDRX "\n", + sprn, sprn, ctx->nip); GEN_EXCP(ctx, POWERPC_EXCP_PROGRAM, POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_SPR); } @@ -6685,24 +6689,23 @@ void cpu_dump_state (CPUState *env, FILE *f, int i; - cpu_fprintf(f, "NIP " ADDRX " LR " ADDRX " CTR " ADDRX " idx %d\n", - env->nip, env->lr, env->ctr, env->mmu_idx); - cpu_fprintf(f, "MSR " REGX FILL " XER %08x " + cpu_fprintf(f, "NIP " ADDRX " LR " ADDRX " CTR " ADDRX " XER %08x\n", + env->nip, env->lr, env->ctr, hreg_load_xer(env)); + cpu_fprintf(f, "MSR " REGX FILL " HID0 " REGX FILL " HF " REGX FILL + " idx %d\n", + env->msr, env->hflags, env->spr[SPR_HID0], env->mmu_idx); #if !defined(NO_TIMER_DUMP) - "TB %08x %08x " + cpu_fprintf(f, "TB %08x %08x " #if !defined(CONFIG_USER_ONLY) "DECR %08x" #endif -#endif "\n", - env->msr, hreg_load_xer(env) -#if !defined(NO_TIMER_DUMP) - , cpu_ppc_load_tbu(env), cpu_ppc_load_tbl(env) + cpu_ppc_load_tbu(env), cpu_ppc_load_tbl(env) #if !defined(CONFIG_USER_ONLY) , cpu_ppc_load_decr(env) #endif -#endif ); +#endif for (i = 0; i < 32; i++) { if ((i & (RGPL - 1)) == 0) cpu_fprintf(f, "GPR%02d", i); @@ -6733,8 +6736,7 @@ void cpu_dump_state (CPUState *env, FILE *f, cpu_fprintf(f, "\n"); } #if !defined(CONFIG_USER_ONLY) - cpu_fprintf(f, "SRR0 " REGX " SRR1 " REGX " " FILL FILL FILL - "SDR1 " REGX "\n", + cpu_fprintf(f, "SRR0 " REGX " SRR1 " REGX " SDR1 " REGX "\n", env->spr[SPR_SRR0], env->spr[SPR_SRR1], env->sdr1); #endif |