diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2012-02-14 08:50:38 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2012-02-14 08:50:38 +0100 |
commit | d4a698d494b9bc5344b49824ac3aa27710833fa8 (patch) | |
tree | 529977eb49b5177417a3feddd087a94813367eae /libitm | |
parent | 1982a38354a6e26f2f6f9935d45cd60165ab70d7 (diff) | |
download | gcc-d4a698d494b9bc5344b49824ac3aa27710833fa8.zip gcc-d4a698d494b9bc5344b49824ac3aa27710833fa8.tar.gz gcc-d4a698d494b9bc5344b49824ac3aa27710833fa8.tar.bz2 |
target.h (GTM_longjmp): Jump indirect from memory address.
* config/x86/target.h (GTM_longjmp): Jump indirect from memory address.
From-SVN: r184198
Diffstat (limited to 'libitm')
-rw-r--r-- | libitm/ChangeLog | 4 | ||||
-rw-r--r-- | libitm/config/x86/sjlj.S | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog index ad8e3d7..6e24888 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -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. diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S index 0571a4a..9a74d97 100644 --- a/libitm/config/x86/sjlj.S +++ b/libitm/config/x86/sjlj.S @@ -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 |