From a28418a331bd5f5cc3d8fafbffc085d187fa8251 Mon Sep 17 00:00:00 2001 From: lif <> Date: Sun, 17 Dec 2023 03:55:45 -0800 Subject: [PATCH] may as well preempt the vr4300 mul bug --- mips/mips_codegen.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mips/mips_codegen.h b/mips/mips_codegen.h index 36f6e27..7fec123 100644 --- a/mips/mips_codegen.h +++ b/mips/mips_codegen.h @@ -267,12 +267,28 @@ typedef enum #define mips_emit_mtlo(rs) \ mips_emit_special(mtlo, rs, 0, 0, 0) \ +#ifdef NINTENDO64 + +// "VR4300 multiplication bug", aka mips64-gcc -mfix4300 + +#define mips_emit_mult(rs, rt) \ + mips_emit_special(mult, rs, rt, 0, 0) \ + ;mips_emit_nop(); mips_emit_nop() + +#define mips_emit_multu(rs, rt) \ + mips_emit_special(multu, rs, rt, 0, 0) \ + ;mips_emit_nop(); mips_emit_nop() + +#else + #define mips_emit_mult(rs, rt) \ mips_emit_special(mult, rs, rt, 0, 0) \ #define mips_emit_multu(rs, rt) \ mips_emit_special(multu, rs, rt, 0, 0) \ +#endif + #define mips_emit_div(rs, rt) \ mips_emit_special(div, rs, rt, 0, 0) \