summaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-14 18:38:38 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-14 18:38:38 +0000
commit67012b2347a727aa93898ca960fb65e3d810c834 (patch)
treecffcb6752af230c5d715ccacc22a67899ddf1b0e /libitm
parent8b7f46d57592f16e9046c8e64445ed71b9104158 (diff)
downloadgcc-67012b2347a727aa93898ca960fb65e3d810c834.tar.gz
* config/x86/target.h (GTM_longjmp): Correct .cfi directives.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184220 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog4
-rw-r--r--libitm/config/x86/sjlj.S8
2 files changed, 9 insertions, 3 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 4dbb1e85ecd..23594d37498 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2012-02-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/x86/target.h (GTM_longjmp): Correct .cfi directives.
+
2012-02-14 Torvald Riegel <triegel@redhat.com>
* libitm_i.h (GTM::gtm_rwlog_entry): New.
diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S
index 9a74d97f76f..554ec984d46 100644
--- a/libitm/config/x86/sjlj.S
+++ b/libitm/config/x86/sjlj.S
@@ -112,6 +112,7 @@ SYM(_ITM_beginTransaction):
SYM(GTM_longjmp):
cfi_startproc
#ifdef __x86_64__
+ cfi_def_cfa(%rsi, 0)
movq (%rsi), %rcx
movq 8(%rsi), %rbx
movq 16(%rsi), %rbp
@@ -119,20 +120,21 @@ SYM(GTM_longjmp):
movq 32(%rsi), %r13
movq 40(%rsi), %r14
movq 48(%rsi), %r15
- movl %edi, %eax
cfi_offset(%rip, 56)
- cfi_def_cfa(%rcx, 0)
+ movl %edi, %eax
movq %rcx, %rsp
+ cfi_register(%rsp, %rcx)
jmp *56(%rsi)
#else
+ cfi_def_cfa(%edx, 0)
movl (%edx), %ecx
movl 4(%edx), %ebx
movl 8(%edx), %esi
movl 12(%edx), %edi
movl 16(%edx), %ebp
cfi_offset(%eip, 20)
- cfi_def_cfa(%ecx, 0)
movl %ecx, %esp
+ cfi_register(%esp, %ecx)
jmp *20(%edx)
#endif
cfi_endproc