[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / includes / mkNativeHdr.c
1 /* --------------------------------------------------------------------------
2  * $Id: mkNativeHdr.c,v 1.2 1998/12/02 13:21:50 simonm Exp $
3  *
4  * (c) The GHC Team, 1992-1998
5  *
6  * Generate a header for the native code generator
7  *
8  * ------------------------------------------------------------------------*/
9
10 #include "Stg.h"
11
12 #define OFFSET(table, x) ((StgUnion *) &(x) - (StgUnion *) (&table))
13
14 #define OFFSET_R1    OFFSET(RegTable, RegTable.rR1)
15 #define OFFSET_R2    OFFSET(RegTable, RegTable.rR2)
16 #define OFFSET_R3    OFFSET(RegTable, RegTable.rR3)
17 #define OFFSET_R4    OFFSET(RegTable, RegTable.rR4)
18 #define OFFSET_R5    OFFSET(RegTable, RegTable.rR5)
19 #define OFFSET_R6    OFFSET(RegTable, RegTable.rR6)
20 #define OFFSET_R7    OFFSET(RegTable, RegTable.rR7)
21 #define OFFSET_R8    OFFSET(RegTable, RegTable.rR8)
22 #define OFFSET_F1    OFFSET(RegTable, RegTable.rF1)
23 #define OFFSET_F2    OFFSET(RegTable, RegTable.rF2)
24 #define OFFSET_F3    OFFSET(RegTable, RegTable.rF3)
25 #define OFFSET_F4    OFFSET(RegTable, RegTable.rF4)
26 #define OFFSET_D1    OFFSET(RegTable, RegTable.rD1)
27 #define OFFSET_D2    OFFSET(RegTable, RegTable.rD2)
28 #define OFFSET_L1    OFFSET(RegTable, RegTable.rL1)
29 #define OFFSET_Sp    OFFSET(RegTable, RegTable.rSp)
30 #define OFFSET_Su    OFFSET(RegTable, RegTable.rSu)
31 #define OFFSET_SpLim OFFSET(RegTable, RegTable.rSpLim)
32 #define OFFSET_Hp    OFFSET(RegTable, RegTable.rHp)
33 #define OFFSET_HpLim OFFSET(RegTable, RegTable.rHpLim)
34
35 #define TSO_SP       OFFSET(tso, tso.sp)
36 #define TSO_SPLIM    OFFSET(tso, tso.splim)
37 #define TSO_SU       OFFSET(tso, tso.su)
38
39 StgRegTable RegTable;
40 StgTSO tso;
41
42 int
43 main()
44 {
45     printf("-- This file is created automatically.  Do not edit by hand.\n\n");
46
47     printf("\n-- Base table offsets for the Native Code Generator\n");
48
49     printf("#define OFFSET_R1 %d\n", OFFSET_R1);
50     printf("#define OFFSET_R2 %d\n", OFFSET_R2);
51     printf("#define OFFSET_R3 %d\n", OFFSET_R3);
52     printf("#define OFFSET_R4 %d\n", OFFSET_R4);
53     printf("#define OFFSET_R5 %d\n", OFFSET_R5);
54     printf("#define OFFSET_R6 %d\n", OFFSET_R6);
55     printf("#define OFFSET_R7 %d\n", OFFSET_R7);
56     printf("#define OFFSET_R8 %d\n", OFFSET_R8);
57     printf("#define OFFSET_F1 %d\n", OFFSET_F1);
58     printf("#define OFFSET_F2 %d\n", OFFSET_F2);
59     printf("#define OFFSET_F3 %d\n", OFFSET_F3);
60     printf("#define OFFSET_F4 %d\n", OFFSET_F4);
61     printf("#define OFFSET_D1 %d\n", OFFSET_D1);
62     printf("#define OFFSET_D2 %d\n", OFFSET_D2);
63 #ifdef SUPPORT_LONG_LONGS
64     printf("#define OFFSET_L1 %d\n", OFFSET_L1);
65 #endif
66     printf("#define OFFSET_Sp %d\n", OFFSET_Sp);
67     printf("#define OFFSET_Su %d\n", OFFSET_Su);
68     printf("#define OFFSET_SpLim %d\n", OFFSET_SpLim);
69     printf("#define OFFSET_Hp %d\n", OFFSET_Hp);
70     printf("#define OFFSET_HpLim %d\n", OFFSET_HpLim);
71
72     printf("\n-- Storage Manager offsets for the Native Code Generator\n");
73
74     printf("\n-- TSO offsets for the Native Code Generator\n");
75
76     printf("#define TSO_SP %d\n", TSO_SP);
77     printf("#define TSO_SU %d\n", TSO_SU);
78     printf("#define TSO_SPLIM %d\n", TSO_SPLIM);
79
80     printf("\n-- FILE size for the Native Code Generator\n");
81
82     printf("#define FILE_SIZE %d\n", sizeof(*stdin));
83
84     exit(0);
85 }