mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 15:13:41 +02:00
* calculate para_offset for interrupt procedures
This commit is contained in:
parent
d380bdfec1
commit
51a1677da5
@ -569,6 +569,16 @@ begin
|
||||
aktprocsym^.definition^.extnumber:=get_intconst;
|
||||
end;
|
||||
|
||||
procedure pd_interrupt(const procnames:Tstringcontainer);
|
||||
begin
|
||||
{$ifndef i386}
|
||||
Message(parser_w_proc_interrupt_ignored);
|
||||
{$else i386}
|
||||
if lexlevel<>normal_function_level then
|
||||
Message(parser_e_dont_nest_interrupt);
|
||||
{$endif i386}
|
||||
end;
|
||||
|
||||
procedure pd_system(const procnames:Tstringcontainer);
|
||||
begin
|
||||
aktprocsym^.definition^.setmangledname(realname);
|
||||
@ -949,7 +959,7 @@ const
|
||||
),(
|
||||
idtok:_INTERRUPT;
|
||||
pd_flags : pd_implemen+pd_body;
|
||||
handler : nil;
|
||||
handler : {$ifndef TP}@{$endif}pd_interrupt;
|
||||
pocall : [];
|
||||
pooption : [po_interrupt];
|
||||
mutexclpocall : [pocall_internproc,pocall_cdecl,pocall_clearstack,pocall_leftright,pocall_inline];
|
||||
@ -1948,6 +1958,16 @@ begin
|
||||
changed by check_identical (PFV) }
|
||||
procinfo^.returntype.def:=aktprocsym^.definition^.rettype.def;
|
||||
|
||||
{$ifdef i386}
|
||||
if (po_interrupt in aktprocsym^.definition^.procoptions) then
|
||||
begin
|
||||
{ we push Flags and CS as long
|
||||
to cope with the IRETD
|
||||
and we save 6 register + 4 selectors }
|
||||
inc(procinfo^.para_offset,8+6*4+4*2);
|
||||
end;
|
||||
{$endif i386}
|
||||
|
||||
{ pointer to the return value ? }
|
||||
if ret_in_param(procinfo^.returntype.def) then
|
||||
begin
|
||||
@ -2016,7 +2036,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.59 2000-04-26 08:54:19 pierre
|
||||
Revision 1.60 2000-05-09 14:19:08 pierre
|
||||
* calculate para_offset for interrupt procedures
|
||||
|
||||
Revision 1.59 2000/04/26 08:54:19 pierre
|
||||
* More changes for operator bug
|
||||
Order_overloaded method removed because it conflicted with
|
||||
new implementation where the defs are ordered
|
||||
|
Loading…
Reference in New Issue
Block a user