Align stack to 16 bytes when calling __setcontext

Don't use pop to restore %rdi so that stack is aligned to 16 bytes
when calling __setcontext.

	[BZ #18661]
	* sysdeps/unix/sysv/linux/x86_64/__start_context.S
	(__start_context): Don't use pop to restore %rdi so that stack
	is aligned to 16 bytes when calling __setcontext.
This commit is contained in:
H.J. Lu 2015-07-12 14:38:58 -07:00
parent 3b8d2eb7f8
commit 8e1f346462
2 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2015-08-05 H.J. Lu <hongjiu.lu@intel.com>
[BZ #18661]
* sysdeps/unix/sysv/linux/x86_64/__start_context.S
(__start_context): Don't use pop to restore %rdi so that stack
is aligned to 16 bytes when calling __setcontext.
2015-08-05 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Compile

View File

@ -31,8 +31,8 @@ ENTRY(__start_context)
on the stack pointer for the next context. */
movq %rbx, %rsp
popq %rdi /* This is the next context. */
cfi_adjust_cfa_offset(-8)
/* Don't use pop here so that stack is aligned to 16 bytes. */
movq (%rsp), %rdi /* This is the next context. */
testq %rdi, %rdi
je 2f /* If it is zero exit. */