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