[project @ 2002-01-29 16:49:42 by simonmar]
[ghc-hetmet.git] / ghc / includes / mkDerivedConstants.c
1 /* --------------------------------------------------------------------------
2  * $Id: mkDerivedConstants.c,v 1.2 2002/01/29 16:49: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 TICKY_ITBL_SIZE %d\n", sizeofW(StgTickyInfo));
35
36     printf("#define STD_UF_SIZE   %d\n", sizeofW(StgUpdateFrame));
37     printf("#define GRAN_UF_SIZE   %d\n",  
38            sizeofW(StgUpdateFrame) + sizeofW(StgGranHeader));
39     printf("#define PROF_UF_SIZE   %d\n",  
40            sizeofW(StgUpdateFrame) + sizeofW(StgProfHeader));
41
42     printf("#define UF_RET     %d\n",
43            OFFSET(StgUpdateFrame,header.info));
44
45     printf("#define UF_SU      %d\n",  
46            OFFSET(StgUpdateFrame,link) / sizeof(W_));
47
48     printf("#define UF_UPDATEE %d\n",
49            OFFSET(StgUpdateFrame,updatee) / sizeof(W_));
50
51     printf("#define STD_SEQ_FRAME_SIZE   %d\n", sizeofW(StgSeqFrame));
52     printf("#define GRAN_SEQ_FRAME_SIZE   %d\n",  
53            sizeofW(StgSeqFrame) + sizeofW(StgGranHeader));
54     printf("#define PROF_SEQ_FRAME_SIZE   %d\n",  
55            sizeofW(StgSeqFrame) + sizeofW(StgProfHeader));
56
57     printf("#define BLOCK_SIZE   %d\n", BLOCK_SIZE);
58     printf("#define MBLOCK_SIZE   %d\n", MBLOCK_SIZE);  
59     return 0;
60 }