[project @ 2004-11-08 12:26:52 by simonmar]
[ghc-hetmet.git] / ghc / includes / RtsTypes.h
index 10c4bde..4a30ef9 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  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__) 
@@ -31,6 +41,8 @@ typedef enum {
    Types specific to the parallel runtime system.
 */
 
+typedef ullong        rtsTime;
+
 #if defined(PAR)
 /* types only needed in the parallel system */
 typedef struct hashtable ParHashTable;
@@ -40,7 +52,6 @@ typedef struct hashlist ParHashList;
 // typedef W_ TIME;
 // typedef GlobalTaskId Proc;
 typedef int           GlobalTaskId;
-typedef ullong        rtsTime;
 typedef GlobalTaskId  PEs;
 typedef unsigned int  rtsWeight;
 typedef int           rtsPacket;
@@ -68,6 +79,9 @@ typedef struct gala {
 
 #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;