--- zzzz-none-000/linux-2.4.17/include/asm-mips64/spinlock.h 2000-11-29 05:42:04.000000000 +0000 +++ sangam-fb-322/linux-2.4.17/include/asm-mips64/spinlock.h 2004-11-24 13:21:49.000000000 +0000 @@ -44,8 +44,8 @@ "beqz\t%1, 1b\n\t" " sync\n\t" ".set\treorder" - : "=o" (lock->lock), "=&r" (tmp) - : "o" (lock->lock) + : "=m" (lock->lock), "=&r" (tmp) + : "m" (lock->lock) : "memory"); } @@ -56,8 +56,8 @@ "sync\n\t" "sw\t$0, %0\n\t" ".set\treorder" - : "=o" (lock->lock) - : "o" (lock->lock) + : "=m" (lock->lock) + : "m" (lock->lock) : "memory"); } @@ -95,6 +95,8 @@ #define RW_LOCK_UNLOCKED (rwlock_t) { 0 } +#define rwlock_init(x) do { *(x) = RW_LOCK_UNLOCKED; } while(0) + static inline void read_lock(rwlock_t *rw) { unsigned int tmp; @@ -108,8 +110,8 @@ "beqz\t%1, 1b\n\t" " sync\n\t" ".set\treorder" - : "=o" (rw->lock), "=&r" (tmp) - : "o" (rw->lock) + : "=m" (rw->lock), "=&r" (tmp) + : "m" (rw->lock) : "memory"); } @@ -126,10 +128,10 @@ "sub\t%1, 1\n\t" "sc\t%1, %0\n\t" "beqz\t%1, 1b\n\t" - "sync\n\t" + " sync\n\t" ".set\treorder" - : "=o" (rw->lock), "=&r" (tmp) - : "o" (rw->lock) + : "=m" (rw->lock), "=&r" (tmp) + : "m" (rw->lock) : "memory"); } @@ -146,8 +148,8 @@ "beqz\t%1, 1b\n\t" " sync\n\t" ".set\treorder" - : "=o" (rw->lock), "=&r" (tmp) - : "o" (rw->lock) + : "=m" (rw->lock), "=&r" (tmp) + : "m" (rw->lock) : "memory"); } @@ -158,8 +160,8 @@ "sync\n\t" "sw\t$0, %0\n\t" ".set\treorder" - : "=o" (rw->lock) - : "o" (rw->lock) + : "=m" (rw->lock) + : "m" (rw->lock) : "memory"); }