X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FSMP.h;h=515516a9824864ccb7756b65917f9321097f24b6;hb=7adc29e83d11ced8877490f0a12fd8b751b9922a;hp=d985576cb4780a52bfc6edb99db1abbc8e8f06de;hpb=b1953bbb1ed3cb16497e5447db7487f0c2d9e41a;p=ghc-hetmet.git diff --git a/includes/SMP.h b/includes/SMP.h index d985576..515516a 100644 --- a/includes/SMP.h +++ b/includes/SMP.h @@ -76,8 +76,9 @@ cas(StgVolatilePtr p, StgWord o, StgWord n) " stwcx. %2, 0, %3\n" " bne- 1b\n" "2:" - :"=r" (result) + :"=&r" (result) :"r" (o), "r" (n), "r" (p) + :"cc", "memory" ); return result; #else @@ -96,7 +97,7 @@ cas(StgVolatilePtr p, StgWord o, StgWord n) * that require it (not x86 or x86_64). */ INLINE_HEADER void -wb(void) { +write_barrier(void) { #if i386_HOST_ARCH || x86_64_HOST_ARCH __asm__ __volatile__ ("" : : : "memory"); #elif powerpc_HOST_ARCH @@ -136,7 +137,7 @@ unlockClosure(StgClosure *p, StgInfoTable *info) { #if i386_HOST_ARCH || x86_64_HOST_ARCH || powerpc_HOST_ARCH // This is a strictly ordered write, so we need a wb(): - wb(); + write_barrier(); p->header.info = info; #else RELEASE_SM_LOCK; @@ -145,7 +146,7 @@ unlockClosure(StgClosure *p, StgInfoTable *info) #else /* !THREADED_RTS */ -#define wb() /* nothing */ +#define write_barrier() /* nothing */ INLINE_HEADER StgWord xchg(StgPtr p, StgWord w)