/*
- Time-stamp: <Mon Nov 22 1999 21:29:44 Stardate: [-30]3939.47 hwloidl>
+ Time-stamp: <2004-11-08 12:17:01 simonmar>
RTS specific types.
*/
#ifndef RTS_TYPES_H
#define RTS_TYPES_H
+#if SIZEOF_VOID_P == 8
+typedef unsigned long nat; /* at least 32 bits (like int) */
+#else
typedef unsigned int nat; /* at least 32 bits (like int) */
+#endif
typedef unsigned long lnat; /* at least 32 bits */
+#ifndef _MSC_VER
typedef unsigned long long ullong; /* at least 32 bits */
+typedef long long llong;
+#else
+typedef unsigned __int64 ullong; /* at least 32 bits */
+typedef __int64 llong;
+#endif
/* ullong (64|128-bit) type: only include if needed (not ANSI) */
#if defined(__GNUC__)
Types specific to the parallel runtime system.
*/
+typedef ullong rtsTime;
+
#if defined(PAR)
/* types only needed in the parallel system */
typedef struct hashtable ParHashTable;
// typedef W_ TIME;
// typedef GlobalTaskId Proc;
typedef int GlobalTaskId;
-typedef ullong rtsTime;
typedef GlobalTaskId PEs;
typedef unsigned int rtsWeight;
typedef int rtsPacket;
#elif defined(GRAN)
+// GlobalTaskId is dummy in GranSim;
+// we define it to have cleaner code in the RTS
+typedef int GlobalTaskId;
typedef lnat rtsTime;
typedef StgWord PEs;