diff options
Diffstat (limited to 'ghc/includes/mkNativeHdr.lc')
-rw-r--r-- | ghc/includes/mkNativeHdr.lc | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/ghc/includes/mkNativeHdr.lc b/ghc/includes/mkNativeHdr.lc new file mode 100644 index 0000000000..c4f51c75a8 --- /dev/null +++ b/ghc/includes/mkNativeHdr.lc @@ -0,0 +1,117 @@ +% +% (c) The AQUA Project, Glasgow University, 1994 +% +\section[mkNativeGen-header]{Generate a header for the native code generator} + +\begin{code} + +#define MAIN_REG_MAP +#include "stgdefs.h" + +#define OFFSET(table, x) ((StgUnion *) &(x) - (StgUnion *) (&table)) + +#define OFFSET_Dbl1 OFFSET(MainRegTable, RTBL_Dbl1) +#define OFFSET_Dbl2 OFFSET(MainRegTable, RTBL_Dbl2) +#define OFFSET_Flt1 OFFSET(MainRegTable, RTBL_Flt1) +#define OFFSET_Flt2 OFFSET(MainRegTable, RTBL_Flt2) +#define OFFSET_Flt3 OFFSET(MainRegTable, RTBL_Flt3) +#define OFFSET_Flt4 OFFSET(MainRegTable, RTBL_Flt4) +#define OFFSET_R1 OFFSET(MainRegTable, RTBL_R1) +#define OFFSET_R2 OFFSET(MainRegTable, RTBL_R2) +#define OFFSET_R3 OFFSET(MainRegTable, RTBL_R3) +#define OFFSET_R4 OFFSET(MainRegTable, RTBL_R4) +#define OFFSET_R5 OFFSET(MainRegTable, RTBL_R5) +#define OFFSET_R6 OFFSET(MainRegTable, RTBL_R6) +#define OFFSET_R7 OFFSET(MainRegTable, RTBL_R7) +#define OFFSET_R8 OFFSET(MainRegTable, RTBL_R8) +#define OFFSET_SpA OFFSET(MainRegTable, RTBL_SpA) +#define OFFSET_SuA OFFSET(MainRegTable, RTBL_SuA) +#define OFFSET_SpB OFFSET(MainRegTable, RTBL_SpB) +#define OFFSET_SuB OFFSET(MainRegTable, RTBL_SuB) +#define OFFSET_Hp OFFSET(MainRegTable, RTBL_Hp) +#define OFFSET_HpLim OFFSET(MainRegTable, RTBL_HpLim) +#define OFFSET_Tag OFFSET(MainRegTable, RTBL_Tag) +#define OFFSET_Ret OFFSET(MainRegTable, RTBL_Ret) +#define OFFSET_Activity OFFSET(MainRegTable, RTBL_Activity) +#define OFFSET_StkO OFFSET(MainRegTable, RTBL_StkO) +#define OFFSET_Liveness OFFSET(MainRegTable, RTBL_Liveness) + +#define SM_HP OFFSET(StorageMgrInfo, StorageMgrInfo.hp) +#define SM_HPLIM OFFSET(StorageMgrInfo, StorageMgrInfo.hplim) +#define SM_ROOTNO OFFSET(StorageMgrInfo, StorageMgrInfo.rootno) +#define SM_ROOTS OFFSET(StorageMgrInfo, StorageMgrInfo.roots) +#define SM_CAFLIST OFFSET(StorageMgrInfo, StorageMgrInfo.CAFlist) +#define SM_OLDMUTABLES OFFSET(StorageMgrInfo, StorageMgrInfo.OldMutables) +#define SM_OLDLIM OFFSET(StorageMgrInfo, StorageMgrInfo.OldLim) +#define SM_MALLOCPTRLIST OFFSET(StorageMgrInfo, StorageMgrInfo.MallocPtrList) +#define SM_OLDMALLOCPTRLIST OFFSET(StorageMgrInfo, StorageMgrInfo.OldMallocPtrList) +#define SM_STABLEPOINTERTABLE OFFSET(StorageMgrInfo, StorageMgrInfo.StablePointerTable) + +STGRegisterTable MainRegTable; +smInfo StorageMgrInfo; + +int +main() +{ + printf("-- This file is created automatically. Do not edit by hand.\n\n"); + + printf("\n-- Base table offsets for the Native Code Generator\n"); + + printf("#define OFFSET_Dbl1 %d\n", OFFSET_Dbl1); + printf("#define OFFSET_Dbl2 %d\n", OFFSET_Dbl2); + printf("#define OFFSET_Flt1 %d\n", OFFSET_Flt1); + printf("#define OFFSET_Flt2 %d\n", OFFSET_Flt2); + printf("#define OFFSET_Flt3 %d\n", OFFSET_Flt3); + printf("#define OFFSET_Flt4 %d\n", OFFSET_Flt4); + printf("#define OFFSET_R1 %d\n", OFFSET_R1); + printf("#define OFFSET_R2 %d\n", OFFSET_R2); + printf("#define OFFSET_R3 %d\n", OFFSET_R3); + printf("#define OFFSET_R4 %d\n", OFFSET_R4); + printf("#define OFFSET_R5 %d\n", OFFSET_R5); + printf("#define OFFSET_R6 %d\n", OFFSET_R6); + printf("#define OFFSET_R7 %d\n", OFFSET_R7); + printf("#define OFFSET_R8 %d\n", OFFSET_R8); + printf("#define OFFSET_SpA %d\n", OFFSET_SpA); + printf("#define OFFSET_SuA %d\n", OFFSET_SuA); + printf("#define OFFSET_SpB %d\n", OFFSET_SpB); + printf("#define OFFSET_SuB %d\n", OFFSET_SuB); + printf("#define OFFSET_Hp %d\n", OFFSET_Hp); + printf("#define OFFSET_HpLim %d\n", OFFSET_HpLim); + printf("#define OFFSET_Tag %d\n", OFFSET_Tag); + printf("#define OFFSET_Ret %d\n", OFFSET_Ret); + printf("#define OFFSET_Activity %d\n", OFFSET_Activity); +#ifdef CONCURRENT + printf("#define OFFSET_StkO %d\n", OFFSET_StkO); + printf("#define OFFSET_Liveness %d\n", OFFSET_Liveness); +#else + printf("#define OFFSET_StkO panic \"OFFSET_StkO\"\n"); + printf("#define OFFSET_Liveness panic \"OFFSET_Liveness\"\n"); +#endif + + printf("\n-- Storage Manager offsets for the Native Code Generator\n"); + + printf("#define SM_HP %d\n", SM_HP); + printf("#define SM_HPLIM %d\n", SM_HPLIM); + printf("#define SM_ROOTNO %d\n", SM_ROOTNO); + printf("#define SM_ROOTS %d\n", SM_ROOTS); + printf("#define SM_CAFLIST %d\n", SM_CAFLIST); +#if defined(GCap) || defined(GCgn) + printf("#define SM_OLDMUTABLES %d\n", SM_OLDMUTABLES); + printf("#define SM_OLDLIM %d\n", SM_OLDLIM); +#endif +#ifndef PAR + printf("#define SM_MALLOCPTRLIST %d\n", SM_MALLOCPTRLIST); +#if defined(GCap) || defined(GCgn) + printf("#define SM_OLDMALLOCPTRLIST %d\n", SM_OLDMALLOCPTRLIST); +#endif + printf("#define SM_STABLEPOINTERTABLE %d\n", SM_STABLEPOINTERTABLE); +#endif + + printf("\n-- FILE size for the Native Code Generator\n"); + + printf("#define FILE_SIZE %d\n", sizeof(*stdin)); + + exit(0); +} + +\end{code} |