--- gforth/engine/libcc.h.in 2007/12/31 18:40:25 1.3 +++ gforth/engine/libcc.h.in 2008/09/18 02:42:24 1.4 @@ -20,14 +20,35 @@ #include +#if defined(_WIN32) || defined(__WIN32__) +#undef HAS_BACKLINK +#else +#define HAS_BACKLINK 1 +#endif + typedef CELL_TYPE Cell; typedef double Float; #define Clongest long long typedef unsigned Clongest UClongest; +#ifdef HAS_BACKLINK extern Cell *gforth_SP; extern Float *gforth_FP; +extern Cell *gforth_RP; +extern char *gforth_LP; +extern char *gforth_UP; +extern void *gforth_engine(void *, Cell *, Cell *, Float *, char *, char *); +#define GFORTH_ARGS void +#else +#define gforth_SP *((Cell **)(gforth_pointers[0])) +#define gforth_FP *((Float **)(gforth_pointers[1])) +#define gforth_LP *((char **)(gforth_pointers[2])) +#define gforth_RP *((Cell **)(gforth_pointers[3])) +#define gforth_UP *((char **)(gforth_pointers[4])) +#define gforth_engine ((char *(*)(Xt *, Cell *, Cell *, Float *, char *, char *))(((void **)(gforth_pointers[5])))) +#define GFORTH_ARGS void ** gforth_pointers +#endif #define CELL_BITS (sizeof(Cell) * 8)