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