4abb67dc5559c09b2eb42e7a436d8533d83bfcec
[ghc-hetmet.git] / includes / stg / MiscClosures.h
1 /* ----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-2009
4  *
5  * Declarations for various symbols exported by the RTS.
6  *
7  * ToDo: many of the symbols in here don't need to be exported, but
8  * our Cmm code generator doesn't know how to generate local symbols
9  * for the RTS bits (it assumes all RTS symbols are external).
10  *
11  * See wiki:Commentary/Compiler/Backends/PprC#Prototypes
12  *
13  * Do not #include this file directly: #include "Rts.h" instead.
14  *
15  * To understand the structure of the RTS headers, see the wiki:
16  *   http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
17  *
18  * --------------------------------------------------------------------------*/
19
20 #ifndef STGMISCCLOSURES_H
21 #define STGMISCCLOSURES_H
22
23 #if IN_STG_CODE
24 #  define RTS_RET_INFO(i)   extern W_(i)[]
25 #  define RTS_FUN_INFO(i)   extern W_(i)[]
26 #  define RTS_THUNK_INFO(i) extern W_(i)[]
27 #  define RTS_INFO(i)       extern W_(i)[]
28 #  define RTS_CLOSURE(i)    extern W_(i)[]
29 #  define RTS_FUN_DECL(f)   extern DLL_IMPORT_RTS StgFunPtr f(void)
30 #else
31 #  define RTS_RET_INFO(i)   extern DLL_IMPORT_RTS const StgRetInfoTable i
32 #  define RTS_FUN_INFO(i)   extern DLL_IMPORT_RTS const StgFunInfoTable i
33 #  define RTS_THUNK_INFO(i) extern DLL_IMPORT_RTS const StgThunkInfoTable i
34 #  define RTS_INFO(i)       extern DLL_IMPORT_RTS const StgInfoTable i
35 #  define RTS_CLOSURE(i)    extern DLL_IMPORT_RTS StgClosure i
36 #  define RTS_FUN_DECL(f)   extern DLL_IMPORT_RTS StgFunPtr f(void)
37 #endif
38
39 #ifdef TABLES_NEXT_TO_CODE
40 #  define RTS_RET(f)      RTS_INFO(f##_info)
41 #  define RTS_ENTRY(f)    RTS_INFO(f##_info)
42 #  define RTS_FUN(f)      RTS_FUN_INFO(f##_info)
43 #  define RTS_THUNK(f)    RTS_THUNK_INFO(f##_info)
44 #else
45 #  define RTS_RET(f)      RTS_INFO(f##_info)  RTS_FUN_DECL(f##_ret)
46 #  define RTS_ENTRY(f)    RTS_INFO(f##_info)  RTS_FUN_DECL(f##_entry)
47 #  define RTS_FUN(f)      RTS_FUN_INFO(f##_info) RTS_FUN_DECL(f##_entry)
48 #  define RTS_THUNK(f)    RTS_THUNK_INFO(f##_info) RTS_FUN_DECL(f##_entry)
49 #endif
50
51 /* Stack frames */
52 RTS_RET(stg_upd_frame);
53 RTS_RET(stg_bh_upd_frame);
54 RTS_RET(stg_marked_upd_frame);
55 RTS_RET(stg_noupd_frame);
56 RTS_RET(stg_catch_frame);
57 RTS_RET(stg_catch_retry_frame);
58 RTS_RET(stg_atomically_frame);
59 RTS_RET(stg_atomically_waiting_frame);
60 RTS_RET(stg_catch_stm_frame);
61 RTS_RET(stg_unblockAsyncExceptionszh_ret);
62
63 // RTS_FUN(stg_interp_constr_entry);
64 //
65 // This is referenced using the FFI in the compiler (ByteCodeItbls),
66 // so we can't give it the correct type here because the prototypes
67 // would clash (FFI references are always declared with type StgWord[]
68 // in the generated C code).
69
70 /* Magic glue code for when compiled code returns a value in R1/F1/D1
71    or a VoidRep to the interpreter. */
72 RTS_RET(stg_ctoi_R1p);
73 RTS_RET(stg_ctoi_R1unpt);
74 RTS_RET(stg_ctoi_R1n);
75 RTS_RET(stg_ctoi_F1);
76 RTS_RET(stg_ctoi_D1);
77 RTS_RET(stg_ctoi_L1);
78 RTS_RET(stg_ctoi_V);
79
80 RTS_RET(stg_apply_interp);
81
82 RTS_ENTRY(stg_IND);
83 RTS_ENTRY(stg_IND_direct);
84 RTS_ENTRY(stg_IND_STATIC);
85 RTS_ENTRY(stg_IND_PERM);
86 RTS_ENTRY(stg_IND_OLDGEN);
87 RTS_ENTRY(stg_IND_OLDGEN_PERM);
88 RTS_ENTRY(stg_BLACKHOLE);
89 RTS_ENTRY(stg_CAF_BLACKHOLE);
90 RTS_ENTRY(__stg_EAGER_BLACKHOLE);
91 RTS_ENTRY(stg_WHITEHOLE);
92 RTS_ENTRY(stg_BLOCKING_QUEUE_CLEAN);
93 RTS_ENTRY(stg_BLOCKING_QUEUE_DIRTY);
94
95 RTS_FUN(stg_BCO);
96 RTS_ENTRY(stg_EVACUATED);
97 RTS_ENTRY(stg_WEAK);
98 RTS_ENTRY(stg_DEAD_WEAK);
99 RTS_ENTRY(stg_STABLE_NAME);
100 RTS_ENTRY(stg_MVAR_CLEAN);
101 RTS_ENTRY(stg_MVAR_DIRTY);
102 RTS_ENTRY(stg_TSO);
103 RTS_ENTRY(stg_ARR_WORDS);
104 RTS_ENTRY(stg_MUT_ARR_WORDS);
105 RTS_ENTRY(stg_MUT_ARR_PTRS_CLEAN);
106 RTS_ENTRY(stg_MUT_ARR_PTRS_DIRTY);
107 RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN);
108 RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN0);
109 RTS_ENTRY(stg_MUT_VAR_CLEAN);
110 RTS_ENTRY(stg_MUT_VAR_DIRTY);
111 RTS_ENTRY(stg_END_TSO_QUEUE);
112 RTS_ENTRY(stg_MSG_WAKEUP);
113 RTS_ENTRY(stg_MSG_TRY_WAKEUP);
114 RTS_ENTRY(stg_MSG_THROWTO);
115 RTS_ENTRY(stg_MSG_BLACKHOLE);
116 RTS_ENTRY(stg_MSG_NULL);
117 RTS_ENTRY(stg_MVAR_TSO_QUEUE);
118 RTS_ENTRY(stg_catch);
119 RTS_ENTRY(stg_PAP);
120 RTS_ENTRY(stg_AP);
121 RTS_ENTRY(stg_AP_NOUPD);
122 RTS_ENTRY(stg_AP_STACK);
123 RTS_ENTRY(stg_dummy_ret);
124 RTS_ENTRY(stg_raise);
125 RTS_ENTRY(stg_raise_ret);
126 RTS_ENTRY(stg_TVAR_WATCH_QUEUE);
127 RTS_ENTRY(stg_INVARIANT_CHECK_QUEUE);
128 RTS_ENTRY(stg_ATOMIC_INVARIANT);
129 RTS_ENTRY(stg_TVAR);
130 RTS_ENTRY(stg_TREC_CHUNK);
131 RTS_ENTRY(stg_TREC_HEADER);
132 RTS_ENTRY(stg_END_STM_WATCH_QUEUE);
133 RTS_ENTRY(stg_END_INVARIANT_CHECK_QUEUE);
134 RTS_ENTRY(stg_END_STM_CHUNK_LIST);
135 RTS_ENTRY(stg_NO_TREC);
136
137 /* closures */
138
139 RTS_CLOSURE(stg_END_TSO_QUEUE_closure);
140 RTS_CLOSURE(stg_NO_FINALIZER_closure);
141 RTS_CLOSURE(stg_dummy_ret_closure);
142 RTS_CLOSURE(stg_forceIO_closure);
143
144 RTS_CLOSURE(stg_END_STM_WATCH_QUEUE_closure);
145 RTS_CLOSURE(stg_END_INVARIANT_CHECK_QUEUE_closure);
146 RTS_CLOSURE(stg_END_STM_CHUNK_LIST_closure);
147 RTS_CLOSURE(stg_NO_TREC_closure);
148
149 RTS_ENTRY(stg_NO_FINALIZER_entry);
150
151 #if IN_STG_CODE
152 extern DLL_IMPORT_RTS StgWordArray stg_CHARLIKE_closure;
153 extern DLL_IMPORT_RTS StgWordArray stg_INTLIKE_closure;
154 #else
155 extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[];
156 extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[];
157 #endif
158
159 /* StgStartup */
160
161 RTS_RET(stg_forceIO);
162 RTS_RET(stg_noforceIO);
163
164 /* standard entry points */
165
166 /* standard selector thunks */
167
168 RTS_RET(stg_sel_ret_0_upd);
169 RTS_RET(stg_sel_ret_1_upd);
170 RTS_RET(stg_sel_ret_2_upd);
171 RTS_RET(stg_sel_ret_3_upd);
172 RTS_RET(stg_sel_ret_4_upd);
173 RTS_RET(stg_sel_ret_5_upd);
174 RTS_RET(stg_sel_ret_6_upd);
175 RTS_RET(stg_sel_ret_7_upd);
176 RTS_RET(stg_sel_ret_8_upd);
177 RTS_RET(stg_sel_ret_9_upd);
178 RTS_RET(stg_sel_ret_10_upd);
179 RTS_RET(stg_sel_ret_11_upd);
180 RTS_RET(stg_sel_ret_12_upd);
181 RTS_RET(stg_sel_ret_13_upd);
182 RTS_RET(stg_sel_ret_14_upd);
183 RTS_RET(stg_sel_ret_15_upd);
184
185 RTS_ENTRY(stg_sel_0_upd);
186 RTS_ENTRY(stg_sel_1_upd);
187 RTS_ENTRY(stg_sel_2_upd);
188 RTS_ENTRY(stg_sel_3_upd);
189 RTS_ENTRY(stg_sel_4_upd);
190 RTS_ENTRY(stg_sel_5_upd);
191 RTS_ENTRY(stg_sel_6_upd);
192 RTS_ENTRY(stg_sel_7_upd);
193 RTS_ENTRY(stg_sel_8_upd);
194 RTS_ENTRY(stg_sel_9_upd);
195 RTS_ENTRY(stg_sel_10_upd);
196 RTS_ENTRY(stg_sel_11_upd);
197 RTS_ENTRY(stg_sel_12_upd);
198 RTS_ENTRY(stg_sel_13_upd);
199 RTS_ENTRY(stg_sel_14_upd);
200 RTS_ENTRY(stg_sel_15_upd);
201
202 RTS_ENTRY(stg_sel_0_noupd);
203 RTS_ENTRY(stg_sel_1_noupd);
204 RTS_ENTRY(stg_sel_2_noupd);
205 RTS_ENTRY(stg_sel_3_noupd);
206 RTS_ENTRY(stg_sel_4_noupd);
207 RTS_ENTRY(stg_sel_5_noupd);
208 RTS_ENTRY(stg_sel_6_noupd);
209 RTS_ENTRY(stg_sel_7_noupd);
210 RTS_ENTRY(stg_sel_8_noupd);
211 RTS_ENTRY(stg_sel_9_noupd);
212 RTS_ENTRY(stg_sel_10_noupd);
213 RTS_ENTRY(stg_sel_11_noupd);
214 RTS_ENTRY(stg_sel_12_noupd);
215 RTS_ENTRY(stg_sel_13_noupd);
216 RTS_ENTRY(stg_sel_14_noupd);
217 RTS_ENTRY(stg_sel_15_noupd);
218
219 /* standard ap thunks */
220
221 RTS_THUNK(stg_ap_1_upd);
222 RTS_THUNK(stg_ap_2_upd);
223 RTS_THUNK(stg_ap_3_upd);
224 RTS_THUNK(stg_ap_4_upd);
225 RTS_THUNK(stg_ap_5_upd);
226 RTS_THUNK(stg_ap_6_upd);
227 RTS_THUNK(stg_ap_7_upd);
228
229 /* standard application routines (see also rts/gen_apply.py, 
230  * and compiler/codeGen/CgStackery.lhs).
231  */
232 RTS_RET(stg_ap_v);
233 RTS_RET(stg_ap_f);
234 RTS_RET(stg_ap_d);
235 RTS_RET(stg_ap_l);
236 RTS_RET(stg_ap_n);
237 RTS_RET(stg_ap_p);
238 RTS_RET(stg_ap_pv);
239 RTS_RET(stg_ap_pp);
240 RTS_RET(stg_ap_ppv);
241 RTS_RET(stg_ap_ppp);
242 RTS_RET(stg_ap_pppv);
243 RTS_RET(stg_ap_pppp);
244 RTS_RET(stg_ap_ppppp);
245 RTS_RET(stg_ap_pppppp);
246
247 RTS_FUN_DECL(stg_ap_0_fast);
248 RTS_FUN_DECL(stg_ap_v_fast);
249 RTS_FUN_DECL(stg_ap_f_fast);
250 RTS_FUN_DECL(stg_ap_d_fast);
251 RTS_FUN_DECL(stg_ap_l_fast);
252 RTS_FUN_DECL(stg_ap_n_fast);
253 RTS_FUN_DECL(stg_ap_p_fast);
254 RTS_FUN_DECL(stg_ap_pv_fast);
255 RTS_FUN_DECL(stg_ap_pp_fast);
256 RTS_FUN_DECL(stg_ap_ppv_fast);
257 RTS_FUN_DECL(stg_ap_ppp_fast);
258 RTS_FUN_DECL(stg_ap_pppv_fast);
259 RTS_FUN_DECL(stg_ap_pppp_fast);
260 RTS_FUN_DECL(stg_ap_ppppp_fast);
261 RTS_FUN_DECL(stg_ap_pppppp_fast);
262 RTS_FUN_DECL(stg_PAP_apply);
263
264 /* standard GC & stack check entry points, all defined in HeapStackCheck.hc */
265
266 RTS_RET(stg_enter);
267 RTS_RET(stg_enter_checkbh);
268
269 RTS_RET(stg_gc_void);
270
271 RTS_FUN_DECL(__stg_gc_enter_1);
272 RTS_FUN_DECL(stg_gc_noregs);
273
274 RTS_RET(stg_gc_unpt_r1);
275 RTS_FUN_DECL(stg_gc_unpt_r1);
276
277 RTS_RET(stg_gc_unbx_r1);
278 RTS_FUN_DECL(stg_gc_unbx_r1);
279
280 RTS_RET(stg_gc_f1);
281 RTS_FUN_DECL(stg_gc_f1);
282
283 RTS_RET(stg_gc_d1);
284 RTS_FUN_DECL(stg_gc_d1);
285
286 RTS_RET(stg_gc_l1);
287 RTS_FUN_DECL(stg_gc_l1);
288
289 RTS_RET(stg_gc_fun);
290 RTS_FUN_DECL(__stg_gc_fun);
291
292 RTS_RET(stg_gc_gen);
293 RTS_FUN_DECL(stg_gc_gen);
294
295 RTS_RET(stg_ut_1_0_unreg);
296
297 RTS_FUN_DECL(stg_gc_gen_hp);
298 RTS_FUN_DECL(stg_gc_ut);
299 RTS_FUN_DECL(stg_gen_yield);
300 RTS_FUN_DECL(stg_yield_noregs);
301 RTS_FUN_DECL(stg_yield_to_interpreter);
302 RTS_FUN_DECL(stg_gen_block);
303 RTS_FUN_DECL(stg_block_noregs);
304 RTS_FUN_DECL(stg_block_1);
305 RTS_FUN_DECL(stg_block_blackhole);
306 RTS_FUN_DECL(stg_block_blackhole_finally);
307 RTS_FUN_DECL(stg_block_takemvar);
308 RTS_RET(stg_block_takemvar);
309 RTS_FUN_DECL(stg_block_putmvar);
310 RTS_RET(stg_block_putmvar);
311 #ifdef mingw32_HOST_OS
312 RTS_FUN_DECL(stg_block_async);
313 RTS_RET(stg_block_async);
314 RTS_FUN_DECL(stg_block_async_void);
315 RTS_RET(stg_block_async_void);
316 #endif
317 RTS_FUN_DECL(stg_block_stmwait);
318 RTS_FUN_DECL(stg_block_throwto);
319 RTS_RET(stg_block_throwto);
320
321 /* Entry/exit points from StgStartup.cmm */
322
323 RTS_RET(stg_stop_thread);
324
325 RTS_FUN_DECL(stg_returnToStackTop);
326 RTS_FUN_DECL(stg_returnToSched);
327 RTS_FUN_DECL(stg_returnToSchedNotPaused);
328 RTS_FUN_DECL(stg_returnToSchedButFirst);
329 RTS_FUN_DECL(stg_threadFinished);
330
331 RTS_FUN_DECL(stg_init_finish);
332 RTS_FUN_DECL(stg_init);
333
334 RTS_FUN_DECL(StgReturn);
335
336 /* -----------------------------------------------------------------------------
337    PrimOps
338    -------------------------------------------------------------------------- */
339
340 RTS_FUN_DECL(stg_plusIntegerzh);
341 RTS_FUN_DECL(stg_minusIntegerzh);
342 RTS_FUN_DECL(stg_timesIntegerzh);
343 RTS_FUN_DECL(stg_gcdIntegerzh);
344 RTS_FUN_DECL(stg_quotRemIntegerzh);
345 RTS_FUN_DECL(stg_quotIntegerzh);
346 RTS_FUN_DECL(stg_remIntegerzh);
347 RTS_FUN_DECL(stg_divExactIntegerzh);
348 RTS_FUN_DECL(stg_divModIntegerzh);
349
350 RTS_FUN_DECL(stg_cmpIntegerIntzh);
351 RTS_FUN_DECL(stg_cmpIntegerzh);
352 RTS_FUN_DECL(stg_integer2Intzh);
353 RTS_FUN_DECL(stg_integer2Wordzh);
354 RTS_FUN_DECL(stg_gcdIntegerIntzh);
355 RTS_FUN_DECL(stg_gcdIntzh);
356
357 RTS_FUN_DECL(stg_int2Integerzh);
358 RTS_FUN_DECL(stg_word2Integerzh);
359
360 RTS_FUN_DECL(stg_decodeFloatzuIntzh);
361 RTS_FUN_DECL(stg_decodeDoublezh);
362 RTS_FUN_DECL(stg_decodeDoublezu2Intzh);
363
364 RTS_FUN_DECL(stg_andIntegerzh);
365 RTS_FUN_DECL(stg_orIntegerzh);
366 RTS_FUN_DECL(stg_xorIntegerzh);
367 RTS_FUN_DECL(stg_complementIntegerzh);
368
369 #if SIZEOF_HSINT == 4
370
371 RTS_FUN_DECL(stg_int64ToIntegerzh);
372 RTS_FUN_DECL(stg_word64ToIntegerzh);
373
374 #endif
375
376 RTS_FUN_DECL(stg_unsafeThawArrayzh);
377 RTS_FUN_DECL(stg_newByteArrayzh);
378 RTS_FUN_DECL(stg_newPinnedByteArrayzh);
379 RTS_FUN_DECL(stg_newAlignedPinnedByteArrayzh);
380 RTS_FUN_DECL(stg_newArrayzh);
381
382 RTS_FUN_DECL(stg_newMutVarzh);
383 RTS_FUN_DECL(stg_atomicModifyMutVarzh);
384
385 RTS_FUN_DECL(stg_isEmptyMVarzh);
386 RTS_FUN_DECL(stg_newMVarzh);
387 RTS_FUN_DECL(stg_takeMVarzh);
388 RTS_FUN_DECL(stg_putMVarzh);
389 RTS_FUN_DECL(stg_tryTakeMVarzh);
390 RTS_FUN_DECL(stg_tryPutMVarzh);
391
392 RTS_FUN_DECL(stg_waitReadzh);
393 RTS_FUN_DECL(stg_waitWritezh);
394 RTS_FUN_DECL(stg_delayzh);
395 #ifdef mingw32_HOST_OS
396 RTS_FUN_DECL(stg_asyncReadzh);
397 RTS_FUN_DECL(stg_asyncWritezh);
398 RTS_FUN_DECL(stg_asyncDoProczh);
399 #endif
400
401 RTS_FUN_DECL(stg_catchzh);
402 RTS_FUN_DECL(stg_raisezh);
403 RTS_FUN_DECL(stg_raiseIOzh);
404
405 RTS_FUN_DECL(stg_makeStableNamezh);
406 RTS_FUN_DECL(stg_makeStablePtrzh);
407 RTS_FUN_DECL(stg_deRefStablePtrzh);
408
409 RTS_FUN_DECL(stg_forkzh);
410 RTS_FUN_DECL(stg_forkOnzh);
411 RTS_FUN_DECL(stg_yieldzh);
412 RTS_FUN_DECL(stg_killThreadzh);
413 RTS_FUN_DECL(stg_asyncExceptionsBlockedzh);
414 RTS_FUN_DECL(stg_blockAsyncExceptionszh);
415 RTS_FUN_DECL(stg_unblockAsyncExceptionszh);
416 RTS_FUN_DECL(stg_myThreadIdzh);
417 RTS_FUN_DECL(stg_labelThreadzh);
418 RTS_FUN_DECL(stg_isCurrentThreadBoundzh);
419 RTS_FUN_DECL(stg_threadStatuszh);
420
421 RTS_FUN_DECL(stg_mkWeakzh);
422 RTS_FUN_DECL(stg_mkWeakForeignzh);
423 RTS_FUN_DECL(stg_mkWeakForeignEnvzh);
424 RTS_FUN_DECL(stg_finalizzeWeakzh);
425 RTS_FUN_DECL(stg_deRefWeakzh);
426
427 RTS_FUN_DECL(stg_newBCOzh);
428 RTS_FUN_DECL(stg_mkApUpd0zh);
429
430 RTS_FUN_DECL(stg_retryzh);
431 RTS_FUN_DECL(stg_catchRetryzh);
432 RTS_FUN_DECL(stg_catchSTMzh);
433 RTS_FUN_DECL(stg_atomicallyzh);
434 RTS_FUN_DECL(stg_newTVarzh);
435 RTS_FUN_DECL(stg_readTVarzh);
436 RTS_FUN_DECL(stg_readTVarIOzh);
437 RTS_FUN_DECL(stg_writeTVarzh);
438 RTS_FUN_DECL(stg_checkzh);
439
440 RTS_FUN_DECL(stg_unpackClosurezh);
441 RTS_FUN_DECL(stg_getApStackValzh);
442 RTS_FUN_DECL(stg_getSparkzh);
443
444 RTS_FUN_DECL(stg_noDuplicatezh);
445
446 RTS_FUN_DECL(stg_traceCcszh);
447 RTS_FUN_DECL(stg_traceEventzh);
448
449 /* Other misc stuff */
450 // See wiki:Commentary/Compiler/Backends/PprC#Prototypes
451
452 #if IN_STG_CODE && !IN_STGCRUN
453
454 // Interpreter.c
455 extern StgWord rts_stop_next_breakpoint[];
456 extern StgWord rts_stop_on_exception[];
457 extern StgWord rts_breakpoint_io_action[];
458
459 // Schedule.c
460 extern StgWord RTS_VAR(blocked_queue_hd), RTS_VAR(blocked_queue_tl);
461 extern StgWord RTS_VAR(sleeping_queue);
462 extern StgWord RTS_VAR(blackhole_queue);
463 extern StgWord RTS_VAR(sched_mutex);
464
465 // Apply.cmm
466 // canned bitmap for each arg type
467 extern StgWord stg_arg_bitmaps[];
468 extern StgWord stg_ap_stack_entries[];
469 extern StgWord stg_stack_save_entries[];
470
471 // Storage.c
472 extern unsigned int RTS_VAR(g0);
473 extern unsigned int RTS_VAR(alloc_blocks_lim);
474 extern StgWord RTS_VAR(weak_ptr_list);
475 extern StgWord RTS_VAR(atomic_modify_mutvar_mutex);
476
477 // RtsFlags
478 extern StgWord RTS_VAR(RtsFlags); // bogus type
479
480 // Stable.c
481 extern StgWord RTS_VAR(stable_ptr_table);
482
483 // Profiling.c
484 extern unsigned int RTS_VAR(era);
485 extern StgWord      RTS_VAR(CCCS);              /* current CCS */
486 extern unsigned int RTS_VAR(entering_PAP);
487 extern StgWord      RTS_VAR(CC_LIST);               /* registered CC list */
488 extern StgWord      RTS_VAR(CCS_LIST);         /* registered CCS list */
489 extern unsigned int RTS_VAR(CC_ID);     /* global ids */
490 extern unsigned int RTS_VAR(CCS_ID);
491
492 #endif
493
494 #endif /* STGMISCCLOSURES_H */