Comments only. Haddockify parts of TcRnTypes.
[ghc-hetmet.git] / includes / SMP.h
index eaac770..bf23e08 100644 (file)
  *      Unregisterised builds are ok, but only 1 CPU supported.
  */
 
-#ifdef CMINUSMINUS
-
-#define unlockClosure(ptr,info)                 \
-    prim %write_barrier() [];                   \
-    StgHeader_info(ptr) = info;    
-
-#else
-
 #if defined(THREADED_RTS)
 
 #if  defined(TICKY_TICKY)
    Atomic operations
    ------------------------------------------------------------------------- */
    
+#if !IN_STG_CODE
+// We only want write_barrier() declared in .hc files.  Defining the
+// other inline functions here causes type mismatch errors from gcc,
+// because the generated C code is assuming that there are no
+// prototypes in scope.
+
 /* 
  * The atomic exchange operation: xchg(p,w) exchanges the value
  * pointed to by p with the value w, returning the old value.
@@ -54,6 +52,8 @@ EXTERN_INLINE StgWord xchg(StgPtr p, StgWord w);
  */
 EXTERN_INLINE StgWord cas(StgVolatilePtr p, StgWord o, StgWord n);
 
+#endif // !IN_STG_CODE
+
 /*
  * Prevents write operations from moving across this call in either
  * direction.
@@ -63,6 +63,9 @@ EXTERN_INLINE void write_barrier(void);
 /* ----------------------------------------------------------------------------
    Implementations
    ------------------------------------------------------------------------- */
+
+#if !IN_STG_CODE
+
 /* 
  * NB: the xchg instruction is implicitly locked, so we do not need
  * a lock prefix here. 
@@ -149,6 +152,8 @@ cas(StgVolatilePtr p, StgWord o, StgWord n)
 #endif
 }
 
+#endif // !IN_STG_CODE
+
 /*
  * Write barrier - ensure that all preceding writes have happened
  * before all following writes.  
@@ -190,6 +195,4 @@ xchg(StgPtr p, StgWord w)
 
 #endif /* !THREADED_RTS */
 
-#endif /* CMINUSMINUS */
-
 #endif /* SMP_H */