Kaynağa Gözat

* fixes for nostackframe

peter 21 yıl önce
ebeveyn
işleme
4af2c9385a
1 değiştirilmiş dosya ile 7 ekleme ve 6 silme
  1. 7 6
      rtl/x86_64/setjump.inc

+ 7 - 6
rtl/x86_64/setjump.inc

@@ -19,16 +19,14 @@ function setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJM
   asm
     // Save registers.
     movq %rbx,(%rdi)
-    // load old rbp
-    movq (%rbp),%rdx
-    movq %rdx,8(%rdi)
+    movq %rbp,8(%rdi)
     movq %r12,16(%rdi)
     movq %r13,24(%rdi)
     movq %r14,32(%rdi)
     movq %r15,40(%rdi)
-    leaq 16(%rsp),%rdx      // Save SP as it will be after we return.
+    leaq 8(%rsp),%rdx       // Save SP as it will be after we return.
     movq %rdx,48(%rdi)
-    movq 8(%rsp),%rsi       // Save PC we are returning to now.
+    movq 0(%rsp),%rsi       // Save PC we are returning to now.
     movq %rsi,56(%rdi)
     xorq %rax,%rax
   end;
@@ -55,7 +53,10 @@ procedure longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'F
 
 {
   $Log$
-  Revision 1.4  2004-11-01 16:00:28  florian
+  Revision 1.5  2004-11-01 19:42:46  peter
+    * fixes for nostackframe
+
+  Revision 1.4  2004/11/01 16:00:28  florian
     * setjmp must not have a stack frame else the offsets are wrong
 
   Revision 1.3  2004/04/26 19:23:19  florian