--- gforth/arch/generic/machine.h 1997/09/01 23:08:23 1.1 +++ gforth/arch/generic/machine.h 2007/12/31 18:40:25 1.29 @@ -2,13 +2,13 @@ This is a generic file for 32-bit machines with IEEE FP arithmetic (no VMS). It only supports indirect threading. - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995,1998,1999,2003,2007 Free Software Foundation, Inc. This file is part of Gforth. Gforth is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 + as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -17,18 +17,18 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program; if not, see http://www.gnu.org/licenses/. */ -/* define this if IEEE singles and doubles are available as C data types */ -#define IEEE_FP +/* define SYSCALL */ -/* the IEEE types are used only for loading and storing */ -/* the IEEE double precision type */ -typedef double DFloat; -/* the IEEE single precision type */ -typedef float SFloat; +#ifndef SYSCALL +#define SYSCALL +#endif + +#ifndef SYSSIGNALS +#define SYSSIGNALS +#endif #ifndef USE_FTOS #ifndef USE_NO_FTOS @@ -39,13 +39,75 @@ typedef float SFloat; #define USE_FTOS #endif #endif -/* I don't do the same for the data stack (i.e. USE_TOS), since this - loses on processors with few registers. USE_TOS might be defined in - the processor-specific files */ - -#ifdef DIRECT_THREADED -/* If you want direct threading, write a .h file for your processor! */ -/* We could put some stuff here that causes a compile error, but then - we could not use this file in the other machine.h files */ + +#ifndef USE_TOS +#ifndef USE_NO_TOS +/* keep top of data stack in register. Usually a good idea unless registers are very scarce */ +#define USE_TOS +#endif +#endif + +#ifndef INDIRECT_THREADED +#ifndef DIRECT_THREADED +#define DIRECT_THREADED +#endif +#endif + +/* Types: these types are used as Forth's internal types */ + +/* define this if IEEE singles and doubles are available as C data types */ +#define IEEE_FP + +/* the IEEE types are used only for loading and storing */ +/* the IEEE double precision type */ +typedef double DFloat; +/* the IEEE single precision type */ +typedef float SFloat; + +typedef CELL_TYPE Cell; +typedef unsigned CELL_TYPE UCell; +typedef Cell Bool; +typedef unsigned char Char; +typedef double Float; +typedef Char *Address; + +#if defined(DOUBLY_INDIRECT) +typedef void **Label; +#else /* !defined(DOUBLY_INDIRECT) */ +typedef void *Label; +#endif /* !defined(DOUBLY_INDIRECT) */ + +/* feature defines, these setting should be identical to the ones in machpc.fs */ + +#ifndef STANDALONE +#warning hosted system +#define HAS_FILE +#define HAS_FLOATING +#define HAS_OS +#define HAS_DEBUG +#define HAS_GLOCALS +#define HAS_HASH +#ifndef HAS_PEEPHOLE +#define HAS_PEEPHOLE +#endif +#else +#warning standalone system +#undef HAS_FILE +#undef HAS_FLOATING +#undef HAS_OS +#undef HAS_DEBUG +#undef HAS_GLOCALS +#undef HAS_HASH +#define HAS_F83HEADERSTRING +#ifndef PUTC +# define PUTC(x) emit_char(x) +#endif +#ifndef TYPE +# define TYPE(x, l) type_chars(x, l) +#endif #endif +#define HAS_DCOMPS +#define HAS_XCONDS +#define HAS_STANDARDTHREADING +#define RELINFOBITS 8