patch-2.3.6 linux/include/asm-alpha/spinlock.h

Next file: linux/include/asm-alpha/string.h
Previous file: linux/include/asm-alpha/softirq.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.5/linux/include/asm-alpha/spinlock.h linux/include/asm-alpha/spinlock.h
@@ -3,6 +3,35 @@
 
 #include <asm/system.h>
 
+/*
+ * These are the generic versions of the spinlocks
+ * and read-write locks.. We should actually do a
+ * <linux/spinlock.h> with all of this. Oh, well.
+ */
+#define spin_lock_irqsave(lock, flags)		do { local_irq_save(flags);       spin_lock(lock); } while (0)
+#define spin_lock_irq(lock)			do { local_irq_disable();         spin_lock(lock); } while (0)
+#define spin_lock_bh(lock)			do { local_bh_disable();          spin_lock(lock); } while (0)
+
+#define read_lock_irqsave(lock, flags)		do { local_irq_save(flags);       read_lock(lock); } while (0)
+#define read_lock_irq(lock)			do { local_irq_disable();         read_lock(lock); } while (0)
+#define read_lock_bh(lock)			do { local_bh_disable();          read_lock(lock); } while (0)
+
+#define write_lock_irqsave(lock, flags)		do { local_irq_save(flags);      write_lock(lock); } while (0)
+#define write_lock_irq(lock)			do { local_irq_disable();        write_lock(lock); } while (0)
+#define write_lock_bh(lock)			do { local_bh_disable();         write_lock(lock); } while (0)
+
+#define spin_unlock_irqrestore(lock, flags)	do { spin_unlock(lock);  local_irq_restore(flags); } while (0)
+#define spin_unlock_irq(lock)			do { spin_unlock(lock);  local_irq_enable();       } while (0)
+#define spin_unlock_bh(lock)			do { spin_unlock(lock);  local_bh_enable();        } while (0)
+
+#define read_unlock_irqrestore(lock, flags)	do { read_unlock(lock);  local_irq_restore(flags); } while (0)
+#define read_unlock_irq(lock)			do { read_unlock(lock);  local_irq_enable();       } while (0)
+#define read_unlock_bh(lock)			do { read_unlock(lock);  local_bh_enable();        } while (0)
+
+#define write_unlock_irqrestore(lock, flags)	do { write_unlock(lock); local_irq_restore(flags); } while (0)
+#define write_unlock_irq(lock)			do { write_unlock(lock); local_irq_enable();       } while (0)
+#define write_unlock_bh(lock)			do { write_unlock(lock); local_bh_enable();        } while (0)
+
 #ifndef __SMP__
 
 /*
@@ -23,11 +52,6 @@
 #define spin_trylock(lock)			((void) 0)
 #define spin_unlock_wait(lock)			((void) 0)
 #define spin_unlock(lock)			((void) 0)
-#define spin_lock_irq(lock)			cli()
-#define spin_unlock_irq(lock)			sti()
-
-#define spin_lock_irqsave(lock, flags)		save_and_cli(flags)
-#define spin_unlock_irqrestore(lock, flags)	restore_flags(flags)
 
 /*
  * Read-write spinlocks, allowing multiple readers
@@ -53,15 +77,6 @@
 #define read_unlock(lock)			((void) 0)
 #define write_lock(lock)			((void) 0)
 #define write_unlock(lock)			((void) 0)
-#define read_lock_irq(lock)			cli()
-#define read_unlock_irq(lock)			sti()
-#define write_lock_irq(lock)			cli()
-#define write_unlock_irq(lock)			sti()
-
-#define read_lock_irqsave(lock, flags)		save_and_cli(flags)
-#define read_unlock_irqrestore(lock, flags)	restore_flags(flags)
-#define write_lock_irqsave(lock, flags)		save_and_cli(flags)
-#define write_unlock_irqrestore(lock, flags)	restore_flags(flags)
 
 #else /* __SMP__ */
 
@@ -150,15 +165,6 @@
 #define spin_lock_own(LOCK, LOCATION)	((void)0)
 #endif /* DEBUG_SPINLOCK */
 
-#define spin_lock_irq(lock) \
-  (__cli(), spin_lock(lock))
-#define spin_unlock_irq(lock) \
-  (spin_unlock(lock), __sti())
-#define spin_lock_irqsave(lock, flags) \
-  (__save_and_cli(flags), spin_lock(lock))
-#define spin_unlock_irqrestore(lock, flags) \
-  (spin_unlock(lock), __restore_flags(flags))
-
 /***********************************************************/
 
 typedef struct { volatile int write_lock:1, read_counter:31; } rwlock_t;
@@ -232,20 +238,6 @@
 	: "=m" (__dummy_lock(lock)), "=&r" (regx)
 	: "m" (__dummy_lock(lock)));
 }
-
-#define read_lock_irq(lock)	(__cli(), read_lock(lock))
-#define read_unlock_irq(lock)	(read_unlock(lock), __sti())
-#define write_lock_irq(lock)	(__cli(), write_lock(lock))
-#define write_unlock_irq(lock)	(write_unlock(lock), __sti())
-
-#define read_lock_irqsave(lock, flags)	\
-	(__save_and_cli(flags), read_lock(lock))
-#define read_unlock_irqrestore(lock, flags) \
-	(read_unlock(lock), __restore_flags(flags))
-#define write_lock_irqsave(lock, flags)	\
-	(__save_and_cli(flags), write_lock(lock))
-#define write_unlock_irqrestore(lock, flags) \
-	(write_unlock(lock), __restore_flags(flags))
 
 #endif /* SMP */
 #endif /* _ALPHA_SPINLOCK_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)