X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FSMP.h;h=eaac770107b4ffe529cb34a71bd8e4a3f8326515;hb=b980fbf46aad86bab37a628cb8dc7f7602d7452d;hp=0e6322d40b29a779e7552219cf168a0caade0d5b;hpb=c245355e6f2c7b7c95e9af910c4d420e13af9413;p=ghc-hetmet.git diff --git a/includes/SMP.h b/includes/SMP.h index 0e6322d..eaac770 100644 --- a/includes/SMP.h +++ b/includes/SMP.h @@ -41,7 +41,7 @@ * Used for locking closures during updates (see lockClosure() below) * and the MVar primops. */ -INLINE_HEADER StgWord xchg(StgPtr p, StgWord w); +EXTERN_INLINE StgWord xchg(StgPtr p, StgWord w); /* * Compare-and-swap. Atomically does this: @@ -52,13 +52,13 @@ INLINE_HEADER StgWord xchg(StgPtr p, StgWord w); * return r; * } */ -INLINE_HEADER StgWord cas(StgVolatilePtr p, StgWord o, StgWord n); +EXTERN_INLINE StgWord cas(StgVolatilePtr p, StgWord o, StgWord n); /* * Prevents write operations from moving across this call in either * direction. */ -INLINE_HEADER void write_barrier(void); +EXTERN_INLINE void write_barrier(void); /* ---------------------------------------------------------------------------- Implementations @@ -67,7 +67,7 @@ INLINE_HEADER void write_barrier(void); * NB: the xchg instruction is implicitly locked, so we do not need * a lock prefix here. */ -INLINE_HEADER StgWord +EXTERN_INLINE StgWord xchg(StgPtr p, StgWord w) { StgWord result; @@ -106,7 +106,7 @@ xchg(StgPtr p, StgWord w) * CMPXCHG - the single-word atomic compare-and-exchange instruction. Used * in the STM implementation. */ -INLINE_HEADER StgWord +EXTERN_INLINE StgWord cas(StgVolatilePtr p, StgWord o, StgWord n) { #if i386_HOST_ARCH || x86_64_HOST_ARCH @@ -159,7 +159,7 @@ cas(StgVolatilePtr p, StgWord o, StgWord n) * control in C, and optionally a memory barrier instruction on CPUs * that require it (not x86 or x86_64). */ -INLINE_HEADER void +EXTERN_INLINE void write_barrier(void) { #if i386_HOST_ARCH || x86_64_HOST_ARCH __asm__ __volatile__ ("" : : : "memory");