Revision 7fe48483 target-ppc/translate.c
b/target-ppc/translate.c | ||
---|---|---|
2924 | 2924 |
/*****************************************************************************/ |
2925 | 2925 |
/* Misc PPC helpers */ |
2926 | 2926 |
|
2927 |
void cpu_ppc_dump_state(CPUPPCState *env, FILE *f, int flags) |
|
2927 |
void cpu_dump_state(CPUState *env, FILE *f, |
|
2928 |
int (*cpu_fprintf)(FILE *f, const char *fmt, ...), |
|
2929 |
int flags) |
|
2928 | 2930 |
{ |
2929 | 2931 |
int i; |
2930 | 2932 |
|
2931 |
fprintf(f, "nip=0x%08x LR=0x%08x CTR=0x%08x XER=0x%08x " |
|
2933 |
cpu_fprintf(f, "nip=0x%08x LR=0x%08x CTR=0x%08x XER=0x%08x "
|
|
2932 | 2934 |
"MSR=0x%08x\n", env->nip, env->lr, env->ctr, |
2933 | 2935 |
_load_xer(env), _load_msr(env)); |
2934 | 2936 |
for (i = 0; i < 32; i++) { |
2935 | 2937 |
if ((i & 7) == 0) |
2936 |
fprintf(f, "GPR%02d:", i); |
|
2937 |
fprintf(f, " %08x", env->gpr[i]); |
|
2938 |
cpu_fprintf(f, "GPR%02d:", i);
|
|
2939 |
cpu_fprintf(f, " %08x", env->gpr[i]);
|
|
2938 | 2940 |
if ((i & 7) == 7) |
2939 |
fprintf(f, "\n"); |
|
2941 |
cpu_fprintf(f, "\n");
|
|
2940 | 2942 |
} |
2941 |
fprintf(f, "CR: 0x"); |
|
2943 |
cpu_fprintf(f, "CR: 0x");
|
|
2942 | 2944 |
for (i = 0; i < 8; i++) |
2943 |
fprintf(f, "%01x", env->crf[i]); |
|
2944 |
fprintf(f, " ["); |
|
2945 |
cpu_fprintf(f, "%01x", env->crf[i]);
|
|
2946 |
cpu_fprintf(f, " [");
|
|
2945 | 2947 |
for (i = 0; i < 8; i++) { |
2946 | 2948 |
char a = '-'; |
2947 | 2949 |
if (env->crf[i] & 0x08) |
... | ... | |
2950 | 2952 |
a = 'G'; |
2951 | 2953 |
else if (env->crf[i] & 0x02) |
2952 | 2954 |
a = 'E'; |
2953 |
fprintf(f, " %c%c", a, env->crf[i] & 0x01 ? 'O' : ' '); |
|
2955 |
cpu_fprintf(f, " %c%c", a, env->crf[i] & 0x01 ? 'O' : ' ');
|
|
2954 | 2956 |
} |
2955 |
fprintf(f, " ] "); |
|
2956 |
fprintf(f, "TB: 0x%08x %08x\n", cpu_ppc_load_tbu(env), |
|
2957 |
cpu_fprintf(f, " ] ");
|
|
2958 |
cpu_fprintf(f, "TB: 0x%08x %08x\n", cpu_ppc_load_tbu(env),
|
|
2957 | 2959 |
cpu_ppc_load_tbl(env)); |
2958 | 2960 |
for (i = 0; i < 16; i++) { |
2959 | 2961 |
if ((i & 3) == 0) |
2960 |
fprintf(f, "FPR%02d:", i); |
|
2961 |
fprintf(f, " %016llx", *((uint64_t *)&env->fpr[i])); |
|
2962 |
cpu_fprintf(f, "FPR%02d:", i);
|
|
2963 |
cpu_fprintf(f, " %016llx", *((uint64_t *)&env->fpr[i]));
|
|
2962 | 2964 |
if ((i & 3) == 3) |
2963 |
fprintf(f, "\n"); |
|
2965 |
cpu_fprintf(f, "\n");
|
|
2964 | 2966 |
} |
2965 |
fprintf(f, "SRR0 0x%08x SRR1 0x%08x DECR=0x%08x\n", |
|
2967 |
cpu_fprintf(f, "SRR0 0x%08x SRR1 0x%08x DECR=0x%08x\n",
|
|
2966 | 2968 |
env->spr[SRR0], env->spr[SRR1], cpu_ppc_load_decr(env)); |
2967 |
fprintf(f, "reservation 0x%08x\n", env->reserve); |
|
2968 |
fflush(f); |
|
2969 |
cpu_fprintf(f, "reservation 0x%08x\n", env->reserve); |
|
2969 | 2970 |
} |
2970 | 2971 |
|
2971 | 2972 |
#if !defined(CONFIG_USER_ONLY) && defined (USE_OPENFIRMWARE) |
... | ... | |
3170 | 3171 |
#ifdef DEBUG_DISAS |
3171 | 3172 |
if (loglevel & CPU_LOG_TB_CPU) { |
3172 | 3173 |
fprintf(logfile, "---------------- excp: %04x\n", ctx.exception); |
3173 |
cpu_ppc_dump_state(env, logfile, 0);
|
|
3174 |
cpu_dump_state(env, logfile, fprintf, 0);
|
|
3174 | 3175 |
} |
3175 | 3176 |
if (loglevel & CPU_LOG_TB_IN_ASM) { |
3176 | 3177 |
fprintf(logfile, "IN: %s\n", lookup_symbol((void *)pc_start)); |
Also available in: Unified diff