From a9a949c4efa3ac3e7996a2c479c860de94298315 Mon Sep 17 00:00:00 2001 From: wlux Date: Mon, 26 Apr 2010 21:32:22 +0000 Subject: [PATCH] Use local labels in PowerPC assembler code of GSAtomic{In,De}crement to avoid a compile error when this code is inlined more than once. In addition, use the optimized assembler definitions also on PowerPC machines running Darwin/Mac OS X. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30239 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 8 ++++++++ Source/NSObject.m | 10 +++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index acdf79309..b544c4a46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-04-26 Wolfgang Lux + + * Source/NSObject.m (GSAtomicIncrement, GSAtomicDecrement): Use + local labels in PowerPC assembler code to avoid a compile error + when this code is inlined more than once. In addition, use the + optimized assembler definitions also on PowerPC machines running + Darwin/Mac OS X. + 2010-04-23 Richard Frith-Macdonald * Source/Additions/NSFileHandle+GNUstepBase.m: fix to only build on OSX diff --git a/Source/NSObject.m b/Source/NSObject.m index cd2c3f8a6..31ba3815b 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -244,7 +244,7 @@ GSAtomicDecrement(gsatomic_t X) return *X; } -#elif defined(__PPC__) +#elif defined(__PPC__) || defined(__POWERPC__) typedef int32_t volatile *gsatomic_t; @@ -255,11 +255,11 @@ GSAtomicIncrement(gsatomic_t X) { int tmp; __asm__ __volatile__ ( - "incmodified:" + "0:" "lwarx %0,0,%1 \n" "addic %0,%0,1 \n" "stwcx. %0,0,%1 \n" - "bne- incmodified \n" + "bne- 0b \n" :"=&r" (tmp) :"r" (X) :"cc", "memory"); @@ -271,11 +271,11 @@ GSAtomicDecrement(gsatomic_t X) { int tmp; __asm__ __volatile__ ( - "decmodified:" + "0:" "lwarx %0,0,%1 \n" "addic %0,%0,-1 \n" "stwcx. %0,0,%1 \n" - "bne- decmodified \n" + "bne- 0b \n" :"=&r" (tmp) :"r" (X) :"cc", "memory");