Fri Feb 25 14:54:19 CET 2005 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / utils / mono-compiler.h
1 #ifndef __UTILS_MONO_COMPILER_H__
2 #define __UTILS_MONO_COMPILER_H__
3 /*
4  * This file includes macros used in the runtime to encapsulate different
5  * compiler behaviours.
6  */
7 #include <config.h>
8
9 #ifdef HAVE_KW_THREAD
10 #if HAVE_TLS_MODEL_ATTR
11
12 #if defined(PIC) && defined(__x86_64__)
13 #define MONO_TLS_FAST 
14 #else
15 #define MONO_TLS_FAST __attribute__((tls_model("local-exec")))
16 #endif
17
18 #else
19 #define MONO_TLS_FAST 
20 #endif
21
22 #if defined(__GNUC__) && defined(__i386__)
23 #define MONO_THREAD_VAR_OFFSET(var,offset) __asm ("jmp 1f; .section writetext, \"awx\"; 1: movl $" #var "@ntpoff, %0; jmp 2f; .previous; 2:" : "=r" (offset));
24 #else
25 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
26 #endif
27
28 #else /* no HAVE_KW_THREAD */
29
30 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
31
32 #endif
33
34 #endif /* __UTILS_MONO_COMPILER_H__*/
35