move the "meat" into the wiki, this file just contains pointers now
[ghc.git] / includes / RtsConfig.h
1 /* -----------------------------------------------------------------------------
2 *
3 * (c) The GHC Team, 1998-2004
4 *
5 * Rts settings.
6 *
7 * NOTE: assumes #include "ghcconfig.h"
8 *
9 * NB: THIS FILE IS INCLUDED IN NON-C CODE AND DATA! #defines only please.
10 * ---------------------------------------------------------------------------*/
11
12 #ifndef RTSCONFIG_H
13 #define RTSCONFIG_H
14
15 /*
16 * SUPPORT_LONG_LONGS controls whether we need to support long longs on a
17 * particular platform. On 64-bit platforms, we don't need to support
18 * long longs since regular machine words will do just fine.
19 */
20 #if HAVE_LONG_LONG && SIZEOF_VOID_P < 8
21 #define SUPPORT_LONG_LONGS 1
22 #endif
23
24 /*
25 * Whether the runtime system will use libbfd for debugging purposes.
26 */
27 #if defined(DEBUG) && defined(HAVE_BFD_H) && !defined(_WIN32) && !defined(PAR) && !defined(GRAN)
28 #define USING_LIBBFD 1
29 #endif
30
31 /* Turn lazy blackholing and eager blackholing on/off.
32 *
33 * Using eager blackholing makes things easier to debug because
34 * the blackholes are more predictable - but it's slower and less sexy.
35 *
36 * For now, do lazy and not eager.
37 */
38
39 /* TICKY_TICKY needs EAGER_BLACKHOLING to verify no double-entries of
40 * single-entry thunks.
41 */
42 /* #if defined(TICKY_TICKY) || defined(THREADED_RTS) */
43 #if defined(TICKY_TICKY)
44 # define EAGER_BLACKHOLING
45 #else
46 # define LAZY_BLACKHOLING
47 #endif
48
49 /* TABLES_NEXT_TO_CODE says whether to assume that info tables are
50 * assumed to reside just before the code for a function.
51 *
52 * UNDEFINING THIS WON'T WORK ON ITS OWN. You have been warned.
53 */
54 #if !defined(USE_MINIINTERPRETER) && !defined(ia64_HOST_ARCH) && !defined (powerpc64_HOST_ARCH)
55 #define TABLES_NEXT_TO_CODE
56 #endif
57
58 /* -----------------------------------------------------------------------------
59 Labels - entry labels & info labels point to the same place in
60 TABLES_NEXT_TO_CODE, so we only generate the _info label. Jumps
61 must therefore be directed to foo_info rather than foo_entry when
62 TABLES_NEXT_TO_CODE is on.
63
64 This isn't a good place for these macros, but they need to be
65 available to .cmm sources as well as C and we don't have a better
66 place.
67 -------------------------------------------------------------------------- */
68
69 #ifdef TABLES_NEXT_TO_CODE
70 #define ENTRY_LBL(f) f##_info
71 #else
72 #define ENTRY_LBL(f) f##_entry
73 #endif
74
75 #ifdef TABLES_NEXT_TO_CODE
76 #define RET_LBL(f) f##_info
77 #else
78 #define RET_LBL(f) f##_ret
79 #endif
80
81 /* -----------------------------------------------------------------------------
82 Signals - supported on non-PAR versions of the runtime. See RtsSignals.h.
83 -------------------------------------------------------------------------- */
84
85 #if !defined(PAR)
86 #define RTS_USER_SIGNALS 1
87 #endif
88
89 #endif /* RTSCONFIG_H */