aboutsummaryrefslogtreecommitdiffstats
path: root/include/asterisk/lock.h
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-09 02:35:18 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-09 02:35:18 +0000
commit7030a52f2ea199df4f83b1292b5c1a3ddce98275 (patch)
treeddad5e433e528860ebf1528c98d986b252292f57 /include/asterisk/lock.h
parentd545906560041c6d093931e639fd3b9bf0d607f7 (diff)
Fix inline compiles on really old compilers (who uses gcc 2.7 anymore, really?)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@82028 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include/asterisk/lock.h')
-rw-r--r--include/asterisk/lock.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h
index eea145acf..b8eeeb33c 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),
{