Browse Source

m68k: fixed initial offset adjustment for the unaligned store

git-svn-id: trunk@33860 -
Károly Balogh 9 years ago
parent
commit
a561ffe836
1 changed files with 2 additions and 2 deletions
  1. 2 2
      compiler/m68k/cgcpu.pas

+ 2 - 2
compiler/m68k/cgcpu.pas

@@ -792,7 +792,7 @@ unit cgcpu;
 
         tmpreg2:=getaddressregister(list);
         tmpref:=ref;
-        inc(tmpref.offset,tcgsize2size[tosize]);
+        inc(tmpref.offset,tcgsize2size[tosize]-1);
         a_loadaddr_ref_reg(list,ref,tmpreg2);
         reference_reset_base(tmpref,tmpreg2,0,1);
         tmpref.direction:=dir_none;
@@ -811,8 +811,8 @@ unit cgcpu;
           OS_32,OS_S32:
             begin
               list.concat(taicpu.op_reg_ref(A_MOVE,S_B,tmpreg,tmpref));
-              tmpref.direction:=dir_dec;
               list.concat(taicpu.op_const_reg(A_LSR,S_W,8,tmpreg));
+              tmpref.direction:=dir_dec;
               list.concat(taicpu.op_reg_ref(A_MOVE,S_B,tmpreg,tmpref));
               list.concat(taicpu.op_reg(A_SWAP,S_L,tmpreg));
               list.concat(taicpu.op_reg_ref(A_MOVE,S_B,tmpreg,tmpref));