lockref: Implement lockref for Itanium
authorLuck, Tony <tony.luck@intel.com>
Tue, 3 Sep 2013 22:31:21 +0000 (15:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Sep 2013 00:18:56 +0000 (17:18 -0700)
All the cool kids are doing this, join in the fun.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/ia64/Kconfig
arch/ia64/include/asm/spinlock.h

index b36370d..5666422 100644 (file)
@@ -43,6 +43,7 @@ config IA64
        select SYSCTL_ARCH_UNALIGN_NO_WARN
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
+       select ARCH_USE_CMPXCHG_LOCKREF
        default y
        help
          The Itanium Processor Family is Intel's 64-bit successor to
index 54ff557..45698cd 100644 (file)
@@ -102,6 +102,11 @@ static inline int __ticket_spin_is_contended(arch_spinlock_t *lock)
        return ((tmp - (tmp >> TICKET_SHIFT)) & TICKET_MASK) > 1;
 }
 
+static __always_inline int arch_spin_value_unlocked(arch_spinlock_t lock)
+{
+       return !(((lock.lock >> TICKET_SHIFT) ^ lock.lock) & TICKET_MASK);
+}
+
 static inline int arch_spin_is_locked(arch_spinlock_t *lock)
 {
        return __ticket_spin_is_locked(lock);