From: Tilghman Lesher Date: Sun, 9 Sep 2007 02:35:18 +0000 (+0000) Subject: Fix inline compiles on really old compilers (who uses gcc 2.7 anymore, really?) X-Git-Tag: 1.4.12~116 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2fc5a853d40dd8e2320bb6eba9cd80db97a4fc4e;p=thirdparty%2Fasterisk.git Fix inline compiles on really old compilers (who uses gcc 2.7 anymore, really?) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@82028 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h index eea145acf0..b8eeeb33cf 100644 --- a/include/asterisk/lock.h +++ b/include/asterisk/lock.h @@ -786,19 +786,27 @@ AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v), { return OSAtomicAdd64(v, (int64_t *) p); #elif defined (__i386__) +#ifdef sun AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v), { __asm __volatile ( -#ifdef sun " lock; xaddl %0, %1 ; " -#else + : "+r" (v), /* 0 (result) */ + "=m" (*p) /* 1 */ + : "m" (*p)); /* 2 */ + return (v); +}) +#else /* ifndef sun */ +AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v), +{ + __asm __volatile ( " lock xaddl %0, %1 ; " -#endif : "+r" (v), /* 0 (result) */ "=m" (*p) /* 1 */ : "m" (*p)); /* 2 */ return (v); }) +#endif #else /* low performance version in utils.c */ AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v), {