projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix excessively slow TLS performance on some mips models
[musl]
/
arch
/
mips
/
pthread_arch.h
diff --git
a/arch/mips/pthread_arch.h
b/arch/mips/pthread_arch.h
index
1e7839e
..
376b774
100644
(file)
--- a/
arch/mips/pthread_arch.h
+++ b/
arch/mips/pthread_arch.h
@@
-1,19
+1,18
@@
-static inline
struct pthread *__pthread_self
()
+static inline
uintptr_t __get_tp
()
{
{
+ register uintptr_t tp __asm__("$3");
#if __mips_isa_rev < 2
#if __mips_isa_rev < 2
- register char *tp __asm__("$3");
__asm__ (".word 0x7c03e83b" : "=r" (tp) );
#else
__asm__ (".word 0x7c03e83b" : "=r" (tp) );
#else
- char *tp;
__asm__ ("rdhwr %0, $29" : "=r" (tp) );
#endif
__asm__ ("rdhwr %0, $29" : "=r" (tp) );
#endif
- return
(pthread_t)(tp - 0x7000 - sizeof(struct pthread))
;
+ return
tp
;
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
}
#define TLS_ABOVE_TP
#define GAP_ABOVE_TP 0
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
#define MC_PC pc
#define DTP_OFFSET 0x8000
#define MC_PC pc