From f5232543f56cac048a8df5d7ce8ff45e162f4f5d Mon Sep 17 00:00:00 2001 From: David Guillen Fandos Date: Sun, 15 Aug 2021 22:48:43 +0200 Subject: [PATCH] Improve tracing prints --- arm/arm_emit.h | 14 +++++++++----- psp/mips_emit.h | 14 +++++++++----- x86/x86_emit.h | 24 ++++++++++++------------ 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/arm/arm_emit.h b/arm/arm_emit.h index b9ded10..b0e88aa 100644 --- a/arm/arm_emit.h +++ b/arm/arm_emit.h @@ -1229,22 +1229,26 @@ u32 execute_store_cpsr_body(u32 _cpsr, u32 store_mask, u32 address) } #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(); \ ARM_STMDB_WB(0, ARMREG_SP, 0x500C); \ arm_load_imm_32bit(reg_a0, pc); \ + arm_load_imm_32bit(reg_a1, mode); \ generate_function_call(trace_instruction); \ ARM_LDMIA_WB(0, ARMREG_SP, 0x500C); \ generate_restore_flags(); #define emit_trace_thumb_instruction(pc) \ - emit_trace_instruction(pc) + emit_trace_instruction(pc, 0) #define emit_trace_arm_instruction(pc) \ - emit_trace_instruction(pc) + emit_trace_instruction(pc, 1) #else #define emit_trace_thumb_instruction(pc) #define emit_trace_arm_instruction(pc) diff --git a/psp/mips_emit.h b/psp/mips_emit.h index 1e6c635..7282610 100644 --- a/psp/mips_emit.h +++ b/psp/mips_emit.h @@ -2346,19 +2346,23 @@ u32 execute_store_cpsr_body(u32 _cpsr, u32 store_mask, u32 address) generate_function_call(mips_cheat_hook); #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); \ generate_load_imm(reg_a0, pc); \ + generate_load_imm(reg_a1, mode); \ genccall(&trace_instruction); \ mips_emit_nop(); \ emit_restore_regs(false) - #define emit_trace_thumb_instruction(pc) emit_trace_instruction(pc) - #define emit_trace_arm_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, 1) #else #define emit_trace_thumb_instruction(pc) #define emit_trace_arm_instruction(pc) diff --git a/x86/x86_emit.h b/x86/x86_emit.h index 8e11488..98b93df 100644 --- a/x86/x86_emit.h +++ b/x86/x86_emit.h @@ -529,22 +529,22 @@ typedef enum generate_mov(ireg, rv) \ #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) \ - x86_emit_push_reg(eax); \ - x86_emit_push_reg(ecx); \ - x86_emit_push_reg(edx); \ - 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_instruction(pc, mode) \ + x86_emit_mov_reg_imm(reg_a0, pc); \ + x86_emit_mov_reg_imm(reg_a1, mode); \ + generate_function_call(trace_instruction); #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 #define emit_trace_thumb_instruction(pc) #define emit_trace_arm_instruction(pc)