aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2024-04-16 21:27:56 -0700
committerRichard Henderson <richard.henderson@linaro.org>2024-05-15 10:03:45 +0200
commit12959fcdcf87dd97aabf844f57329d46e9c54da3 (patch)
tree7aa9fdd8ae6ce7d1c0c5f8b011531d186f239915
parent6dd9b145f65ea425b220426f276b9074bbd429fa (diff)
downloadqemu-12959fcdcf87dd97aabf844f57329d46e9c54da3.zip
qemu-12959fcdcf87dd97aabf844f57329d46e9c54da3.tar.gz
qemu-12959fcdcf87dd97aabf844f57329d46e9c54da3.tar.bz2
target/hppa: Log cpu state at interrupt
This contains all of the information logged before, plus more. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--target/hppa/int_helper.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/target/hppa/int_helper.c b/target/hppa/int_helper.c
index b82f32f..391f32f 100644
--- a/target/hppa/int_helper.c
+++ b/target/hppa/int_helper.c
@@ -241,21 +241,22 @@ void hppa_cpu_do_interrupt(CPUState *cs)
[EXCP_SYSCALL_LWS] = "syscall-lws",
[EXCP_TOC] = "TOC (transfer of control)",
};
- static int count;
- const char *name = NULL;
- char unknown[16];
- if (i >= 0 && i < ARRAY_SIZE(names)) {
- name = names[i];
- }
- if (!name) {
- snprintf(unknown, sizeof(unknown), "unknown %d", i);
- name = unknown;
+ FILE *logfile = qemu_log_trylock();
+ if (logfile) {
+ const char *name = NULL;
+
+ if (i >= 0 && i < ARRAY_SIZE(names)) {
+ name = names[i];
+ }
+ if (name) {
+ fprintf(logfile, "INT: cpu %d %s\n", cs->cpu_index, name);
+ } else {
+ fprintf(logfile, "INT: cpu %d unknown %d\n", cs->cpu_index, i);
+ }
+ hppa_cpu_dump_state(cs, logfile, 0);
+ qemu_log_unlock(logfile);
}
- qemu_log("INT %6d: %s @ " TARGET_FMT_lx ":" TARGET_FMT_lx
- " for " TARGET_FMT_lx ":" TARGET_FMT_lx "\n",
- ++count, name, env->cr[CR_IIASQ], env->cr[CR_IIAOQ],
- env->cr[CR_ISR], env->cr[CR_IOR]);
}
cs->exception_index = -1;
}