$NetBSD: patch-bx,v 1.1 2010/12/19 08:27:17 is Exp $

--- asmcomp/arm/emit.mlp.orig	2010-04-22 09:33:18.000000000 +0000
+++ asmcomp/arm/emit.mlp
@@ -285,7 +285,7 @@ let emit_instr i =
         `	ldr	{emit_reg i.res.(0)}, {emit_label lbl} @ {emit_symbol s}\n`; 1
     | Lop(Icall_ind) ->
         `	mov	lr, pc\n`;
-        `{record_frame i.live}  bx	{emit_reg i.arg.(0)}\n`; 2
+        `{record_frame i.live}  mov	pc, {emit_reg i.arg.(0)}\n`; 2
     | Lop(Icall_imm s) ->
         `{record_frame i.live}  bl      {emit_symbol s}\n`; 1
     | Lop(Itailcall_ind) ->
@@ -293,7 +293,7 @@ let emit_instr i =
         if !contains_calls then
           `	ldr	lr, [sp, #{emit_int (n-4)}]\n`;
         let ninstr = emit_stack_adjustment "add" n in
-        `	bx	{emit_reg i.arg.(0)}\n`;
+        `	mov	pc, {emit_reg i.arg.(0)}\n`;
         2 + ninstr
     | Lop(Itailcall_imm s) ->
         if s = !function_name then begin
@@ -448,7 +448,7 @@ let emit_instr i =
         `	ldr	lr, [sp, #{emit_int(n-4)}]\n`; 1
     | Lreturn ->
         let ninstr = emit_stack_adjustment "add" (frame_size()) in
-        `	bx	lr\n`;
+        `	mov	pc, lr\n`;
         ninstr + 1
     | Llabel lbl ->
         `{emit_label lbl}:\n`; 0
