tcg: Optionally log FPU state in TCG -d cpu logging
Usually the logging of the CPU state produced by -d cpu is sufficient to diagnose problems, but sometimes you want to see the state of the floating point registers as well. We don't want to enable that by default as it adds a lot of extra data to the log; instead, allow it to be optionally enabled via -d fpu. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180510130024.31678-1-peter.maydell@linaro.org
This commit is contained in:
parent
f6fb1f9b31
commit
ae76518047
@ -156,11 +156,14 @@ static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, TranslationBlock *itb)
|
|||||||
if (qemu_loglevel_mask(CPU_LOG_TB_CPU)
|
if (qemu_loglevel_mask(CPU_LOG_TB_CPU)
|
||||||
&& qemu_log_in_addr_range(itb->pc)) {
|
&& qemu_log_in_addr_range(itb->pc)) {
|
||||||
qemu_log_lock();
|
qemu_log_lock();
|
||||||
|
int flags = 0;
|
||||||
|
if (qemu_loglevel_mask(CPU_LOG_TB_FPU)) {
|
||||||
|
flags |= CPU_DUMP_FPU;
|
||||||
|
}
|
||||||
#if defined(TARGET_I386)
|
#if defined(TARGET_I386)
|
||||||
log_cpu_state(cpu, CPU_DUMP_CCOP);
|
flags |= CPU_DUMP_CCOP;
|
||||||
#else
|
|
||||||
log_cpu_state(cpu, 0);
|
|
||||||
#endif
|
#endif
|
||||||
|
log_cpu_state(cpu, flags);
|
||||||
qemu_log_unlock();
|
qemu_log_unlock();
|
||||||
}
|
}
|
||||||
#endif /* DEBUG_DISAS */
|
#endif /* DEBUG_DISAS */
|
||||||
|
@ -44,6 +44,7 @@ static inline bool qemu_log_separate(void)
|
|||||||
#define CPU_LOG_PAGE (1 << 14)
|
#define CPU_LOG_PAGE (1 << 14)
|
||||||
/* LOG_TRACE (1 << 15) is defined in log-for-trace.h */
|
/* LOG_TRACE (1 << 15) is defined in log-for-trace.h */
|
||||||
#define CPU_LOG_TB_OP_IND (1 << 16)
|
#define CPU_LOG_TB_OP_IND (1 << 16)
|
||||||
|
#define CPU_LOG_TB_FPU (1 << 17)
|
||||||
|
|
||||||
/* Lock output for a series of related logs. Since this is not needed
|
/* Lock output for a series of related logs. Since this is not needed
|
||||||
* for a single qemu_log / qemu_log_mask / qemu_log_mask_and_addr, we
|
* for a single qemu_log / qemu_log_mask / qemu_log_mask_and_addr, we
|
||||||
|
@ -256,6 +256,8 @@ const QEMULogItem qemu_log_items[] = {
|
|||||||
"show trace before each executed TB (lots of logs)" },
|
"show trace before each executed TB (lots of logs)" },
|
||||||
{ CPU_LOG_TB_CPU, "cpu",
|
{ CPU_LOG_TB_CPU, "cpu",
|
||||||
"show CPU registers before entering a TB (lots of logs)" },
|
"show CPU registers before entering a TB (lots of logs)" },
|
||||||
|
{ CPU_LOG_TB_FPU, "fpu",
|
||||||
|
"include FPU registers in the 'cpu' logging" },
|
||||||
{ CPU_LOG_MMU, "mmu",
|
{ CPU_LOG_MMU, "mmu",
|
||||||
"log MMU-related activities" },
|
"log MMU-related activities" },
|
||||||
{ CPU_LOG_PCALL, "pcall",
|
{ CPU_LOG_PCALL, "pcall",
|
||||||
|
Loading…
Reference in New Issue
Block a user