Merge pull request #495 from nicolas-raoul/fix-for-issue2907-with-no-formatting-changes
[mono.git] / mono / utils / mono-compiler.h
index 2e8b27db8196d146979665cb9d617d30fed71b7a..cc3d00cc50e27a764e002e3ae6a1bc6ce2564dec 100644 (file)
 #  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__*/