target/sparc/int32_helper: Extract and use excp_name_str()
Improve exception error report: Before: qemu: fatal: Trap 0x06 while interrupts disabled, Error state After: qemu: fatal: Trap 0x06 (Window Underflow) while interrupts disabled, Error state Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: KONRAD Frederic <frederic.konrad@adacore.com> Message-Id: <20200331105048.27989-8-f4bug@amsat.org>
This commit is contained in:
parent
304c1c8aa5
commit
86e8c353f7
@ -57,6 +57,14 @@ static const char * const excp_names[0x80] = {
|
|||||||
[TT_NCP_INSN] = "Coprocessor Disabled",
|
[TT_NCP_INSN] = "Coprocessor Disabled",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *excp_name_str(int32_t exception_index)
|
||||||
|
{
|
||||||
|
if (exception_index < 0 || exception_index >= ARRAY_SIZE(excp_names)) {
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
return excp_names[exception_index];
|
||||||
|
}
|
||||||
|
|
||||||
void sparc_cpu_do_interrupt(CPUState *cs)
|
void sparc_cpu_do_interrupt(CPUState *cs)
|
||||||
{
|
{
|
||||||
SPARCCPU *cpu = SPARC_CPU(cs);
|
SPARCCPU *cpu = SPARC_CPU(cs);
|
||||||
@ -77,10 +85,7 @@ void sparc_cpu_do_interrupt(CPUState *cs)
|
|||||||
} else if (intno >= 0x80) {
|
} else if (intno >= 0x80) {
|
||||||
name = "Trap Instruction";
|
name = "Trap Instruction";
|
||||||
} else {
|
} else {
|
||||||
name = excp_names[intno];
|
name = excp_name_str(intno);
|
||||||
if (!name) {
|
|
||||||
name = "Unknown";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qemu_log("%6d: %s (v=%02x)\n", count, name, intno);
|
qemu_log("%6d: %s (v=%02x)\n", count, name, intno);
|
||||||
@ -106,8 +111,9 @@ void sparc_cpu_do_interrupt(CPUState *cs)
|
|||||||
env->def.features & CPU_FEATURE_TA0_SHUTDOWN) {
|
env->def.features & CPU_FEATURE_TA0_SHUTDOWN) {
|
||||||
qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
|
qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
|
||||||
} else {
|
} else {
|
||||||
cpu_abort(cs, "Trap 0x%02x while interrupts disabled, Error state",
|
cpu_abort(cs, "Trap 0x%02x (%s) while interrupts disabled, "
|
||||||
cs->exception_index);
|
"Error state",
|
||||||
|
cs->exception_index, excp_name_str(cs->exception_index));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user