diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-08-31 00:04:26 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-08-31 00:04:26 +0200 |
commit | c8538dfe4032c398974e46edef97cac03a9f185f (patch) | |
tree | 68890f5a31937f1f3616dae163d005f91ef0e067 /sysdeps/mach/hurd/i386/pt-setup.c | |
parent | e2c739a43175f15d423010ef83ca3be67a26da8e (diff) |
Revert "Store self in __thread variable instead of threadvar"t/tls-threadvar-pthread_self
This reverts commit 25260994c812050a5d7addf125cdc90c911ca5c1.
Conflicts:
sysdeps/l4/hurd/ia32/pt-setup.c
sysdeps/l4/hurd/powerpc/pt-setup.c
Diffstat (limited to 'sysdeps/mach/hurd/i386/pt-setup.c')
-rw-r--r-- | sysdeps/mach/hurd/i386/pt-setup.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sysdeps/mach/hurd/i386/pt-setup.c b/sysdeps/mach/hurd/i386/pt-setup.c index 73fd43d..5420dc8 100644 --- a/sysdeps/mach/hurd/i386/pt-setup.c +++ b/sysdeps/mach/hurd/i386/pt-setup.c @@ -57,14 +57,16 @@ stack_setup (struct __pthread *thread, /* Next, make room for the TSDs. */ top -= __hurd_threadvar_max; + /* Save the self pointer. */ + top[_HURD_THREADVAR_THREAD] = (uintptr_t) thread; + if (start_routine) { /* And then the call frame. */ - top -= 3; + top -= 2; top = (uintptr_t *) ((uintptr_t) top & ~0xf); - top[2] = (uintptr_t) arg; /* Argument to START_ROUTINE. */ - top[1] = (uintptr_t) start_routine; - top[0] = (uintptr_t) thread; + top[1] = (uintptr_t) arg; /* Argument to START_ROUTINE. */ + top[0] = (uintptr_t) start_routine; *--top = 0; /* Fake return address. */ } @@ -80,7 +82,7 @@ stack_setup (struct __pthread *thread, int __pthread_setup (struct __pthread *thread, - void (*entry_point)(struct __pthread *, void *(*)(void *), void *), + void (*entry_point)(void *(*)(void *), void *), void *(*start_routine)(void *), void *arg) { error_t err; |