summaryrefslogtreecommitdiff
path: root/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p')
-rw-r--r--sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p67
1 files changed, 67 insertions, 0 deletions
diff --git a/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p
new file mode 100644
index 0000000..2d7ddb0
--- /dev/null
+++ b/sdk/recipes/patches/spidermonkey/arm-unknown-riscos-1.8.5/MethodJIT.p
@@ -0,0 +1,67 @@
+--- js/src/methodjit/MethodJIT.cpp 2012-12-10 19:03:08.000000000 +0000
++++ js/src/methodjit/MethodJIT.cpp 2012-12-10 19:04:11.000000000 +0000
+@@ -433,7 +433,7 @@
+ "ldr r1, [r11, #24]" "\n" /* fp->rval data */
+ "ldr r2, [r11, #28]" "\n" /* fp->rval type */
+ "ldr r11, [sp, #28]" "\n" /* load f.fp */
+- "bx lr" "\n"
++ "mov pc, lr" "\n"
+ );
+
+ asm volatile (
+@@ -487,12 +487,12 @@
+ " mov r11, r1" "\n"
+
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(SetVMFrameRegs) "\n"
++" bl " SYMBOL_STRING_VMFRAME(SetVMFrameRegs) "\n"
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PushActiveVMFrame)"\n"
++" bl " SYMBOL_STRING_VMFRAME(PushActiveVMFrame)"\n"
+
+ /* Call the compiled JavaScript function. */
+-" bx r4" "\n"
++" mov pc, r4" "\n"
+ );
+
+ asm volatile (
+@@ -505,7 +505,7 @@
+
+ /* Tidy up. */
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
++" bl " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
+
+ /* Skip past the parameters we pushed (such as cx and the like). */
+ " add sp, sp, #(4*7 + 4*4)" "\n"
+@@ -524,17 +524,17 @@
+ " mov r0, sp" "\n"
+
+ /* Call the utility function that sets up the internal throw routine. */
+-" blx " SYMBOL_STRING_RELOC(js_InternalThrow) "\n"
++" bl " SYMBOL_STRING_RELOC(js_InternalThrow) "\n"
+
+ /* If js_InternalThrow found a scripted handler, jump to it. Otherwise, tidy
+ * up and return. */
+ " cmp r0, #0" "\n"
+ " it ne" "\n"
+-" bxne r0" "\n"
++" movne pc, r0" "\n"
+
+ /* Tidy up, then return '0' to represent an unhandled exception. */
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
++" bl " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
+ " add sp, sp, #(4*7 + 4*4)" "\n"
+ " mov r0, #0" "\n"
+ " pop {r4-r11,pc}" "\n"
+@@ -551,7 +551,8 @@
+ * The arguments are identical to those for js_* except that the target function should be in
+ * 'ip'. */
+ " push {ip,lr}" "\n"
+-" blx ip" "\n"
++" mov lr, pc" "\n"
++" mov pc, ip" "\n"
+ " pop {ip,pc}" "\n"
+ );
+