From 74888eaee35c4f010fcab4df7faff0a80180e0bd Mon Sep 17 00:00:00 2001 From: Arceveti Date: Sun, 12 May 2024 03:18:48 -0700 Subject: [PATCH] Fix trap instruction param in pseudo C --- src/crash_screen/util/insn_disasm.c | 10 +++++----- src/crash_screen/util/insn_disasm.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/crash_screen/util/insn_disasm.c b/src/crash_screen/util/insn_disasm.c index b0103e61c..d4e443709 100644 --- a/src/crash_screen/util/insn_disasm.c +++ b/src/crash_screen/util/insn_disasm.c @@ -67,8 +67,8 @@ const InsnParam insn_param_formats[][MIPS_NUM_PARAMS] = { [IFMT_To ] = { PARAM(MP_FT, MP_FMT_F), PARAM(MP_OFF, MP_FMT_I), PARAM_NOP, }, // ft offset(base) [IFMT_dta ] = { PARAM(MP_RD, MP_FMT_I), PARAM(MP_RT, MP_FMT_I), PARAM(MP_SHIFT, MP_FMT_I), }, // rd rt shift - [IFMT_ste ] = { PARAM(MP_RS, MP_FMT_I), PARAM(MP_RT, MP_FMT_I), PARAM(MP_EXCA, MP_FMT_I), }, // rs rt exc10 - [IFMT_E ] = { PARAM(MP_EXCAB, MP_FMT_I), PARAM_NOP, PARAM_NOP, }, // exc20 + [IFMT_ste ] = { PARAM(MP_RS, MP_FMT_I), PARAM(MP_RT, MP_FMT_I), PARAM(MP_EXC10, MP_FMT_I), }, // rs rt exc10 + [IFMT_E ] = { PARAM(MP_EXC20, MP_FMT_I), PARAM_NOP, PARAM_NOP, }, // exc20 [IFMT_stB ] = { PARAM(MP_RS, MP_FMT_I), PARAM(MP_RT, MP_FMT_I), PARAM(MP_B, MP_FMT_I), }, // rs rt branch [IFMT_sB ] = { PARAM(MP_RS, MP_FMT_I), PARAM(MP_B, MP_FMT_I), PARAM_NOP, }, // rs branch @@ -554,11 +554,11 @@ char* cs_insn_to_string(Address addr, InsnData insn, const char** fname, _Bool f ADD_REG(REGS_CP1, insn.fd); separator = TRUE; break; - case MP_EXCA: // For TRAP IF instructions. + case MP_EXC10: // For TRAP IF instructions. ADD_COLOR(COLOR_RGBA32_LIGHT_GRAY); ADD_STR(STR_CODE10, insn.codeB); break; - case MP_EXCAB: // For SYSCALL and BREAK instructions. + case MP_EXC20: // For SYSCALL and BREAK instructions. ADD_COLOR(COLOR_RGBA32_LIGHT_GRAY); if (info->opcode == OPS_BREAK) { u16 eA = insn.codeA; @@ -925,7 +925,7 @@ char* cs_insn_to_pseudo_c(InsnData insn, const char** comment) { } break; case PSC_EXC10: - strp += sprintf(strp, immFmt, insn.codeA); + strp += sprintf(strp, immFmt, insn.codeB); break; case PSC_EXC20: if (info->opcode == OPS_BREAK) { diff --git a/src/crash_screen/util/insn_disasm.h b/src/crash_screen/util/insn_disasm.h index 8580275b2..e61d26332 100644 --- a/src/crash_screen/util/insn_disasm.h +++ b/src/crash_screen/util/insn_disasm.h @@ -68,8 +68,8 @@ typedef enum PACKED MIPSParamID { MP_OFF, // "0x[last 16 bits]([rs reg])". MP_B, // "[±]0x[last 16 bits]" + draw branch arrow. MP_JUMP, // "[function address]" or parse map. - MP_EXCA, // "[0xXXX]" 10-bit data for the exception handler. - MP_EXCAB, // "[0xXXXXX]" 20-bit data for the exception handler. + MP_EXC10, // "[0xXXX]" 10-bit data for the exception handler. + MP_EXC20, // "[0xXXXXX]" 20-bit data for the exception handler. } MIPSParamID;