[project @ 2001-10-03 13:57:42 by simonmar]
[ghc-hetmet.git] / ghc / includes / mkDerivedConstants.c
1 /* --------------------------------------------------------------------------
2  * $Id: mkDerivedConstants.c,v 1.1 2001/10/03 13:57:42 simonmar 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     printf("#define PAR_HDR_SIZE   %d\n", sizeofW(StgParHeader));
23     printf("#define TICKY_HDR_SIZE %d\n", sizeofW(StgTickyHeader));
24
25     printf("#define ARR_WORDS_HDR_SIZE  %d\n", 
26            sizeofW(StgArrWords) - sizeofW(StgHeader));
27
28     printf("#define ARR_PTRS_HDR_SIZE   %d\n", 
29            sizeofW(StgMutArrPtrs) - sizeofW(StgHeader));
30
31     printf("#define STD_ITBL_SIZE   %d\n", sizeofW(StgInfoTable));
32     printf("#define PROF_ITBL_SIZE  %d\n", sizeofW(StgProfInfo));
33     printf("#define GRAN_ITBL_SIZE  %d\n", 0);
34     printf("#define PAR_ITBL_SIZE   %d\n", sizeofW(StgParInfo));
35     printf("#define TICKY_ITBL_SIZE %d\n", sizeofW(StgTickyInfo));
36
37     printf("#define STD_UF_SIZE   %d\n", sizeofW(StgUpdateFrame));
38     printf("#define GRAN_UF_SIZE   %d\n",  
39            sizeofW(StgUpdateFrame) + sizeofW(StgGranHeader));
40     printf("#define PROF_UF_SIZE   %d\n",  
41            sizeofW(StgUpdateFrame) + sizeofW(StgProfHeader));
42
43     printf("#define UF_RET     %d\n",
44            OFFSET(StgUpdateFrame,header.info));
45
46     printf("#define UF_SU      %d\n",  
47            OFFSET(StgUpdateFrame,link) / sizeof(W_));
48
49     printf("#define UF_UPDATEE %d\n",
50            OFFSET(StgUpdateFrame,updatee) / sizeof(W_));
51
52     printf("#define STD_SEQ_FRAME_SIZE   %d\n", sizeofW(StgSeqFrame));
53     printf("#define GRAN_SEQ_FRAME_SIZE   %d\n",  
54            sizeofW(StgSeqFrame) + sizeofW(StgGranHeader));
55     printf("#define PROF_SEQ_FRAME_SIZE   %d\n",  
56            sizeofW(StgSeqFrame) + sizeofW(StgProfHeader));
57
58     printf("#define BLOCK_SIZE   %d\n", BLOCK_SIZE);
59     printf("#define MBLOCK_SIZE   %d\n", MBLOCK_SIZE);  
60     return 0;
61 }