[ARM] 3852/1: convert atomic bitops and __xchg over to raw_local_irq_{save,restore}
authorLennert Buytenhek <buytenh@wantstofly.org>
Thu, 21 Sep 2006 02:35:20 +0000 (03:35 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 25 Sep 2006 09:34:03 +0000 (10:34 +0100)
Thomas Gleixner noticed that bitops.h should also use the raw_* irq
disable/enable variants, and __xchg needs them as well.

Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-arm/bitops.h
include/asm-arm/system.h

index 0ac54b1a8bad7c0e8e7a7a3ec8f5063d6c972732..b41831b6432fb44f7967720b31e892e58005ed82 100644 (file)
@@ -37,9 +37,9 @@ static inline void ____atomic_set_bit(unsigned int bit, volatile unsigned long *
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        *p |= mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 }
 
 static inline void ____atomic_clear_bit(unsigned int bit, volatile unsigned long *p)
@@ -49,9 +49,9 @@ static inline void ____atomic_clear_bit(unsigned int bit, volatile unsigned long
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        *p &= ~mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 }
 
 static inline void ____atomic_change_bit(unsigned int bit, volatile unsigned long *p)
@@ -61,9 +61,9 @@ static inline void ____atomic_change_bit(unsigned int bit, volatile unsigned lon
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        *p ^= mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 }
 
 static inline int
@@ -75,10 +75,10 @@ ____atomic_test_and_set_bit(unsigned int bit, volatile unsigned long *p)
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        res = *p;
        *p = res | mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 
        return res & mask;
 }
@@ -92,10 +92,10 @@ ____atomic_test_and_clear_bit(unsigned int bit, volatile unsigned long *p)
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        res = *p;
        *p = res & ~mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 
        return res & mask;
 }
@@ -109,10 +109,10 @@ ____atomic_test_and_change_bit(unsigned int bit, volatile unsigned long *p)
 
        p += bit >> 5;
 
-       local_irq_save(flags);
+       raw_local_irq_save(flags);
        res = *p;
        *p = res ^ mask;
-       local_irq_restore(flags);
+       raw_local_irq_restore(flags);
 
        return res & mask;
 }
index 174ff52661b00e755b48dc131103199e73d4a7e9..c19c5b009f71f0409e47bafbe53c4933f19d402f 100644 (file)
@@ -282,17 +282,17 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
 #error SMP is not supported on this platform
 #endif
        case 1:
-               local_irq_save(flags);
+               raw_local_irq_save(flags);
                ret = *(volatile unsigned char *)ptr;
                *(volatile unsigned char *)ptr = x;
-               local_irq_restore(flags);
+               raw_local_irq_restore(flags);
                break;
 
        case 4:
-               local_irq_save(flags);
+               raw_local_irq_save(flags);
                ret = *(volatile unsigned long *)ptr;
                *(volatile unsigned long *)ptr = x;
-               local_irq_restore(flags);
+               raw_local_irq_restore(flags);
                break;
 #else
        case 1: