[project @ 2003-11-14 09:27:00 by stolz]
[ghc-hetmet.git] / ghc / includes / mkDerivedConstants.c
1 /* --------------------------------------------------------------------------
2  * $Id: mkDerivedConstants.c,v 1.4 2002/12/11 15:36:40 simonmar Exp $
3  *
4  * (c) The GHC Team, 1992-1998
5  *
6  * Generate a header for the native code generator
7  *
8  * ------------------------------------------------------------------------*/
9
10 #define IN_STG_CODE 0
11 #include "Stg.h"
12
13 #define OFFSET(s_type, field) ((unsigned int)&(((s_type*)0)->field))
14
15 int
16 main(int argc, char *argv[])
17 {
18     printf("-- This file is created automatically.  Do not edit by hand.\n\n");
19
20     printf("#define STD_HDR_SIZE   %d\n", sizeofW(StgHeader));
21     printf("#define PROF_HDR_SIZE  %d\n", sizeofW(StgProfHeader));
22     printf("#define GRAN_HDR_SIZE  %d\n", sizeofW(StgGranHeader));
23
24     printf("#define ARR_WORDS_HDR_SIZE  %d\n", 
25            sizeofW(StgArrWords) - sizeofW(StgHeader));
26
27     printf("#define ARR_PTRS_HDR_SIZE   %d\n", 
28            sizeofW(StgMutArrPtrs) - sizeofW(StgHeader));
29
30     printf("#define STD_ITBL_SIZE   %d\n", sizeofW(StgInfoTable));
31     printf("#define RET_ITBL_SIZE   %d\n", sizeofW(StgRetInfoTable) - 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_UPDATEE %d\n",
46            OFFSET(StgUpdateFrame,updatee) / sizeof(W_));
47
48     printf("#define BLOCK_SIZE   %d\n", BLOCK_SIZE);
49     printf("#define MBLOCK_SIZE   %d\n", MBLOCK_SIZE);  
50     return 0;
51 }