summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2020-08-24 22:04:52 -0400
committerRich Felker <dalias@aerifal.cx>2020-08-24 22:04:52 -0400
commitea71a9004e08030a15d45186e263fd2b0c51cc25 (patch)
tree9bbe576df4289c730b60407178c2d786f325b224 /src/internal
parent19f8642494b7d27b2ceed5c14d4a0b27cb749afe (diff)
downloadmusl-ea71a9004e08030a15d45186e263fd2b0c51cc25.tar.gz
deduplicate TP_ADJ logic out of each arch, replace with TP_OFFSET
the only part of TP_ADJ that was not uniquely determined by TLS_ABOVE_TP was the 0x7000 adjustment used mainly on mips and powerpc variants.
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/pthread_impl.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h
index 5749a336..3c2bd767 100644
--- a/src/internal/pthread_impl.h
+++ b/src/internal/pthread_impl.h
@@ -105,10 +105,20 @@ struct __timer {
#define CANARY canary
#endif
+#ifndef TP_OFFSET
+#define TP_OFFSET 0
+#endif
+
#ifndef DTP_OFFSET
#define DTP_OFFSET 0
#endif
+#ifdef TLS_ABOVE_TP
+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + TP_OFFSET)
+#else
+#define TP_ADJ(p) (p)
+#endif
+
#ifndef tls_mod_off_t
#define tls_mod_off_t size_t
#endif