浏览代码

* Applied patch to fix issue with far call for sparc (bug #11312).

git-svn-id: trunk@10988 -
mazen 17 年之前
父节点
当前提交
dec0ba97b0
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8 1
      compiler/sparc/cgcpu.pas

+ 8 - 1
compiler/sparc/cgcpu.pas

@@ -1350,7 +1350,14 @@ implementation
             list.concat(taicpu.op_reg(A_JMP,NR_L1));
           end
         else
-          list.concat(taicpu.op_sym(A_BA,current_asmdata.RefAsmSymbol(procdef.mangledname)));
+          begin
+            reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0);
+            href.refaddr := addr_hi;
+            list.concat(taicpu.op_ref_reg(A_SETHI,href,NR_L1));
+            href.refaddr := addr_lo;
+            list.concat(taicpu.op_reg_ref_reg(A_OR,NR_G0,href,NR_L1));
+            list.concat(taicpu.op_reg(A_JMP,NR_L1));
+          end;
         { Delay slot }
         list.Concat(TAiCpu.Op_none(A_NOP));