Revert "Remove unused define"
[fio.git] / arch / arch-alpha.h
index ef14437c0e27fb9e14a7955073feaf5dfcf29814..a5e3801c0bec312dbea52dbc4edd6793387c5bc5 100644 (file)
 #define read_barrier()         __asm__ __volatile__("mb": : :"memory")
 #define writer_barrier()       __asm__ __volatile__("wmb": : :"memory")
 
+typedef struct {
+       volatile unsigned int lock;
+} spinlock_t;
+
+static inline void spin_lock(spinlock_t *lock)
+{
+       long tmp;
+
+       __asm__ __volatile__("1:     ldl_l   %0,%1\n"
+                       "       bne     %0,2f\n"
+                       "       lda     %0,1\n"
+                       "       stl_c   %0,%1\n"
+                       "       beq     %0,2f\n"
+                       "       mb\n"
+                       ".subsection 2\n"
+                       "2:     ldl     %0,%1\n"
+                       "       bne     %0,2b\n"
+                       "       br      1b\n"
+                       ".previous"
+                       : "=&r" (tmp), "=m" (lock->lock)
+                       : "m"(lock->lock) : "memory");
+}
+
+static inline void spin_unlock(spinlock_t *lock)
+{
+       read_barrier();
+       lock->lock = 0;
+}
+
+#define __SPIN_LOCK_UNLOCKED   { 0 }
+
 #endif