+ get_caller_addr/frame implemented

This commit is contained in:
florian 2004-01-21 23:12:07 +00:00
parent e46d6d2f91
commit a6589cbab1

View File

@ -29,33 +29,27 @@ end;
{$define FPC_SYSTEM_HAS_GET_FRAME} {$define FPC_SYSTEM_HAS_GET_FRAME}
function get_frame:pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} function get_frame:pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif}
asm asm
mov r0,fp mov r0,r11
end ['R0']; end ['R0'];
{$define FPC_SYSTEM_HAS_GET_CALLER_ADDR} {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
function get_caller_addr(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} function get_caller_addr(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif}
asm asm
(*!!!!!! movs r0,r0
movl framebp,%eax beq .Lg_a_null
orl %eax,%eax ldr r0,[r0,#-4]
jz .Lg_a_null
movl 4(%eax),%eax
.Lg_a_null: .Lg_a_null:
*)
end ['R0']; end ['R0'];
{$define FPC_SYSTEM_HAS_GET_CALLER_FRAME} {$define FPC_SYSTEM_HAS_GET_CALLER_FRAME}
function get_caller_frame(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif} function get_caller_frame(framebp:pointer):pointer;assembler;{$ifdef SYSTEMINLINE}inline;{$endif}
asm asm
(*!!!!! movs r0,r0
movl framebp,%eax beq .Lgnf_null
orl %eax,%eax ldr r0,[r0,#-12]
jz .Lgnf_null
movl (%eax),%eax
.Lgnf_null: .Lgnf_null:
*)
end ['R0']; end ['R0'];
@ -123,7 +117,10 @@ end;
{ {
$Log$ $Log$
Revision 1.4 2004-01-20 21:01:57 florian Revision 1.5 2004-01-21 23:12:07 florian
+ get_caller_addr/frame implemented
Revision 1.4 2004/01/20 21:01:57 florian
* fixed setjump * fixed setjump
* fixed syscalls * fixed syscalls