summaryrefslogtreecommitdiff
path: root/include/mimalloc-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mimalloc-internal.h')
-rw-r--r--include/mimalloc-internal.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/mimalloc-internal.h b/include/mimalloc-internal.h
index e3e78e4..df700d3 100644
--- a/include/mimalloc-internal.h
+++ b/include/mimalloc-internal.h
@@ -707,7 +707,11 @@ static inline void* mi_tls_slot(size_t slot) mi_attr_noexcept {
res = tcb[slot];
#elif defined(__aarch64__)
void** tcb; UNUSED(ofs);
+#if defined(__MACH__)
+ __asm__ volatile ("mrs %0, tpidrro_el0" : "=r" (tcb));
+#else
__asm__ volatile ("mrs %0, tpidr_el0" : "=r" (tcb));
+#endif
res = tcb[slot];
#endif
return res;
@@ -730,7 +734,11 @@ static inline void mi_tls_slot_set(size_t slot, void* value) mi_attr_noexcept {
tcb[slot] = value;
#elif defined(__aarch64__)
void** tcb; UNUSED(ofs);
+#if defined(__MACH__)
+ __asm__ volatile ("mrs %0, tpidrro_el0" : "=r" (tcb));
+#else
__asm__ volatile ("mrs %0, tpidr_el0" : "=r" (tcb));
+#endif
tcb[slot] = value;
#endif
}