[project @ 2002-06-07 09:40:05 by matthewc]
[ghc-hetmet.git] / ghc / includes / mkDerivedConstants.c
1 /* --------------------------------------------------------------------------
2  * $Id: mkDerivedConstants.c,v 1.3 2002/01/29 18:32:18 sof Exp $
3  *
4  * (c) The GHC Team, 1992-1998
5  *
6  * Generate a header for the native code generator
7  *
8  * ------------------------------------------------------------------------*/
9
10 #include "Rts.h"
11
12 #define OFFSET(s_type, field) ((unsigned int)&(((s_type*)0)->field))
13
14 int
15 main(int argc, char *argv[])
16 {
17     printf("-- This file is created automatically.  Do not edit by hand.\n\n");
18
19     printf("#define STD_HDR_SIZE   %d\n", sizeofW(StgHeader));
20     printf("#define PROF_HDR_SIZE  %d\n", sizeofW(StgProfHeader));
21     printf("#define GRAN_HDR_SIZE  %d\n", sizeofW(StgGranHeader));
22
23     printf("#define ARR_WORDS_HDR_SIZE  %d\n", 
24            sizeofW(StgArrWords) - sizeofW(StgHeader));
25
26     printf("#define ARR_PTRS_HDR_SIZE   %d\n", 
27            sizeofW(StgMutArrPtrs) - sizeofW(StgHeader));
28
29     printf("#define STD_ITBL_SIZE   %d\n", sizeofW(StgInfoTable));
30     printf("#define PROF_ITBL_SIZE  %d\n", sizeofW(StgProfInfo));
31     printf("#define GRAN_ITBL_SIZE  %d\n", 0);
32     printf("#define TICKY_ITBL_SIZE %d\n", sizeofW(StgTickyInfo));
33
34     printf("#define STD_UF_SIZE   %d\n", sizeofW(StgUpdateFrame));
35     printf("#define GRAN_UF_SIZE   %d\n",  
36            sizeofW(StgUpdateFrame) + sizeofW(StgGranHeader));
37     printf("#define PROF_UF_SIZE   %d\n",  
38            sizeofW(StgUpdateFrame) + sizeofW(StgProfHeader));
39
40     printf("#define UF_RET     %d\n",
41            OFFSET(StgUpdateFrame,header.info));
42
43     printf("#define UF_SU      %d\n",  
44            OFFSET(StgUpdateFrame,link) / sizeof(W_));
45
46     printf("#define UF_UPDATEE %d\n",
47            OFFSET(StgUpdateFrame,updatee) / sizeof(W_));
48
49     printf("#define STD_SEQ_FRAME_SIZE   %d\n", sizeofW(StgSeqFrame));
50     printf("#define GRAN_SEQ_FRAME_SIZE   %d\n",  
51            sizeofW(StgSeqFrame) + sizeofW(StgGranHeader));
52     printf("#define PROF_SEQ_FRAME_SIZE   %d\n",  
53            sizeofW(StgSeqFrame) + sizeofW(StgProfHeader));
54
55     printf("#define BLOCK_SIZE   %d\n", BLOCK_SIZE);
56     printf("#define MBLOCK_SIZE   %d\n", MBLOCK_SIZE);  
57     return 0;
58 }