|
@@ -57,11 +57,11 @@ static inline int atomic_add_return(int i, atomic_t *v)
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
int temp;
|
|
int temp;
|
|
|
|
|
|
- local_irq_save(flags);
|
|
|
|
|
|
+ raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */
|
|
temp = v->counter;
|
|
temp = v->counter;
|
|
temp += i;
|
|
temp += i;
|
|
v->counter = temp;
|
|
v->counter = temp;
|
|
- local_irq_restore(flags);
|
|
|
|
|
|
+ raw_local_irq_restore(flags);
|
|
|
|
|
|
return temp;
|
|
return temp;
|
|
}
|
|
}
|
|
@@ -78,11 +78,11 @@ static inline int atomic_sub_return(int i, atomic_t *v)
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
int temp;
|
|
int temp;
|
|
|
|
|
|
- local_irq_save(flags);
|
|
|
|
|
|
+ raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */
|
|
temp = v->counter;
|
|
temp = v->counter;
|
|
temp -= i;
|
|
temp -= i;
|
|
v->counter = temp;
|
|
v->counter = temp;
|
|
- local_irq_restore(flags);
|
|
|
|
|
|
+ raw_local_irq_restore(flags);
|
|
|
|
|
|
return temp;
|
|
return temp;
|
|
}
|
|
}
|
|
@@ -135,9 +135,9 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
mask = ~mask;
|
|
mask = ~mask;
|
|
- local_irq_save(flags);
|
|
|
|
|
|
+ raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */
|
|
*addr &= mask;
|
|
*addr &= mask;
|
|
- local_irq_restore(flags);
|
|
|
|
|
|
+ raw_local_irq_restore(flags);
|
|
}
|
|
}
|
|
|
|
|
|
#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
|
|
#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
|