svn commit: r229008 - stable/9/lib/libc/amd64/gen
Konstantin Belousov
kib at FreeBSD.org
Fri Dec 30 18:18:06 UTC 2011
Author: kib
Date: Fri Dec 30 18:18:06 2011
New Revision: 229008
URL: http://svn.freebsd.org/changeset/base/229008
Log:
MFC r227023:
Make sure that stack is 16-byte aligned before calling a function,
as it is required by amd64 ABI. Add a comment for the places were
the stack is accidentally properly aligned already.
PR: amd64/162214
Modified:
stable/9/lib/libc/amd64/gen/setjmp.S
stable/9/lib/libc/amd64/gen/sigsetjmp.S
Directory Properties:
stable/9/lib/libc/ (props changed)
Modified: stable/9/lib/libc/amd64/gen/setjmp.S
==============================================================================
--- stable/9/lib/libc/amd64/gen/setjmp.S Fri Dec 30 18:16:15 2011 (r229007)
+++ stable/9/lib/libc/amd64/gen/setjmp.S Fri Dec 30 18:18:06 2011 (r229008)
@@ -54,6 +54,7 @@ ENTRY(setjmp)
movq $1,%rdi /* SIG_BLOCK */
movq $0,%rsi /* (sigset_t*)set */
leaq 72(%rcx),%rdx /* 9,10; (sigset_t*)oset */
+ /* stack is 16-byte aligned */
call PIC_PLT(CNAME(_sigprocmask))
popq %rdi
movq %rdi,%rcx
@@ -81,7 +82,9 @@ ENTRY(__longjmp)
movq $3,%rdi /* SIG_SETMASK */
leaq 72(%rdx),%rsi /* (sigset_t*)set */
movq $0,%rdx /* (sigset_t*)oset */
+ subq $0x8,%rsp /* make the stack 16-byte aligned */
call PIC_PLT(CNAME(_sigprocmask))
+ addq $0x8,%rsp
popq %rsi
popq %rdi /* jmpbuf */
movq %rdi,%rdx
Modified: stable/9/lib/libc/amd64/gen/sigsetjmp.S
==============================================================================
--- stable/9/lib/libc/amd64/gen/sigsetjmp.S Fri Dec 30 18:16:15 2011 (r229007)
+++ stable/9/lib/libc/amd64/gen/sigsetjmp.S Fri Dec 30 18:18:06 2011 (r229008)
@@ -62,6 +62,7 @@ ENTRY(sigsetjmp)
movq $1,%rdi /* SIG_BLOCK */
movq $0,%rsi /* (sigset_t*)set */
leaq 72(%rcx),%rdx /* 9,10 (sigset_t*)oset */
+ /* stack is 16-byte aligned */
call PIC_PLT(CNAME(_sigprocmask))
popq %rdi
2: movq %rdi,%rcx
@@ -90,7 +91,9 @@ ENTRY(__siglongjmp)
movq $3,%rdi /* SIG_SETMASK */
leaq 72(%rdx),%rsi /* (sigset_t*)set */
movq $0,%rdx /* (sigset_t*)oset */
+ subq $0x8,%rsp /* make the stack 16-byte aligned */
call PIC_PLT(CNAME(_sigprocmask))
+ addq $0x8,%rsp
popq %rsi
popq %rdi /* jmpbuf */
2: movq %rdi,%rdx
More information about the svn-src-stable-9
mailing list