* treat interrupt procedures as 'near' in the i8086 inline assembler for TP7

compatibility

git-svn-id: trunk@32194 -
This commit is contained in:
nickysn 2015-10-29 22:43:41 +00:00
parent dd9e5ea6f6
commit 9e110e8e7e
2 changed files with 8 additions and 4 deletions

View File

@ -908,7 +908,8 @@ Begin
begin
opr.ref.symbol:=current_asmdata.RefAsmSymbol(tprocdef(tprocsym(sym).ProcdefList[0]).mangledname);
{$ifdef i8086}
opr.ref_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]));
opr.ref_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]))
and not (po_interrupt in tprocdef(tprocsym(sym).ProcdefList[0]).procoptions);
{$endif i8086}
end;
OPR_NONE:
@ -916,7 +917,8 @@ Begin
opr.typ:=OPR_SYMBOL;
opr.symbol:=current_asmdata.RefAsmSymbol(tprocdef(tprocsym(sym).ProcdefList[0]).mangledname);
{$ifdef i8086}
opr.sym_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]));
opr.sym_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]))
and not (po_interrupt in tprocdef(tprocsym(sym).ProcdefList[0]).procoptions);
{$endif i8086}
opr.symofs:=0;
end;

View File

@ -1025,7 +1025,8 @@ Unit Rax86int;
Message(asmr_w_calling_overload_func);
hs:=tprocdef(tprocsym(sym).ProcdefList[0]).mangledname;
{$ifdef i8086}
is_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]));
is_farproc_entry:=is_proc_far(tprocdef(tprocsym(sym).ProcdefList[0]))
and not (po_interrupt in tprocdef(tprocsym(sym).ProcdefList[0]).procoptions);
{$endif i8086}
hssymtyp:=AT_FUNCTION;
end;
@ -2109,7 +2110,8 @@ Unit Rax86int;
current procedure (BP7 compatible) }
else if (instr.opcode=A_RET) then
begin
if is_proc_far(current_procinfo.procdef) then
if is_proc_far(current_procinfo.procdef) and
not (po_interrupt in current_procinfo.procdef.procoptions) then
instr.opcode:=A_RETF
else
instr.opcode:=A_RETN;