gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Small change in NSObject.m ASM needed for PowerPC build


From: David Chisnall
Subject: Re: Small change in NSObject.m ASM needed for PowerPC build
Date: Mon, 13 Apr 2009 12:58:03 +0100

Ooops, this one is my fault.

Recent versions of GCC (and llvm-gcc / clang) support portable atomic intrinsics. I've checked these on x86 and x86-64, and they generate the same code that my inline asm uses. If you add this after the Windows bit (it will probably work on Windows too, but I'm not completely sure) then we will gain fast atomic operations on all platforms (e.g. SPARC / ARM) that support them when compiling with a recent compiler.

David

#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
/* Use the GCC atomic operations with recent GCC versions */

typedef int32_t volatile *gsatomic_t;
#define GSATOMICREAD(X) (*(X))
#define GSAtomicIncrement(X)    __sync_fetch_and_add(X, 1)
#define GSAtomicDecrement(X)    __sync_fetch_and_sub(X, 1)


On 13 Apr 2009, at 10:19, Eric Wasylishen wrote:

Hi,
I ran in to a small problem when compiling GNUstep (svn trunk) on
Debian testing for PowerPC. GCC is "gcc (Debian 4.3.2-1.1) 4.3.2"

Compiling file NSObject.m ...
/tmp/ccF8zgwE.s: Assembler messages:
/tmp/ccF8zgwE.s:730: Error: symbol `modified' is already defined
make[3]: *** [obj/NSObject.m.o] Error 1

The PPC atomic increment and decrement functions starting at line 254
of NSObject.m both use the label 'modified:' in their asm code. I
found that by changing the labels in one of the functions to something
else ("modified2"), this error disappeared.

I'm not sure if GCC is correct in reporting this as an error or not,
but it's easy to fix.
-Eric


_______________________________________________
Gnustep-dev mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnustep-dev





reply via email to

[Prev in Thread] Current Thread [Next in Thread]