lkml.org 
[lkml]   [2011]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 18/18] x86: use xadd helper more widely
    Date
    From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

    This covers the trivial cases.

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    ---
    arch/x86/include/asm/atomic.h | 4 +---
    arch/x86/include/asm/atomic64_64.h | 4 +---
    arch/x86/include/asm/rwsem.h | 4 +---
    arch/x86/include/asm/uv/uv_bau.h | 4 +---
    4 files changed, 4 insertions(+), 12 deletions(-)

    diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
    index 952a826..f201fab 100644
    --- a/arch/x86/include/asm/atomic.h
    +++ b/arch/x86/include/asm/atomic.h
    @@ -180,9 +180,7 @@ static inline int atomic_add_return(int i, atomic_t *v)
    #endif
    /* Modern 486+ processor */
    __i = i;
    - asm volatile(LOCK_PREFIX "xaddl %0, %1"
    - : "+r" (i), "+m" (v->counter)
    - : : "memory");
    + xadd(&v->counter, i);
    return i + __i;

    #ifdef CONFIG_M386
    diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
    index 49fd1ea..ab3b586 100644
    --- a/arch/x86/include/asm/atomic64_64.h
    +++ b/arch/x86/include/asm/atomic64_64.h
    @@ -171,9 +171,7 @@ static inline int atomic64_add_negative(long i, atomic64_t *v)
    static inline long atomic64_add_return(long i, atomic64_t *v)
    {
    long __i = i;
    - asm volatile(LOCK_PREFIX "xaddq %0, %1;"
    - : "+r" (i), "+m" (v->counter)
    - : : "memory");
    + xadd(&v->counter, i);
    return i + __i;
    }

    diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
    index 5a35263..958841a 100644
    --- a/arch/x86/include/asm/rwsem.h
    +++ b/arch/x86/include/asm/rwsem.h
    @@ -203,9 +203,7 @@ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
    {
    long tmp = delta;

    - asm volatile(LOCK_PREFIX "xadd %0,%1"
    - : "+r" (tmp), "+m" (sem->count)
    - : : "memory");
    + xadd(&sem->count, tmp);

    return tmp + delta;
    }
    diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
    index 130f1ee..3d36436 100644
    --- a/arch/x86/include/asm/uv/uv_bau.h
    +++ b/arch/x86/include/asm/uv/uv_bau.h
    @@ -488,9 +488,7 @@ static inline int atomic_read_short(const struct atomic_short *v)
    static inline int atomic_add_short_return(short i, struct atomic_short *v)
    {
    short __i = i;
    - asm volatile(LOCK_PREFIX "xaddw %0, %1"
    - : "+r" (i), "+m" (v->counter)
    - : : "memory");
    + xadd(&v->counter, i);
    return i + __i;
    }

    --
    1.7.6


    \
     
     \ /
      Last update: 2011-08-24 19:55    [W:4.054 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site