/* -----------------------------------------------------------------------------
- * $Id: StgTypes.h,v 1.16 2001/07/23 17:23:19 simonmar Exp $
+ * $Id: StgTypes.h,v 1.19 2002/12/11 15:36:39 simonmar Exp $
*
* (c) The GHC Team, 1998-2000
*
* Various C datatypes used in the run-time system. This is the
- * lowest-level include file (after config.h).
+ * lowest-level include file, after config.h and Derived.h.
*
* This module should define types *only*, all beginning with "Stg".
*
StgCode, StgArray, StgByteArray, StgStablePtr, StgFunPtr,
StgUnion.
- * WARNING: Keep this file and HsFFI.h in synch!
+ * WARNING: Keep this file, MachDeps.h, and HsFFI.h in synch!
*
* NOTE: assumes #include "config.h"
*
#ifndef STGTYPES_H
#define STGTYPES_H
+#include "Derived.h"
+
/*
* First, platform-dependent definitions of size-specific integers.
* Assume for now that the int type is 32 bits.
#error GHC untested on this architecture: sizeof(unsigned int) != 4
#endif
-/* This #define controls whether we need to support long longs on a particular
- * platform.
- *
- * ToDo: find a proper home for (derived) configuration information like this.
- */
-#if HAVE_LONG_LONG && SIZEOF_VOID_P < 8
-#define SUPPORT_LONG_LONGS
-#endif
-
#ifdef SUPPORT_LONG_LONGS
/* assume long long is 64 bits */
typedef signed long long int StgInt64;
#if SIZEOF_VOID_P == 8
typedef StgInt64 StgInt;
typedef StgWord64 StgWord;
+typedef StgWord32 StgHalfWord;
#else
#if SIZEOF_VOID_P == 4
typedef StgInt32 StgInt;
typedef StgWord32 StgWord;
+typedef StgWord16 StgHalfWord;
#else
#error GHC untested on this architecture: sizeof(void *) != 4 or 8
#endif