From 4f95f742f4ec4ceb0f56feeb9611a68838865ea4 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Fri, 25 May 2007 12:01:28 +0000 Subject: [PATCH] * fixed get_caller_frame() and get_caller_addr() for nil addresses git-svn-id: trunk@7470 - --- rtl/sparc/sparc.inc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rtl/sparc/sparc.inc b/rtl/sparc/sparc.inc index b93cb17067..536d1ef095 100644 --- a/rtl/sparc/sparc.inc +++ b/rtl/sparc/sparc.inc @@ -73,21 +73,29 @@ function get_frame:pointer;assembler;nostackframe; function get_caller_addr(framebp:pointer):pointer;assembler;nostackframe; asm { framebp = %o0 } + subcc %o0,0,%o0 + be .Lframezero + nop { flush register windows, so they are stored in the stack } ta 3 ld [%o0+60],%o0 { add 8 to skip jmpl and delay slot } add %o0,8,%o0 +.Lframezero: end; {$define FPC_SYSTEM_HAS_GET_CALLER_FRAME} function get_caller_frame(framebp:pointer):pointer;assembler;nostackframe; asm + { framebp = %o0 } + subcc %o0,0,%o0 + be .Lframezero + nop { flush register windows, so they are stored in the stack } ta 3 - { framebp = %o0 } ld [%o0+56],%o0 +.Lframezero: end;