فهرست منبع

+ implemented setjmp record and longjmp

florian 22 سال پیش
والد
کامیت
e7130af5a8
2فایلهای تغییر یافته به همراه55 افزوده شده و 5 حذف شده
  1. 49 3
      rtl/powerpc/setjump.inc
  2. 6 2
      rtl/powerpc/setjumph.inc

+ 49 - 3
rtl/powerpc/setjump.inc

@@ -23,12 +23,58 @@ function setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJM
 
 procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'FPC_LONGJMP'];
   asm
-    {$warning FIXME!!!!}
-  end;
+     lwz r1,(r3)
+     lwz r2,4(r3)
+     lwz r0,8(r3)
+     lwz r14,12(r3)
+     lfd fp14,88(r3)
+     lwz r15,16(r3)
+     lfd fp15,96(r3)
+     lwz r16,20(r3)
+     lfd fp16,104(r3)
+     lwz r17,24(r3)
+     lfd fp17,112(r3)
+     lwz r18,28(r3)
+     lfd fp18,120(r3)
+     lwz r19,32(r3)
+     lfd fp19,128(r3)
+     lwz r20,36(r3)
+     lfd fp20,136(r3)
+     mtlr r0
+     lwz r21,40(r3)
+     lfd fp21,144(r3)
+     lwz r22,44(r3)
+     lfd fp22,152(r3)
+     lwz r0,84(r3)
+     lwz r23,48(r3)
+     lfd fp23,160(r3)
+     lwz r24,52(r3)
+     lfd fp24,168(r3)
+     lwz r25,56(r3)
+     lfd fp25,176(r3)
+     mtcrf 0xFF,r0
+     lwz r26,60(r3)
+     lfd fp26,184(r3)
+     lwz r27,64(r3)
+     lfd fp27,192(r3)
+     lwz r28,68(r3)
+     lfd fp28,200(r3)
+     lwz r29,72(r3)
+     lfd fp29,208(r3)
+     lwz r30,76(r3)
+     lfd fp30,216(r3)
+     lwz r31,80(r3)
+     lfd fp31,224(r3)
+     mr r3,r4
+     blr
+ end;
 
 {
   $Log$
-  Revision 1.5  2002-09-07 16:01:26  peter
+  Revision 1.6  2003-04-26 18:54:30  florian
+    + implemented setjmp record and longjmp
+
+  Revision 1.5  2002/09/07 16:01:26  peter
     * old logs removed and tabs fixed
 
   Revision 1.4  2002/08/31 14:27:40  florian

+ 6 - 2
rtl/powerpc/setjumph.inc

@@ -17,7 +17,8 @@
 
 type
    jmp_buf = packed record
-    {$warning FIXME!!!!}
+     r1,r2,lr,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,cr : dword;
+     f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31 : double;
    end;
    pjmp_buf = ^jmp_buf;
 
@@ -26,7 +27,10 @@ procedure longjmp(var S : jmp_buf;value : longint);
 
 {
   $Log$
-  Revision 1.5  2002-09-15 10:03:04  carl
+  Revision 1.6  2003-04-26 18:54:30  florian
+    + implemented setjmp record and longjmp
+
+  Revision 1.5  2002/09/15 10:03:04  carl
     * make the record packed (just in case)
 
   Revision 1.4  2002/08/10 17:14:36  jonas