diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/l4/hurd/i386/pt-setup.c | 2 | ||||
-rw-r--r-- | sysdeps/mach/hurd/i386/pt-setup.c | 4 |
3 files changed, 7 insertions, 3 deletions
@@ -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; |