Просмотр исходного кода

* data order for doubles in int registers on wince fixed

git-svn-id: trunk@1171 -
florian 20 лет назад
Родитель
Сommit
5a2b5a50a4
1 измененных файлов с 10 добавлено и 1 удалено
  1. 10 1
      compiler/arm/cpupara.pas

+ 10 - 1
compiler/arm/cpupara.pas

@@ -275,7 +275,7 @@ unit cpupara;
                end;
 
              paralen:=tcgsize2size[paracgsize];
-            hp.paraloc[side].intsize:=paralen;
+             hp.paraloc[side].intsize:=paralen;
 {$ifdef EXTDEBUG}
              if paralen=0 then
                internalerror(200410311);
@@ -376,6 +376,15 @@ unit cpupara;
                    end;
                  dec(paralen,tcgsize2size[paraloc^.size]);
                end;
+             { hack to swap doubles in int registers }
+             if is_double(hp.vartype.def) and (paracgsize=OS_64) and
+               (hp.paraloc[side].location^.loc=LOC_REGISTER) then
+               begin
+                 paraloc:=hp.paraloc[side].location;
+                 hp.paraloc[side].location:=hp.paraloc[side].location^.next;
+                 hp.paraloc[side].location^.next:=paraloc;
+                 paraloc^.next:=nil;
+               end;
           end;
         curintreg:=nextintreg;
         curfloatreg:=nextfloatreg;