about summary refs log tree commit diff
path: root/nptl/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-12-22 20:09:42 +0000
committerUlrich Drepper <drepper@redhat.com>2004-12-22 20:09:42 +0000
commit7d58530341304d403a6626d7f7a1913165fe2f32 (patch)
tree471ef022d415c89ff4b5544a5e0239a9ac45d841 /nptl/sysdeps
parentec8c29dc013a5e0ca3330ce5e4ae989e811491e6 (diff)
downloadglibc-7d58530341304d403a6626d7f7a1913165fe2f32.tar.gz
glibc-7d58530341304d403a6626d7f7a1913165fe2f32.tar.xz
glibc-7d58530341304d403a6626d7f7a1913165fe2f32.zip
Test for stack alignment.
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r--nptl/sysdeps/i386/Makefile2
-rw-r--r--nptl/sysdeps/i386/tls.h7
2 files changed, 7 insertions, 2 deletions
diff --git a/nptl/sysdeps/i386/Makefile b/nptl/sysdeps/i386/Makefile
index 693fb0569f..2f0d88f303 100644
--- a/nptl/sysdeps/i386/Makefile
+++ b/nptl/sysdeps/i386/Makefile
@@ -22,4 +22,6 @@ endif
 
 ifeq ($(subdir),nptl)
 CFLAGS-pthread_create.c += -mpreferred-stack-boundary=4
+CFLAGS-tst-align.c += -mpreferred-stack-boundary=4
+CFLAGS-tst-align2.c += -mpreferred-stack-boundary=4
 endif
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index 18b038f93e..945a4c71d6 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -397,9 +397,12 @@ union user_desc_init
 #define CALL_THREAD_FCT(descr) \
   ({ void *__res;							      \
      int __ignore1, __ignore2;						      \
-     asm volatile ("pushl %%gs:%P4\n\t"					      \
+     asm volatile ("pushl %%eax\n\t"					      \
+		   "pushl %%eax\n\t"					      \
+		   "pushl %%eax\n\t"					      \
+		   "pushl %%gs:%P4\n\t"					      \
 		   "call *%%gs:%P3\n\t"					      \
-		   "addl $4, %%esp"					      \
+		   "addl $16, %%esp"					      \
 		   : "=a" (__res), "=c" (__ignore1), "=d" (__ignore2)	      \
 		   : "i" (offsetof (struct pthread, start_routine)),	      \
 		     "i" (offsetof (struct pthread, arg)));		      \