projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Replace missing '#' on options pragma
[ghc-hetmet.git]
/
includes
/
SMP.h
diff --git
a/includes/SMP.h
b/includes/SMP.h
index
bba80f7
..
f574ec8
100644
(file)
--- a/
includes/SMP.h
+++ b/
includes/SMP.h
@@
-16,6
+16,14
@@
* Unregisterised builds are ok, but only 1 CPU supported.
*/
* 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)
#if defined(THREADED_RTS)
#if defined(TICKY_TICKY)
@@
-75,7
+83,7
@@
xchg(StgPtr p, StgWord w)
"1: lwarx %0, 0, %2\n"
" stwcx. %1, 0, %2\n"
" bne- 1b"
"1: lwarx %0, 0, %2\n"
" stwcx. %1, 0, %2\n"
" bne- 1b"
- :"=r" (result)
+ :"=&r" (result)
:"r" (w), "r" (p)
);
#elif sparc_HOST_ARCH
:"r" (w), "r" (p)
);
#elif sparc_HOST_ARCH
@@
-175,7
+183,15
@@
write_barrier(void) {
#define SPIN_COUNT 4000
#define SPIN_COUNT 4000
-INLINE_HEADER StgInfoTable *
+#ifdef KEEP_LOCKCLOSURE
+// We want a callable copy of lockClosure() so that we can refer to it
+// from .cmm files compiled using the native codegen.
+extern StgInfoTable *lockClosure(StgClosure *p);
+INLINE_ME
+#else
+INLINE_HEADER
+#endif
+StgInfoTable *
lockClosure(StgClosure *p)
{
StgWord info;
lockClosure(StgClosure *p)
{
StgWord info;
@@
-323,3
+339,5
@@
INLINE_HEADER void unlockTSO(StgTSO *tso)
{ unlockClosure((StgClosure*)tso, (StgInfoTable*)&stg_TSO_info); }
#endif /* SMP_H */
{ unlockClosure((StgClosure*)tso, (StgInfoTable*)&stg_TSO_info); }
#endif /* SMP_H */
+
+#endif /* CMINUSMINUS */