aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/powerpc/powerpc32
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-02-17 20:46:52 +0000
committerUlrich Drepper <drepper@redhat.com>2003-02-17 20:46:52 +0000
commitb2740a3b0a55fa4eead5c952dabf435794d0dd7f (patch)
tree1db2f9b124652c3cf162f1a1d9c648ea224431f4 /linuxthreads/sysdeps/powerpc/powerpc32
parent81b5057288217437017b42780d7814eb7b0744d5 (diff)
downloadglibc-b2740a3b0a55fa4eead5c952dabf435794d0dd7f.tar
glibc-b2740a3b0a55fa4eead5c952dabf435794d0dd7f.tar.gz
glibc-b2740a3b0a55fa4eead5c952dabf435794d0dd7f.tar.bz2
glibc-b2740a3b0a55fa4eead5c952dabf435794d0dd7f.zip
Update.
2003-02-17 Kevin B. Hendricks <kevin.hendricks@sympatico.ca> Franz Sirl <Franz.Sirl-kernel@lauterbach.com> * sysdeps/powerpc/elf/libc-start.c: Handle NONTLS_INIT_TP. * sysdeps/powerpc/powerpc32/__longjmp.S: Remove R2 handling. * sysdeps/powerpc/powerpc32/setjmp.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise.
Diffstat (limited to 'linuxthreads/sysdeps/powerpc/powerpc32')
-rw-r--r--linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h b/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
index 19b77b7e6a..f38f466bc3 100644
--- a/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
+++ b/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
@@ -36,11 +36,37 @@ extern int __compare_and_swap (long int *p, long int oldval, long int newval);
need to make sure that the compiler has flushed everything to memory. */
#define MEMORY_BARRIER() __asm__ __volatile__ ("sync" : : : "memory")
+/* We want the OS to assign stack addresses. */
+#define FLOATING_STACKS 1
+
+/* Maximum size of the stack if the rlimit is unlimited. */
+#define ARCH_STACK_MAX_SIZE 8*1024*1024
+
/* Get some notion of the current stack. Need not be exactly the top
of the stack, just something somewhere in the current frame. */
#define CURRENT_STACK_FRAME stack_pointer
register char * stack_pointer __asm__ ("r1");
+/* Register r2 (tp) is reserved by the ABI as "thread pointer". */
+struct _pthread_descr_struct;
+register struct _pthread_descr_struct *__thread_self __asm__("r2");
+
+/* Return the thread descriptor for the current thread. */
+#define THREAD_SELF __thread_self
+
+/* Initialize the thread-unique value. */
+#define INIT_THREAD_SELF(descr, nr) (__thread_self = (descr))
+
+/* Access to data in the thread descriptor is easy. */
+#define THREAD_GETMEM(descr, member) \
+ ((void) (descr), THREAD_SELF->member)
+#define THREAD_GETMEM_NC(descr, member) \
+ ((void) (descr), THREAD_SELF->member)
+#define THREAD_SETMEM(descr, member, value) \
+ ((void) (descr), THREAD_SELF->member = (value))
+#define THREAD_SETMEM_NC(descr, member, value) \
+ ((void) (descr), THREAD_SELF->member = (value))
+
/* Compare-and-swap for semaphores. */
/* note that test-and-set(x) is the same as !compare-and-swap(x, 0, 1) */