Commit 9848887a by Uros Bizjak Committed by Uros Bizjak

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
parent a0236882
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): ...@@ -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): ...@@ -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 { ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment