Revision 7fe48483 target-sparc/translate.c
b/target-sparc/translate.c | ||
---|---|---|
1391 | 1391 |
|
1392 | 1392 |
#define GET_FLAG(a,b) ((env->psr & a)?b:'-') |
1393 | 1393 |
|
1394 |
void cpu_sparc_dump_state(CPUSPARCState * env, FILE * f, int flags) |
|
1394 |
void cpu_dump_state(CPUState *env, FILE *f, |
|
1395 |
int (*cpu_fprintf)(FILE *f, const char *fmt, ...), |
|
1396 |
int flags) |
|
1395 | 1397 |
{ |
1396 | 1398 |
int i, x; |
1397 | 1399 |
|
1398 |
fprintf(f, "pc: 0x%08x npc: 0x%08x\n", (int) env->pc, (int) env->npc); |
|
1399 |
fprintf(f, "General Registers:\n"); |
|
1400 |
cpu_fprintf(f, "pc: 0x%08x npc: 0x%08x\n", (int) env->pc, (int) env->npc);
|
|
1401 |
cpu_fprintf(f, "General Registers:\n");
|
|
1400 | 1402 |
for (i = 0; i < 4; i++) |
1401 |
fprintf(f, "%%g%c: 0x%08x\t", i + '0', env->gregs[i]); |
|
1402 |
fprintf(f, "\n"); |
|
1403 |
cpu_fprintf(f, "%%g%c: 0x%08x\t", i + '0', env->gregs[i]);
|
|
1404 |
cpu_fprintf(f, "\n");
|
|
1403 | 1405 |
for (; i < 8; i++) |
1404 |
fprintf(f, "%%g%c: 0x%08x\t", i + '0', env->gregs[i]); |
|
1405 |
fprintf(f, "\nCurrent Register Window:\n"); |
|
1406 |
cpu_fprintf(f, "%%g%c: 0x%08x\t", i + '0', env->gregs[i]);
|
|
1407 |
cpu_fprintf(f, "\nCurrent Register Window:\n");
|
|
1406 | 1408 |
for (x = 0; x < 3; x++) { |
1407 | 1409 |
for (i = 0; i < 4; i++) |
1408 |
fprintf(f, "%%%c%d: 0x%08x\t", |
|
1410 |
cpu_fprintf(f, "%%%c%d: 0x%08x\t",
|
|
1409 | 1411 |
(x == 0 ? 'o' : (x == 1 ? 'l' : 'i')), i, |
1410 | 1412 |
env->regwptr[i + x * 8]); |
1411 |
fprintf(f, "\n"); |
|
1413 |
cpu_fprintf(f, "\n");
|
|
1412 | 1414 |
for (; i < 8; i++) |
1413 |
fprintf(f, "%%%c%d: 0x%08x\t", |
|
1415 |
cpu_fprintf(f, "%%%c%d: 0x%08x\t",
|
|
1414 | 1416 |
(x == 0 ? 'o' : x == 1 ? 'l' : 'i'), i, |
1415 | 1417 |
env->regwptr[i + x * 8]); |
1416 |
fprintf(f, "\n"); |
|
1418 |
cpu_fprintf(f, "\n");
|
|
1417 | 1419 |
} |
1418 |
fprintf(f, "\nFloating Point Registers:\n"); |
|
1420 |
cpu_fprintf(f, "\nFloating Point Registers:\n");
|
|
1419 | 1421 |
for (i = 0; i < 32; i++) { |
1420 | 1422 |
if ((i & 3) == 0) |
1421 |
fprintf(f, "%%f%02d:", i); |
|
1422 |
fprintf(f, " %016lf", env->fpr[i]); |
|
1423 |
cpu_fprintf(f, "%%f%02d:", i);
|
|
1424 |
cpu_fprintf(f, " %016lf", env->fpr[i]);
|
|
1423 | 1425 |
if ((i & 3) == 3) |
1424 |
fprintf(f, "\n"); |
|
1426 |
cpu_fprintf(f, "\n");
|
|
1425 | 1427 |
} |
1426 |
fprintf(f, "psr: 0x%08x -> %c%c%c%c %c%c%c wim: 0x%08x\n", GET_PSR(env), |
|
1428 |
cpu_fprintf(f, "psr: 0x%08x -> %c%c%c%c %c%c%c wim: 0x%08x\n", GET_PSR(env),
|
|
1427 | 1429 |
GET_FLAG(PSR_ZERO, 'Z'), GET_FLAG(PSR_OVF, 'V'), |
1428 | 1430 |
GET_FLAG(PSR_NEG, 'N'), GET_FLAG(PSR_CARRY, 'C'), |
1429 | 1431 |
env->psrs?'S':'-', env->psrps?'P':'-', |
1430 | 1432 |
env->psret?'E':'-', env->wim); |
1431 |
fprintf(f, "fsr: 0x%08x\n", env->fsr); |
|
1433 |
cpu_fprintf(f, "fsr: 0x%08x\n", env->fsr);
|
|
1432 | 1434 |
} |
1433 | 1435 |
|
1434 | 1436 |
target_ulong cpu_get_phys_page_debug(CPUState *env, target_ulong addr) |
Also available in: Unified diff