Fix localloc on MIPS.
authorZoltan Varga <vargaz@gmail.com>
Sat, 24 Dec 2011 13:34:18 +0000 (14:34 +0100)
committerZoltan Varga <vargaz@gmail.com>
Sat, 24 Dec 2011 22:03:21 +0000 (23:03 +0100)
mono/mini/mini-mips.c

index 31bc285604a589d27fe538bb7946af68032bc19e..1c0ea68f1d6d08abf78b7758ccfa71cb5066c1ab 100644 (file)
@@ -4037,11 +4037,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        mips_addiu (code, ins->dreg, mips_sp, area_offset);
 
                        if (ins->flags & MONO_INST_INIT) {
+                               guint32 *buf;
+
+                               buf = (guint32*)(void*)code;
+                               mips_beq (code, mips_at, mips_zero, 0);
+                               mips_nop (code);
+
                                mips_move (code, mips_temp, ins->dreg);
                                mips_sb (code, mips_zero, mips_temp, 0);
                                mips_addiu (code, mips_at, mips_at, -1);
                                mips_bne (code, mips_at, mips_zero, -3);
                                mips_addiu (code, mips_temp, mips_temp, 1);
+
+                               mips_patch (buf, (guint32)code);
                        }
                        break;
                }