Author: zoltan
Date: 2008-01-25 21:49:26 -0500 (Fri, 25 Jan 2008)
New Revision: 93972

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/mini-arm.c
Log:
2008-01-26  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-arm.c (arm_patch): Add support for patching the blx calling 
sequence.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2008-01-26 02:00:52 UTC (rev 93971)
+++ trunk/mono/mono/mini/ChangeLog      2008-01-26 02:49:26 UTC (rev 93972)
@@ -1,3 +1,7 @@
+2008-01-26  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * mini-arm.c (arm_patch): Add support for patching the blx calling 
sequence.
+
 2008-01-25  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * cpu-*.md: Get rid of unused opcodes.

Modified: trunk/mono/mono/mini/mini-arm.c
===================================================================
--- trunk/mono/mono/mini/mini-arm.c     2008-01-26 02:00:52 UTC (rev 93971)
+++ trunk/mono/mono/mini/mini-arm.c     2008-01-26 02:49:26 UTC (rev 93972)
@@ -1908,6 +1908,24 @@
                        return;
                }
                g_assert_not_reached ();
+       } else if ((ins & 0x0ffffff0) == 0x12fff30) {
+               /*
+                * ldr ip, [pc, #0]
+                * b 0xc
+                * .word code_ptr
+                * blx ip
+                */
+               guint32 ccode [4];
+               guint8 *emit = (guint8*)ccode;
+               ARM_LDR_IMM (emit, ARMREG_IP, ARMREG_PC, 0);
+               ARM_B (emit, 0);
+               ARM_BLX_REG (emit, ARMREG_IP);
+
+               g_assert (code32 [-3] == ccode [0]);
+               g_assert (code32 [-2] == ccode [1]);
+               g_assert (code32 [0] == ccode [2]);
+
+               code32 [-1] = (guint32)target;
        } else {
                guint32 ccode [4];
                guint32 *tmp = ccode;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to