target.h (gtm_jmpbuf): Move rip to the end of structure.
authorUros Bizjak <ubizjak@gmail.com>
Tue, 24 Jan 2012 07:23:57 +0000 (08:23 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 24 Jan 2012 07:23:57 +0000 (08:23 +0100)
* config/x86/target.h (gtm_jmpbuf) [__x86_64__]: Move rip to the
end of structure.
* config/x86/sjlj.S (_ITM_beginTransaction) [__x86_64__]: Update
offset values.  Do not copy return address.  Decrement stack
by 56 bytes only.
(GTM_longjump) [__x86_64__]: Update offset values.

From-SVN: r183467

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

index bf29f4efc3f445ab27206e15471aa64b100972bf..4b6d156d750dd0dad5277f2916bbb7154e646dba 100644 (file)
@@ -1,3 +1,12 @@
+2012-01-24  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/x86/target.h (gtm_jmpbuf) [__x86_64__]: Move rip to the
+       end of structure.
+       * config/x86/sjlj.S (_ITM_beginTransaction) [__x86_64__]: Update
+       offset values.  Do not copy return address.  Decrement stack
+       by 56 bytes only.
+       (GTM_longjump) [__x86_64__]: Update offset values.
+
 2012-01-23  Uros Bizjak  <ubizjak@gmail.com>
 
        PR libitm/51830
index c30c216f229d823c5415ac451696e3759bc51337..0571a4ab658afb4b3f307e4437b07b64c5ceffe7 100644 (file)
@@ -61,20 +61,18 @@ SYM(_ITM_beginTransaction):
        cfi_startproc
 #ifdef __x86_64__
        leaq    8(%rsp), %rax
-       movq    (%rsp), %r8
-       subq    $72, %rsp
-       cfi_def_cfa_offset(80)
+       subq    $56, %rsp
+       cfi_def_cfa_offset(64)
        movq    %rax, (%rsp)
-       movq    %r8, 8(%rsp)
-       movq    %rbx, 16(%rsp)
-       movq    %rbp, 24(%rsp)
-       movq    %r12, 32(%rsp)
-       movq    %r13, 40(%rsp)
-       movq    %r14, 48(%rsp)
-       movq    %r15, 56(%rsp)
+       movq    %rbx, 8(%rsp)
+       movq    %rbp, 16(%rsp)
+       movq    %r12, 24(%rsp)
+       movq    %r13, 32(%rsp)
+       movq    %r14, 40(%rsp)
+       movq    %r15, 48(%rsp)
        movq    %rsp, %rsi
        call    SYM(GTM_begin_transaction)
-       addq    $72, %rsp
+       addq    $56, %rsp
        cfi_def_cfa_offset(8)
        ret
 #else
@@ -115,13 +113,13 @@ SYM(GTM_longjmp):
        cfi_startproc
 #ifdef __x86_64__
        movq    (%rsi), %rcx
-       movq    8(%rsi), %rdx
-       movq    16(%rsi), %rbx
-       movq    24(%rsi), %rbp
-       movq    32(%rsi), %r12
-       movq    40(%rsi), %r13
-       movq    48(%rsi), %r14
-       movq    56(%rsi), %r15
+       movq    8(%rsi), %rbx
+       movq    16(%rsi), %rbp
+       movq    24(%rsi), %r12
+       movq    32(%rsi), %r13
+       movq    40(%rsi), %r14
+       movq    48(%rsi), %r15
+       movq    56(%rsi), %rdx
        movl    %edi, %eax
        cfi_def_cfa(%rcx, 0)
        cfi_register(%rip, %rdx)
index a59608f388ca65b8ca19f1d4b84fcd80a6fab32b..1d81a4777f3ebf7c232b01e2f3d899479784fc4e 100644 (file)
@@ -29,13 +29,13 @@ namespace GTM HIDDEN {
 typedef struct gtm_jmpbuf
 {
   void *cfa;
-  unsigned long rip;
   unsigned long rbx;
   unsigned long rbp;
   unsigned long r12;
   unsigned long r13;
   unsigned long r14;
   unsigned long r15;
+  unsigned long rip;
 } gtm_jmpbuf;
 #else
 typedef struct gtm_jmpbuf