summaryrefslogtreecommitdiff
path: root/arch/powerpc/pthread_arch.h
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-11-14 14:01:39 -0500
committerRich Felker <dalias@aerifal.cx>2012-11-14 14:01:39 -0500
commitc6d441e3a246370d9c459396ec22b096db93850e (patch)
treefa3d4a4ca03531ceab9e60abb50e37780fce60ed /arch/powerpc/pthread_arch.h
parentc4a35f8c2a4b1a7e62a4b9e5b2748fb4fbcace79 (diff)
parent1c8eb8bad791fe9d01d0d4ab77882db634fa933d (diff)
downloadmusl-c6d441e3a246370d9c459396ec22b096db93850e.tar.gz
Merge remote-tracking branch 'ppc-port/ppc-squashed'
Diffstat (limited to 'arch/powerpc/pthread_arch.h')
-rw-r--r--arch/powerpc/pthread_arch.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/pthread_arch.h b/arch/powerpc/pthread_arch.h
new file mode 100644
index 00000000..cb2a70b8
--- /dev/null
+++ b/arch/powerpc/pthread_arch.h
@@ -0,0 +1,14 @@
+static inline struct pthread *__pthread_self()
+{
+ register char* tp __asm__("r2");
+ return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+}
+
+#define TLS_ABOVE_TP
+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+
+// offset of the PC register in mcontext_t, divided by the system wordsize
+// the kernel calls the ip "nip", it's the first saved value after the 32
+// GPRs.
+#define CANCEL_REG_IP 32
+