mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 17:49:33 +02:00
52 lines
690 B
ObjectPascal
52 lines
690 B
ObjectPascal
{ %cpu=powerpc,powerpc64 }
|
|
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
|
|
type
|
|
tc = class
|
|
procedure v; virtual;
|
|
procedure test; virtual;
|
|
end;
|
|
|
|
procedure tc.test; assembler;
|
|
asm
|
|
{$ifdef cpu64}
|
|
// for simplicity sake do not bother about setting the GOT and
|
|
// environment pointer correctly
|
|
ld r4,0(r3)
|
|
ld r4,+vmtoffset tc.v(r4)
|
|
{$if defined(linux) or defined(aix)}
|
|
ld r4,0(r4)
|
|
{$endif linux or aix}
|
|
{$else}
|
|
lwz r4,0(r3)
|
|
lwz r4,+vmtoffset tc.v(r4)
|
|
{$if defined(aix)}
|
|
lwz r4,0(r4)
|
|
{$endif aix}
|
|
{$endif}
|
|
mtctr r4
|
|
bctr
|
|
end;
|
|
|
|
var
|
|
l : longint;
|
|
|
|
procedure tc.v;
|
|
begin
|
|
l := 5;
|
|
end;
|
|
|
|
var
|
|
c: tc;
|
|
begin
|
|
c := tc.create;
|
|
c.test;
|
|
if l <> 5 then
|
|
halt(1);
|
|
c.free;
|
|
end.
|
|
|