mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 09:59:17 +02:00
+ implemented setjmp record and longjmp
This commit is contained in:
parent
5b6f8ca821
commit
e7130af5a8
@ -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'];
|
procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'FPC_LONGJMP'];
|
||||||
asm
|
asm
|
||||||
{$warning FIXME!!!!}
|
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;
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* old logs removed and tabs fixed
|
||||||
|
|
||||||
Revision 1.4 2002/08/31 14:27:40 florian
|
Revision 1.4 2002/08/31 14:27:40 florian
|
||||||
|
@ -17,7 +17,8 @@
|
|||||||
|
|
||||||
type
|
type
|
||||||
jmp_buf = packed record
|
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;
|
end;
|
||||||
pjmp_buf = ^jmp_buf;
|
pjmp_buf = ^jmp_buf;
|
||||||
|
|
||||||
@ -26,7 +27,10 @@ procedure longjmp(var S : jmp_buf;value : longint);
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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)
|
* make the record packed (just in case)
|
||||||
|
|
||||||
Revision 1.4 2002/08/10 17:14:36 jonas
|
Revision 1.4 2002/08/10 17:14:36 jonas
|
||||||
|
Loading…
Reference in New Issue
Block a user