mirror of git://gcc.gnu.org/git/gcc.git
target.h (gtm_jmpbuf): Move rip to the end of structure.
* 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
This commit is contained in:
parent
a023688237
commit
9848887afa
|
|
@ -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>
|
2012-01-23 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
PR libitm/51830
|
PR libitm/51830
|
||||||
|
|
|
||||||
|
|
@ -61,20 +61,18 @@ SYM(_ITM_beginTransaction):
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
leaq 8(%rsp), %rax
|
leaq 8(%rsp), %rax
|
||||||
movq (%rsp), %r8
|
subq $56, %rsp
|
||||||
subq $72, %rsp
|
cfi_def_cfa_offset(64)
|
||||||
cfi_def_cfa_offset(80)
|
|
||||||
movq %rax, (%rsp)
|
movq %rax, (%rsp)
|
||||||
movq %r8, 8(%rsp)
|
movq %rbx, 8(%rsp)
|
||||||
movq %rbx, 16(%rsp)
|
movq %rbp, 16(%rsp)
|
||||||
movq %rbp, 24(%rsp)
|
movq %r12, 24(%rsp)
|
||||||
movq %r12, 32(%rsp)
|
movq %r13, 32(%rsp)
|
||||||
movq %r13, 40(%rsp)
|
movq %r14, 40(%rsp)
|
||||||
movq %r14, 48(%rsp)
|
movq %r15, 48(%rsp)
|
||||||
movq %r15, 56(%rsp)
|
|
||||||
movq %rsp, %rsi
|
movq %rsp, %rsi
|
||||||
call SYM(GTM_begin_transaction)
|
call SYM(GTM_begin_transaction)
|
||||||
addq $72, %rsp
|
addq $56, %rsp
|
||||||
cfi_def_cfa_offset(8)
|
cfi_def_cfa_offset(8)
|
||||||
ret
|
ret
|
||||||
#else
|
#else
|
||||||
|
|
@ -115,13 +113,13 @@ SYM(GTM_longjmp):
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
movq (%rsi), %rcx
|
movq (%rsi), %rcx
|
||||||
movq 8(%rsi), %rdx
|
movq 8(%rsi), %rbx
|
||||||
movq 16(%rsi), %rbx
|
movq 16(%rsi), %rbp
|
||||||
movq 24(%rsi), %rbp
|
movq 24(%rsi), %r12
|
||||||
movq 32(%rsi), %r12
|
movq 32(%rsi), %r13
|
||||||
movq 40(%rsi), %r13
|
movq 40(%rsi), %r14
|
||||||
movq 48(%rsi), %r14
|
movq 48(%rsi), %r15
|
||||||
movq 56(%rsi), %r15
|
movq 56(%rsi), %rdx
|
||||||
movl %edi, %eax
|
movl %edi, %eax
|
||||||
cfi_def_cfa(%rcx, 0)
|
cfi_def_cfa(%rcx, 0)
|
||||||
cfi_register(%rip, %rdx)
|
cfi_register(%rip, %rdx)
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ namespace GTM HIDDEN {
|
||||||
typedef struct gtm_jmpbuf
|
typedef struct gtm_jmpbuf
|
||||||
{
|
{
|
||||||
void *cfa;
|
void *cfa;
|
||||||
unsigned long rip;
|
|
||||||
unsigned long rbx;
|
unsigned long rbx;
|
||||||
unsigned long rbp;
|
unsigned long rbp;
|
||||||
unsigned long r12;
|
unsigned long r12;
|
||||||
unsigned long r13;
|
unsigned long r13;
|
||||||
unsigned long r14;
|
unsigned long r14;
|
||||||
unsigned long r15;
|
unsigned long r15;
|
||||||
|
unsigned long rip;
|
||||||
} gtm_jmpbuf;
|
} gtm_jmpbuf;
|
||||||
#else
|
#else
|
||||||
typedef struct gtm_jmpbuf
|
typedef struct gtm_jmpbuf
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue