OSDN Git Service

* config/x86/target.h (GTM_longjmp): Jump indirect from memory address.
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Feb 2012 07:50:38 +0000 (07:50 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Feb 2012 07:50:38 +0000 (07:50 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184198 138bc75d-0d04-0410-961f-82ee72b054a4

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

index ad8e3d7..6e24888 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 0571a4a..9a74d97 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