From 2279e51a953453ca4be544d20b870f4f799e63a2 Mon Sep 17 00:00:00 2001
From: nickysn <nickysn@gmail.com>
Date: Sun, 9 Jun 2013 10:24:06 +0000
Subject: [PATCH] + added trefaddr.addr_far for emitting far calls

git-svn-id: trunk@24826 -
---
 compiler/cgbase.pas       | 1 +
 compiler/x86/agx86nsm.pas | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas
index dcaf96c12e..9ec3c5ee57 100644
--- a/compiler/cgbase.pas
+++ b/compiler/cgbase.pas
@@ -99,6 +99,7 @@ interface
          {$ENDIF}
          {$IFDEF i8086}
          ,addr_dgroup      // the data segment group
+         ,addr_far         // used for emitting 'call far' or 'jmp far' instructions
          {$ENDIF}
          );
 
diff --git a/compiler/x86/agx86nsm.pas b/compiler/x86/agx86nsm.pas
index f5feff4016..8034e9a1a7 100644
--- a/compiler/x86/agx86nsm.pas
+++ b/compiler/x86/agx86nsm.pas
@@ -382,7 +382,10 @@ interface
                   asmwrite('dword ');
 {$endif i386}
 {$ifdef i8086}
-                  asmwrite('word ');
+                  if o.ref^.refaddr=addr_far then
+                    asmwrite('far ')
+                  else
+                    asmwrite('word ');
 {$endif i8086}
                   if assigned(o.ref^.symbol) then
                    begin