Browse Source

* fixed get_caller_frame and get_caller_addr

Jonas Maebe 22 years ago
parent
commit
12f37edaab
1 changed files with 15 additions and 6 deletions
  1. 15 6
      rtl/powerpc/powerpc.inc

+ 15 - 6
rtl/powerpc/powerpc.inc

@@ -799,8 +799,13 @@ end ['R3'];
 {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
 function get_caller_addr(framebp:pointer):pointer;assembler;
 asm
-   {$warning FIX ME!}
-   mr r3,r1
+   cmplwi  r3,0
+   beq     Lcaller_addr_frame_null
+   lwz r3,0(r3)
+   cmplwi  r3,0
+   beq     Lcaller_addr_frame_null
+   lwz r3,4(r3)
+Lcaller_addr_frame_null:
     //     !!!!!!! depends on ABI !!!!!!!!
 end ['R3'];
 
@@ -808,9 +813,10 @@ end ['R3'];
 {$define FPC_SYSTEM_HAS_GET_CALLER_FRAME}
 function get_caller_frame(framebp:pointer):pointer;assembler;
 asm
-    {$warning FIX ME!}
-    mr  r3,r1
-   //     !!!!!!! depends on ABI !!!!!!!!
+    cmplwi  r3,0
+    beq     Lcaller_frame_null
+    lwz  r3,0(r3)
+Lcaller_frame_null:
 end ['R3'];
 
 {$define FPC_SYSTEM_HAS_ABS_LONGINT}
@@ -887,7 +893,10 @@ end ['R3','R10'];
 
 {
   $Log$
-  Revision 1.40  2003-05-10 17:33:06  jonas
+  Revision 1.41  2003-05-10 20:33:39  jonas
+    * fixed get_caller_frame and get_caller_addr
+
+  Revision 1.40  2003/05/10 17:33:06  jonas
     * final (? :) fix to move, passes new tests/test/tmove test
 
   Revision 1.39  2003/05/02 19:03:25  jonas