$NetBSD$ --- 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