Improve tracing prints
This commit is contained in:
parent
057b80f8cc
commit
f5232543f5
|
@ -1229,22 +1229,26 @@ u32 execute_store_cpsr_body(u32 _cpsr, u32 store_mask, u32 address)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TRACE_INSTRUCTIONS
|
#ifdef TRACE_INSTRUCTIONS
|
||||||
void trace_instruction(u32 pc)
|
void trace_instruction(u32 pc, u32 mode)
|
||||||
{
|
{
|
||||||
printf("Executed %x\n", pc);
|
if (mode)
|
||||||
|
printf("Executed arm %x\n", pc);
|
||||||
|
else
|
||||||
|
printf("Executed thumb %x\n", pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define emit_trace_instruction(pc) \
|
#define emit_trace_instruction(pc, mode) \
|
||||||
generate_save_flags(); \
|
generate_save_flags(); \
|
||||||
ARM_STMDB_WB(0, ARMREG_SP, 0x500C); \
|
ARM_STMDB_WB(0, ARMREG_SP, 0x500C); \
|
||||||
arm_load_imm_32bit(reg_a0, pc); \
|
arm_load_imm_32bit(reg_a0, pc); \
|
||||||
|
arm_load_imm_32bit(reg_a1, mode); \
|
||||||
generate_function_call(trace_instruction); \
|
generate_function_call(trace_instruction); \
|
||||||
ARM_LDMIA_WB(0, ARMREG_SP, 0x500C); \
|
ARM_LDMIA_WB(0, ARMREG_SP, 0x500C); \
|
||||||
generate_restore_flags();
|
generate_restore_flags();
|
||||||
#define emit_trace_thumb_instruction(pc) \
|
#define emit_trace_thumb_instruction(pc) \
|
||||||
emit_trace_instruction(pc)
|
emit_trace_instruction(pc, 0)
|
||||||
#define emit_trace_arm_instruction(pc) \
|
#define emit_trace_arm_instruction(pc) \
|
||||||
emit_trace_instruction(pc)
|
emit_trace_instruction(pc, 1)
|
||||||
#else
|
#else
|
||||||
#define emit_trace_thumb_instruction(pc)
|
#define emit_trace_thumb_instruction(pc)
|
||||||
#define emit_trace_arm_instruction(pc)
|
#define emit_trace_arm_instruction(pc)
|
||||||
|
|
|
@ -2346,19 +2346,23 @@ u32 execute_store_cpsr_body(u32 _cpsr, u32 store_mask, u32 address)
|
||||||
generate_function_call(mips_cheat_hook);
|
generate_function_call(mips_cheat_hook);
|
||||||
|
|
||||||
#ifdef TRACE_INSTRUCTIONS
|
#ifdef TRACE_INSTRUCTIONS
|
||||||
void trace_instruction(u32 pc)
|
void trace_instruction(u32 pc, u32 mode)
|
||||||
{
|
{
|
||||||
printf("Executed %x\n", pc);
|
if (mode)
|
||||||
|
printf("Executed arm %x\n", pc);
|
||||||
|
else
|
||||||
|
printf("Executed thumb %x\n", pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define emit_trace_instruction(pc) \
|
#define emit_trace_instruction(pc, mode) \
|
||||||
emit_save_regs(false); \
|
emit_save_regs(false); \
|
||||||
generate_load_imm(reg_a0, pc); \
|
generate_load_imm(reg_a0, pc); \
|
||||||
|
generate_load_imm(reg_a1, mode); \
|
||||||
genccall(&trace_instruction); \
|
genccall(&trace_instruction); \
|
||||||
mips_emit_nop(); \
|
mips_emit_nop(); \
|
||||||
emit_restore_regs(false)
|
emit_restore_regs(false)
|
||||||
#define emit_trace_thumb_instruction(pc) emit_trace_instruction(pc)
|
#define emit_trace_thumb_instruction(pc) emit_trace_instruction(pc, 0)
|
||||||
#define emit_trace_arm_instruction(pc) emit_trace_instruction(pc)
|
#define emit_trace_arm_instruction(pc) emit_trace_instruction(pc, 1)
|
||||||
#else
|
#else
|
||||||
#define emit_trace_thumb_instruction(pc)
|
#define emit_trace_thumb_instruction(pc)
|
||||||
#define emit_trace_arm_instruction(pc)
|
#define emit_trace_arm_instruction(pc)
|
||||||
|
|
|
@ -529,22 +529,22 @@ typedef enum
|
||||||
generate_mov(ireg, rv) \
|
generate_mov(ireg, rv) \
|
||||||
|
|
||||||
#ifdef TRACE_INSTRUCTIONS
|
#ifdef TRACE_INSTRUCTIONS
|
||||||
void function_cc trace_instruction(u32 pc)
|
void function_cc trace_instruction(u32 pc, u32 mode)
|
||||||
{
|
{
|
||||||
printf("Executed %x\n", pc);
|
if (mode)
|
||||||
|
printf("Executed arm %x\n", pc);
|
||||||
|
else
|
||||||
|
printf("Executed thumb %x\n", pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define emit_trace_thumb_instruction(pc) \
|
#define emit_trace_instruction(pc, mode) \
|
||||||
x86_emit_push_reg(eax); \
|
x86_emit_mov_reg_imm(reg_a0, pc); \
|
||||||
x86_emit_push_reg(ecx); \
|
x86_emit_mov_reg_imm(reg_a1, mode); \
|
||||||
x86_emit_push_reg(edx); \
|
generate_function_call(trace_instruction);
|
||||||
x86_emit_mov_reg_imm(eax, pc); \
|
|
||||||
generate_function_call(trace_instruction); \
|
|
||||||
x86_emit_pop_reg(edx); \
|
|
||||||
x86_emit_pop_reg(ecx); \
|
|
||||||
x86_emit_pop_reg(eax);
|
|
||||||
#define emit_trace_arm_instruction(pc) \
|
#define emit_trace_arm_instruction(pc) \
|
||||||
emit_trace_thumb_instruction(pc)
|
emit_trace_instruction(pc, 1)
|
||||||
|
#define emit_trace_thumb_instruction(pc) \
|
||||||
|
emit_trace_instruction(pc, 0)
|
||||||
#else
|
#else
|
||||||
#define emit_trace_thumb_instruction(pc)
|
#define emit_trace_thumb_instruction(pc)
|
||||||
#define emit_trace_arm_instruction(pc)
|
#define emit_trace_arm_instruction(pc)
|
||||||
|
|
Loading…
Reference in New Issue