]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
target.h (GTM_longjmp): Jump indirect from memory address.
authorUros Bizjak <ubizjak@gmail.com>
Tue, 14 Feb 2012 07:50:38 +0000 (08:50 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 14 Feb 2012 07:50:38 +0000 (08:50 +0100)
* config/x86/target.h (GTM_longjmp): Jump indirect from memory address.

From-SVN: r184198

libitm/ChangeLog
libitm/config/x86/sjlj.S

index ad8e3d73a8f84279d2b4f5b69684d6add31a4589..6e24888b710a7ac88d7dff19ebb24fb1a58d08ef 100644 (file)
@@ -1,3 +1,7 @@
+2012-02-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/x86/target.h (GTM_longjmp): Jump indirect from memory address.
+
 2012-02-13  Eric Botcazou  <ebotcazou@adacore.com>
 
        * configure.tgt (target_cpu): Handle sparc and sparc64 & sparcv9.
index 0571a4ab658afb4b3f307e4437b07b64c5ceffe7..9a74d97f76f3a85c2cce3817362d37e1bd9c97fa 100644 (file)
@@ -119,23 +119,21 @@ SYM(GTM_longjmp):
        movq    32(%rsi), %r13
        movq    40(%rsi), %r14
        movq    48(%rsi), %r15
-       movq    56(%rsi), %rdx
        movl    %edi, %eax
+       cfi_offset(%rip, 56)
        cfi_def_cfa(%rcx, 0)
-       cfi_register(%rip, %rdx)
        movq    %rcx, %rsp
-       jmp     *%rdx
+       jmp     *56(%rsi)
 #else
        movl    (%edx), %ecx
        movl    4(%edx), %ebx
        movl    8(%edx), %esi
        movl    12(%edx), %edi
        movl    16(%edx), %ebp
-       movl    20(%edx), %edx
+       cfi_offset(%eip, 20)
        cfi_def_cfa(%ecx, 0)
-       cfi_register(%eip, %edx)
        movl    %ecx, %esp
-       jmp     *%edx
+       jmp     *20(%edx)
 #endif
        cfi_endproc