소스 검색

* fixed spilling of fpu registers

git-svn-id: trunk@2090 -
Jonas Maebe 19 년 전
부모
커밋
41d6d85084
1개의 변경된 파일16개의 추가작업 그리고 2개의 파일을 삭제
  1. 16 2
      compiler/powerpc/aasmcpu.pas

+ 16 - 2
compiler/powerpc/aasmcpu.pas

@@ -397,13 +397,27 @@ uses cutils, cclasses;
 
     function spilling_create_load(const ref:treference;r:tregister): tai;
       begin
-        result:=taicpu.op_reg_ref(A_LWZ,r,ref);
+        case getregtype(r) of
+          R_INTREGISTER:
+            result:=taicpu.op_reg_ref(A_LWZ,r,ref);
+          R_FPUREGISTER:
+            result:=taicpu.op_reg_ref(A_LFD,r,ref);
+          else
+            internalerror(2005123101);
+        end;
       end;
 
 
     function spilling_create_store(r:tregister; const ref:treference): tai;
       begin
-        result:=taicpu.op_reg_ref(A_STW,r,ref);
+        case getregtype(r) of
+          R_INTREGISTER:
+            result:=taicpu.op_reg_ref(A_STW,r,ref);
+          R_FPUREGISTER:
+            result:=taicpu.op_reg_ref(A_STFD,r,ref);
+          else
+            internalerror(2005123102);
+        end;
       end;