# define MONO_THREAD_VAR_OFFSET(var,offset) do { guint64 foo; \
__asm__ ("basr %%r1,0\n\t" \
"j 0f\n\t" \
- ".quad " #var "@INDNTPOFF\n\t" \
+ ".quad " #var "@TLSGD\n\t" \
"0:\n\t" \
"lg %%r2,4(%%r1)\n\t" \
- "brasl %%r14,__tls_get_offset@PLT\n\t" \
+ "brasl %%r14,__tls_get_offset@PLT:tls_gdcall:"#var"\n\t" \
"lgr %0,%%r2\n\t" \
: "=r" (foo) : \
: "1", "2", "14", "cc"); \
#define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
#endif
-#elif defined(__APPLE__) && defined(__i386__)
+#elif defined(__APPLE__) && (defined(__i386__) || defined(__x86_64__))
#define MONO_HAVE_FAST_TLS
#define MONO_FAST_TLS_SET(x,y) pthread_setspecific(x, y)
#define MONO_DEPRECATED
#endif
+#ifdef __GNUC__
+#define MONO_ALWAYS_INLINE __attribute__((always_inline))
+#else
+#define MONO_ALWAYS_INLINE
+#endif
+
#endif /* __UTILS_MONO_COMPILER_H__*/