X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=arch%2Farch-s390.h;h=06477503be02859a41bd3186d1c2666ed7abc64f;hb=f2b7ce1c8f2d5ada9b0f789b48b94dc234195fa8;hp=8c6fa5ef2e5a92b0cbf391a8ca9a17efa663148a;hpb=69ebbd397e80b23ec4281c99e9f7242a089cc771;p=fio.git diff --git a/arch/arch-s390.h b/arch/arch-s390.h index 8c6fa5ef..06477503 100644 --- a/arch/arch-s390.h +++ b/arch/arch-s390.h @@ -22,39 +22,4 @@ #define read_barrier() asm volatile("bcr 15,0" : : : "memory") #define write_barrier() asm volatile("bcr 15,0" : : : "memory") -typedef struct { - volatile unsigned int lock; -} spinlock_t; - -static inline int -_raw_compare_and_swap(volatile unsigned int *lock, - unsigned int old, unsigned int new) -{ - __asm__ __volatile__( - " cs %0,%3,0(%4)" - : "=d" (old), "=m" (*lock) - : "0" (old), "d" (new), "a" (lock), "m" (*lock) - : "cc", "memory" ); - - return old; -} - -static inline void spin_lock(spinlock_t *lock) -{ - if (!_raw_compare_and_swap(&lock->lock, 0, 0x80000000)) - return; - - while (1) { - if (lock->lock) - continue; - if (!_raw_compare_and_swap(&lock->lock, 0, 0x80000000)) - break; - } -} - -static inline void spin_unlock(spinlock_t *lock) -{ - _raw_compare_and_swap(&lock->lock, 0x80000000, 0); -} - #endif