diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-04-09 19:10:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-04-09 19:10:05 +0000 |
commit | 7906dd56260fd980f50bb8a64e877fcf75a72cde (patch) | |
tree | c0823a3c1a15533f2fc57da18c193f1e14e50926 /linuxthreads/sysdeps/powerpc | |
parent | c4c5feda77f280d700f93f5f3c7d900d9de388f4 (diff) | |
download | glibc-7906dd56260fd980f50bb8a64e877fcf75a72cde.tar.gz glibc-7906dd56260fd980f50bb8a64e877fcf75a72cde.tar.xz glibc-7906dd56260fd980f50bb8a64e877fcf75a72cde.zip |
Update.
2004-04-09 Thorsten Kukuk <kukuk@suse.de> * sysdeps/s390/ffs.c: Don't add ffsl weak alias on s390x. 2004-04-09 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: New file.
Diffstat (limited to 'linuxthreads/sysdeps/powerpc')
-rw-r--r-- | linuxthreads/sysdeps/powerpc/tls.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/linuxthreads/sysdeps/powerpc/tls.h b/linuxthreads/sysdeps/powerpc/tls.h index 76104cd14c..f6eb48b434 100644 --- a/linuxthreads/sysdeps/powerpc/tls.h +++ b/linuxthreads/sysdeps/powerpc/tls.h @@ -92,19 +92,24 @@ typedef struct /* Return dtv of given thread descriptor. */ # define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))[-1].dtv) -/* The global register variable is declared in pt-machine.h with - the wrong type, but the compiler doesn't like us declaring another. */ +/* We still need this define so that tcb-offsets.sym can override it and + use THREAD_SELF to generate MULTIPLE_THREADS_OFFSET. */ # define __thread_register ((void *) __thread_self) /* Code to initially initialize the thread pointer. This might need special attention since 'errno' is not yet available and if the - operation can cause a failure 'errno' must not be touched. */ + operation can cause a failure 'errno' must not be touched. + + The global register variable is declared in pt-machine.h with the + wrong type, so we need some extra casts to get the desired result. + This avoids a lvalue cast that gcc-3.4 does not like. */ # define TLS_INIT_TP(TCBP, SECONDCALL) \ - (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET, NULL) + (__thread_self = (struct _pthread_descr_struct *) \ + ((void *) (TCBP) + TLS_TCB_OFFSET), NULL) /* Return the address of the dtv for the current thread. */ # define THREAD_DTV() \ - (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv) + (((tcbhead_t *) ((void *) __thread_self - TLS_TCB_OFFSET))[-1].dtv) /* Return the thread descriptor for the current thread. */ # undef THREAD_SELF @@ -114,7 +119,7 @@ typedef struct # undef INIT_THREAD_SELF # define INIT_THREAD_SELF(DESCR, NR) \ - (__thread_register = ((void *) (DESCR) \ + (__thread_self = (struct _pthread_descr_struct *)((void *) (DESCR) \ + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE)) /* Make sure we have the p_multiple_threads member in the thread structure. |