From 9e413497c7f5ab6da77270315788a5f279d10e02 Mon Sep 17 00:00:00 2001 From: David Mosberger Date: Tue, 4 Mar 2003 02:38:51 -0800 Subject: [PATCH] ia64: Implement _raw_write_trylock(). Based on patch by Joel Guillet. --- include/asm-ia64/spinlock.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h index 46c473d80d442..7478ee58fb9fd 100644 --- a/include/asm-ia64/spinlock.h +++ b/include/asm-ia64/spinlock.h @@ -183,6 +183,19 @@ do { \ :: "r"(rw) : "ar.ccv", "p7", "r2", "r29", "memory"); \ } while(0) +#define _raw_write_trylock(rw) \ +({ \ + register long result; \ + \ + __asm__ __volatile__ ( \ + "mov ar.ccv = r0\n" \ + "dep r29 = -1, r0, 31, 1\n" \ + ";;\n" \ + "cmpxchg4.acq %0 = [%1], r29, ar.ccv\n" \ + : "=r"(result) : "r"(rw) : "ar.ccv", "r29", "memory"); \ + (result == 0); \ +}) + #define _raw_write_unlock(x) \ ({ \ smp_mb__before_clear_bit(); /* need barrier before releasing lock... */ \ -- 2.53.0