Browse Source

* fix tcgavr.g_flags2reg for sizes > 1 byte

git-svn-id: trunk@42938 -
florian 5 years ago
parent
commit
9e5cbce6be
1 changed files with 9 additions and 0 deletions
  1. 9 0
      compiler/avr/cgcpu.pas

+ 9 - 0
compiler/avr/cgcpu.pas

@@ -1761,6 +1761,8 @@ unit cgcpu;
       var
       var
         l : TAsmLabel;
         l : TAsmLabel;
         tmpflags : TResFlags;
         tmpflags : TResFlags;
+        i: Integer;
+        hreg: TRegister;
       begin
       begin
         current_asmdata.getjumplabel(l);
         current_asmdata.getjumplabel(l);
         {
         {
@@ -1776,6 +1778,13 @@ unit cgcpu;
         }
         }
           begin
           begin
             list.concat(taicpu.op_reg_const(A_LDI,reg,1));
             list.concat(taicpu.op_reg_const(A_LDI,reg,1));
+            hreg:=reg;
+            for i:=2 to tcgsize2size[size] do
+              begin
+                hreg:=GetNextReg(hreg);
+                emit_mov(list,hreg,NR_R1);
+              end;
+
             a_jmp_flags(list,f,l);
             a_jmp_flags(list,f,l);
             emit_mov(list,reg,NR_R1);
             emit_mov(list,reg,NR_R1);
           end;
           end;