瀏覽代碼

* fixes safecall on non-win64 x86-64, should solve random rte 229

git-svn-id: trunk@10295 -
florian 17 年之前
父節點
當前提交
e4997eaa45
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      compiler/ncgcal.pas

+ 5 - 1
compiler/ncgcal.pas

@@ -851,6 +851,7 @@ implementation
 {$ifdef vtentry}
         sym : tasmsymbol;
 {$endif vtentry}
+        cgpara : tcgpara;
       begin
          if not assigned(procdefinition) or
             not procdefinition.has_paraloc_info then
@@ -1081,7 +1082,10 @@ implementation
          if procdefinition.proccalloption=pocall_safecall then
            begin
 {$ifdef x86_64}
-             cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,NR_RAX,NR_RCX);
+             cgpara.init;
+             paramanager.getintparaloc(pocall_default,1,cgpara);
+             cg.a_param_reg(current_asmdata.CurrAsmList,OS_ADDR,NR_RAX,cgpara);
+             cgpara.done;          
 {$endif x86_64}
              cg.allocallcpuregisters(current_asmdata.CurrAsmList);
              cg.a_call_name(current_asmdata.CurrAsmList,'FPC_SAFECALLCHECK');