diff options
author | Camil Staps | 2016-12-12 22:44:27 +0000 |
---|---|---|
committer | Camil Staps | 2016-12-12 22:44:27 +0000 |
commit | f84266308e471ca584ac9d98d2b551857e70b8e2 (patch) | |
tree | db2aedfffc479cd4f48eff62120faf6dbbe73922 | |
parent | Made ARMv8 IT corrections optional (diff) |
The jsr code assumes wide instructions for offset calculation
-rw-r--r-- | cgthumb2was.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/cgthumb2was.c b/cgthumb2was.c index 49021bc..0fc9440 100644 --- a/cgthumb2was.c +++ b/cgthumb2was.c @@ -1641,11 +1641,11 @@ static void w_as_jsr_instruction (struct instruction *instruction) switch (instruction->instruction_parameters[1].parameter_type){ case P_INDIRECT_WITH_UPDATE: w_as_instruction_without_parameters (".align"); - w_as_opcode ("add"); + w_as_opcode ("add.w"); w_as_register_comma (REGISTER_S1); fprintf (assembly_file,"pc,#7"); w_as_newline_after_instruction(); - w_as_opcode ("str"); + w_as_opcode ("str.w"); w_as_register_comma (REGISTER_S1); fprintf (assembly_file,"[sp,#%d]!",instruction->instruction_parameters[1].parameter_offset); w_as_newline_after_instruction(); @@ -1661,7 +1661,7 @@ static void w_as_jsr_instruction (struct instruction *instruction) if (instruction->instruction_parameters[1].parameter_type==P_INDIRECT_WITH_UPDATE || instruction->instruction_parameters[1].parameter_type==P_INDIRECT) { w_as_instruction_without_parameters (".align"); - w_as_opcode ("add"); + w_as_opcode ("add.w"); w_as_register_comma (scratch); fprintf (assembly_file,"pc,#%d", instruction->instruction_parameters[0].parameter_type==P_REGISTER ? 7 : 9); @@ -1670,13 +1670,13 @@ static void w_as_jsr_instruction (struct instruction *instruction) switch (instruction->instruction_parameters[1].parameter_type){ case P_INDIRECT_WITH_UPDATE: - w_as_opcode ("str"); + w_as_opcode ("str.w"); w_as_register_comma (scratch); fprintf (assembly_file,"[sp,#%d]!",instruction->instruction_parameters[1].parameter_offset); w_as_newline_after_instruction(); break; case P_INDIRECT: - w_as_opcode ("str"); + w_as_opcode ("str.w"); w_as_register_comma (scratch); fprintf (assembly_file,"[sp,#%d]",instruction->instruction_parameters[1].parameter_offset); w_as_newline_after_instruction(); |