From 10fc5925418b111d58a7e6511d6794878968fa35 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Mon, 19 Sep 2016 16:57:05 +0000 Subject: Fix PC offset when pushing to stack --- cgthumb2was.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cgthumb2was.c b/cgthumb2was.c index d43a5ec..a4c8630 100644 --- a/cgthumb2was.c +++ b/cgthumb2was.c @@ -1483,8 +1483,11 @@ static void w_as_jsr_instruction (struct instruction *instruction) if (instruction->instruction_arity>1) switch (instruction->instruction_parameters[1].parameter_type){ case P_INDIRECT_WITH_UPDATE: + w_as_opcode ("add"); + fprintf (assembly_file,"lr,pc,#9"); + w_as_newline_after_instruction(); w_as_opcode ("str"); - fprintf (assembly_file,"pc,[sp,#%d]!",instruction->instruction_parameters[1].parameter_offset); + fprintf (assembly_file,"lr,[sp,#%d]!",instruction->instruction_parameters[1].parameter_offset); w_as_newline_after_instruction(); } @@ -1493,9 +1496,9 @@ static void w_as_jsr_instruction (struct instruction *instruction) w_as_newline_after_instruction(); } else { if (instruction->instruction_arity>1) - w_as_opcode ("mov"); + w_as_opcode ("add"); w_as_scratch_register_comma(); - fprintf (assembly_file,"pc"); + fprintf (assembly_file,"pc,#9"); w_as_newline_after_instruction(); switch (instruction->instruction_parameters[1].parameter_type){ case P_INDIRECT_WITH_UPDATE: -- cgit v1.2.3