1 #ifndef __UTILS_MONO_COMPILER_H__
2 #define __UTILS_MONO_COMPILER_H__
4 * This file includes macros used in the runtime to encapsulate different
10 #if HAVE_TLS_MODEL_ATTR
12 #if defined(PIC) && defined(__x86_64__)
15 #define MONO_TLS_FAST __attribute__((tls_model("local-exec")))
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));
25 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
28 #else /* no HAVE_KW_THREAD */
30 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
34 /* Deal with Microsoft C compiler differences */
38 #define isnan(x) _isnan(x)
\r
39 #define trunc(x) ((int)(x))
\r
40 #define isinf(x) (_isnan(x) ? 0 : (_fpclass(x) == _FPCLASS_NINF) ? -1 : (_fpclass(x) == _FPCLASS_PINF) ? 1 : 0)
\r
42 #define popen _popen
\r
43 #define pclose _pclose
\r
46 #define mkdir(x) _mkdir(x)
\r
48 /* GCC specific functions aren't available */
\r
49 #define __builtin_return_address(x) NULL
\r
51 #endif /* _MSC_VER */
\r
54 #endif /* __UTILS_MONO_COMPILER_H__*/