mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 04:30:28 +00:00
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
This commit is contained in:
@@ -786,19 +786,27 @@ AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
|||||||
{
|
{
|
||||||
return OSAtomicAdd64(v, (int64_t *) p);
|
return OSAtomicAdd64(v, (int64_t *) p);
|
||||||
#elif defined (__i386__)
|
#elif defined (__i386__)
|
||||||
|
#ifdef sun
|
||||||
AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
||||||
{
|
{
|
||||||
__asm __volatile (
|
__asm __volatile (
|
||||||
#ifdef sun
|
|
||||||
" lock; xaddl %0, %1 ; "
|
" lock; xaddl %0, %1 ; "
|
||||||
#else
|
|
||||||
" lock xaddl %0, %1 ; "
|
|
||||||
#endif
|
|
||||||
: "+r" (v), /* 0 (result) */
|
: "+r" (v), /* 0 (result) */
|
||||||
"=m" (*p) /* 1 */
|
"=m" (*p) /* 1 */
|
||||||
: "m" (*p)); /* 2 */
|
: "m" (*p)); /* 2 */
|
||||||
return (v);
|
return (v);
|
||||||
})
|
})
|
||||||
|
#else /* ifndef sun */
|
||||||
|
AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
||||||
|
{
|
||||||
|
__asm __volatile (
|
||||||
|
" lock xaddl %0, %1 ; "
|
||||||
|
: "+r" (v), /* 0 (result) */
|
||||||
|
"=m" (*p) /* 1 */
|
||||||
|
: "m" (*p)); /* 2 */
|
||||||
|
return (v);
|
||||||
|
})
|
||||||
|
#endif
|
||||||
#else /* low performance version in utils.c */
|
#else /* low performance version in utils.c */
|
||||||
AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user