summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2008-08-03 00:13:13 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2008-08-03 00:13:13 +0000
commit26ce9018aa473f5282b70d057f6b6de6d1cdca99 (patch)
treed5c95eb8ce05d78a6d4900fe0cfdd3d40c4b2c63
parentfc1964a7d295bec777d14b0f96692528bdb79437 (diff)
* sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Fix cast from
thread to integer. Fix reservation of stack room for initial frame. * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Fix reservation of stack room for initial frame.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/l4/hurd/i386/pt-setup.c2
-rw-r--r--sysdeps/mach/hurd/i386/pt-setup.c4
3 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 6c7d223..17d0c2f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
* sysdeps/i386/bits/memory.h (__memory_barrier): Add memory clobber.
* sysdeps/i386/bits/spin-lock.h (__pthread_spin_trylock,
__pthread_spin_unlock): Add memory clobbers.
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Fix cast from
+ thread to integer. Fix reservation of stack room for initial frame.
+ * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Fix reservation of
+ stack room for initial frame.
2008-07-18 Samuel Thibault <samuel.thibault@ens-lyon.org>
diff --git a/sysdeps/l4/hurd/i386/pt-setup.c b/sysdeps/l4/hurd/i386/pt-setup.c
index 6540ee5..2b7a3e2 100644
--- a/sysdeps/l4/hurd/i386/pt-setup.c
+++ b/sysdeps/l4/hurd/i386/pt-setup.c
@@ -47,7 +47,7 @@ stack_setup (struct __pthread *thread,
if (start_routine)
{
/* Set up call frame. */
- top -= 2*sizeof(L4_Word_t);
+ top -= 2;
top = (unsigned long) top & ~0xf;
top[1] = (L4_Word_t) arg; /* Argument to START_ROUTINE. */
top[0] = (L4_Word_t) start_routine;
diff --git a/sysdeps/mach/hurd/i386/pt-setup.c b/sysdeps/mach/hurd/i386/pt-setup.c
index 5abbcfc..ba438d6 100644
--- a/sysdeps/mach/hurd/i386/pt-setup.c
+++ b/sysdeps/mach/hurd/i386/pt-setup.c
@@ -58,12 +58,12 @@ stack_setup (struct __pthread *thread,
top -= __hurd_threadvar_max;
/* Save the self pointer. */
- top[_HURD_THREADVAR_THREAD] = (void *) thread;
+ top[_HURD_THREADVAR_THREAD] = (uintptr_t) thread;
if (start_routine)
{
/* And then the call frame. */
- top -= 2*sizeof(uintptr_t);
+ top -= 2;
top = (uintptr_t) top & ~0xf;
top[1] = (uintptr_t) arg; /* Argument to START_ROUTINE. */
top[0] = (uintptr_t) start_routine;