Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=81052 --- shadow/81052 2007-03-06 12:37:45.000000000 -0500 +++ shadow/81052.tmp.23397 2007-03-06 12:37:45.000000000 -0500 @@ -0,0 +1,52 @@ +Bug#: 81052 +Product: Mono: Runtime +Version: 1.2 +OS: +OS Details: +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: JIT +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: [PATCH] wrong code generation because of endian problems on mipsel + +mini-mips.c has a bug in function patch_lui_addiu: + +This patch works for me: + +--- mono-1.2.20070131/mono/mini/mini-mips.c 2007-01-31 +07:00:22.000000000 +0100 ++++ mono-1.2.20070131.mod/mono/mini/mini-mips.c 2007-02-17 +21:22:34.000000000 +0100 +@@ -238,6 +238,11 @@ + patch_lui_addiu(guint32 *ip, guint32 val) + { + guint16 *__lui_addiu = (guint16*)(void *)(ip); ++#if G_BYTE_ORDER == G_BIG_ENDIAN ++ int index=1; ++#else ++ int index=0; ++#endif + + #if 0 + printf ("patch_lui_addiu ip=0x%08x (0x%08x, 0x%08x) to point to +0x%08x\n", +@@ -245,10 +250,10 @@ + fflush (stdout); + #endif + if (((guint32)(val)) & (1 << 15)) +- __lui_addiu [1] = ((((guint32)(val)) >> 16) & 0xffff) + 1; ++ __lui_addiu [index] = ((((guint32)(val)) >> 16) & 0xffff) + 1; + else +- __lui_addiu [1] = (((guint32)(val)) >> 16) & 0xffff; +- __lui_addiu [3] = ((guint32)(val)) & 0xffff; ++ __lui_addiu [index] = (((guint32)(val)) >> 16) & 0xffff; ++ __lui_addiu [index+2] = ((guint32)(val)) & 0xffff; + mono_arch_flush_icache ((guint8 *)ip, 8); + } _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
