Browse Source

* emit a far jmp in the interface wrapper on i8086 in far code memory models

git-svn-id: trunk@25812 -
nickysn 11 years ago
parent
commit
83aa50de74
1 changed files with 9 additions and 1 deletions
  1. 9 1
      compiler/i8086/cgcpu.pas

+ 9 - 1
compiler/i8086/cgcpu.pas

@@ -1817,7 +1817,15 @@ unit cgcpu;
         else
           begin
             lab:=current_asmdata.RefAsmSymbol(procdef.mangledname);
-            list.concat(taicpu.op_sym(A_JMP,S_NO,lab))
+
+            if current_settings.x86memorymodel in x86_far_code_models then
+              begin
+                reference_reset_symbol(href,lab,0,sizeof(pint));
+                href.refaddr:=addr_far;
+                list.concat(taicpu.op_ref(A_JMP,S_NO,href));
+              end
+            else
+              list.concat(taicpu.op_sym(A_JMP,S_NO,lab));
           end;
 
         List.concat(Tai_symbol_end.Createname(labelname));