From 0ef6851c63ceeead1dcdbcec31d03b44fede31e3 Mon Sep 17 00:00:00 2001 From: lif <> Date: Sun, 17 Dec 2023 00:25:08 -0800 Subject: [PATCH] fixed endian bug in generate_branch_patch_conditional --- mips/mips_emit.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mips/mips_emit.h b/mips/mips_emit.h index e585269..647aa51 100644 --- a/mips/mips_emit.h +++ b/mips/mips_emit.h @@ -224,9 +224,18 @@ u32 arm_to_mips_reg[] = mips_emit_addiu(reg_cycles, reg_cycles, -cycle_count); \ cycle_count = 0 \ +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + +#define generate_branch_patch_conditional(dest, offset) \ + *(((u16 *)(dest)) + 1) = mips_relative_offset(dest, offset) \ + +#else + #define generate_branch_patch_conditional(dest, offset) \ *((u16 *)(dest)) = mips_relative_offset(dest, offset) \ +#endif + #define generate_branch_patch_unconditional(dest, offset) \ *((u32 *)(dest)) = (mips_opcode_j << 26) | \ ((mips_absolute_offset(offset)) & 0x3FFFFFF) \