fpc/tests/webtbs/tw11563.pp
Jonas Maebe bb9e962490 * fixed procvar parameter passing on ppc/sysv (by value instead of by
reference -- except for method procvars, for tmethod record compatibility)
  * adapted tw11563 for corrected calling convention

git-svn-id: trunk@12475 -
2009-01-02 15:36:27 +00:00

46 lines
862 B
ObjectPascal

{ %target=linux}
{ %result=216 }
program ExecStack;
procedure DoIt;
type
proc = procedure;
var
{$if defined(cpupowerpc) or defined(cpupowerpc64)}
ret: longint;
{$endif}
{$if defined(cpui386) or defined(cpux86_64)}
ret: Byte;
{$endif}
{$ifdef cpuarm}
'add arm code to test stack execution'
{$endif}
DoNothing: proc;
begin
{$if defined(cpupowerpc) or defined(cpupowerpc64)}
ret := ($4e shl 24) or ($80 shl 16) or ($00 shl 8) or $20;
{$if defined(cpupowerpc64)}
{ can't use proc(@ret) because linux/ppc64 always expects some kind of
trampoline
}
asm
la r0, ret
mtctr r0
bctrl
end;
{$else}
DoNothing := proc(@ret);
DoNothing;
{$endif}
{$endif}
{$if defined(cpui386) or defined(cpux86_64)}
ret := $C3;
DoNothing := proc(@ret);
DoNothing;
{$endif}
end;
begin
DoIt;
end.