X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fparisc%2Flib%2Fbitops.c;h=4c077fc4c0e51e5b8ea6172a44022ab129e3b8d4;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=b79452c8cae30b9e50d3cb9499a7d3c68fc7fd1a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/parisc/lib/bitops.c b/arch/parisc/lib/bitops.c index b79452c8c..4c077fc4c 100644 --- a/arch/parisc/lib/bitops.c +++ b/arch/parisc/lib/bitops.c @@ -13,22 +13,20 @@ #include #ifdef CONFIG_SMP -spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] = { - [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED +atomic_lock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned = { + [0 ... (ATOMIC_HASH_SIZE-1)] = (atomic_lock_t) { { 1, 1, 1, 1 } } }; #endif -spinlock_t __atomic_lock = SPIN_LOCK_UNLOCKED; - #ifdef __LP64__ unsigned long __xchg64(unsigned long x, unsigned long *ptr) { unsigned long temp, flags; - SPIN_LOCK_IRQSAVE(ATOMIC_HASH(ptr), flags); + atomic_spin_lock_irqsave(ATOMIC_HASH(ptr), flags); temp = *ptr; *ptr = x; - SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(ptr), flags); + atomic_spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); return temp; } #endif @@ -36,26 +34,26 @@ unsigned long __xchg64(unsigned long x, unsigned long *ptr) unsigned long __xchg32(int x, int *ptr) { unsigned long flags; - unsigned long temp; + long temp; - SPIN_LOCK_IRQSAVE(ATOMIC_HASH(ptr), flags); - (long) temp = (long) *ptr; /* XXX - sign extension wanted? */ + atomic_spin_lock_irqsave(ATOMIC_HASH(ptr), flags); + temp = (long) *ptr; /* XXX - sign extension wanted? */ *ptr = x; - SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(ptr), flags); - return temp; + atomic_spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); + return (unsigned long)temp; } unsigned long __xchg8(char x, char *ptr) { unsigned long flags; - unsigned long temp; + long temp; - SPIN_LOCK_IRQSAVE(ATOMIC_HASH(ptr), flags); - (long) temp = (long) *ptr; /* XXX - sign extension wanted? */ + atomic_spin_lock_irqsave(ATOMIC_HASH(ptr), flags); + temp = (long) *ptr; /* XXX - sign extension wanted? */ *ptr = x; - SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(ptr), flags); - return temp; + atomic_spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); + return (unsigned long)temp; } @@ -65,10 +63,10 @@ unsigned long __cmpxchg_u64(volatile unsigned long *ptr, unsigned long old, unsi unsigned long flags; unsigned long prev; - SPIN_LOCK_IRQSAVE(ATOMIC_HASH(ptr), flags); + atomic_spin_lock_irqsave(ATOMIC_HASH(ptr), flags); if ((prev = *ptr) == old) *ptr = new; - SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(ptr), flags); + atomic_spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); return prev; } #endif @@ -78,9 +76,9 @@ unsigned long __cmpxchg_u32(volatile unsigned int *ptr, unsigned int old, unsign unsigned long flags; unsigned int prev; - SPIN_LOCK_IRQSAVE(ATOMIC_HASH(ptr), flags); + atomic_spin_lock_irqsave(ATOMIC_HASH(ptr), flags); if ((prev = *ptr) == old) *ptr = new; - SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(ptr), flags); + atomic_spin_unlock_irqrestore(ATOMIC_HASH(ptr), flags); return (unsigned long)prev; }