diff options
-rw-r--r-- | include/asm-cris/semaphore-helper.h | 9 | ||||
-rw-r--r-- | include/asm-cris/system.h | 3 |
2 files changed, 4 insertions, 8 deletions
diff --git a/include/asm-cris/semaphore-helper.h b/include/asm-cris/semaphore-helper.h index a8e1e6c..27bfeca1 100644 --- a/include/asm-cris/semaphore-helper.h +++ b/include/asm-cris/semaphore-helper.h @@ -30,8 +30,7 @@ static inline int waking_non_zero(struct semaphore *sem) unsigned long flags; int ret = 0; - local_save_flags(flags); - local_irq_disable(); + local_irq_save(flags); if (read(&sem->waking) > 0) { dec(&sem->waking); ret = 1; @@ -46,8 +45,7 @@ static inline int waking_non_zero_interruptible(struct semaphore *sem, int ret = 0; unsigned long flags; - local_save_flags(flags); - local_irq_disable(); + local_irq_save(flags); if (read(&sem->waking) > 0) { dec(&sem->waking); ret = 1; @@ -64,8 +62,7 @@ static inline int waking_non_zero_trylock(struct semaphore *sem) int ret = 1; unsigned long flags; - local_save_flags(flags); - local_irq_disable(); + local_irq_save(flags); if (read(&sem->waking) <= 0) inc(&sem->count); else { diff --git a/include/asm-cris/system.h b/include/asm-cris/system.h index b869f61..fea0e8d 100644 --- a/include/asm-cris/system.h +++ b/include/asm-cris/system.h @@ -44,8 +44,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz /* since Etrax doesn't have any atomic xchg instructions, we need to disable irq's (if enabled) and do it with move.d's */ unsigned long flags,temp; - local_save_flags(flags); /* save flags, including irq enable bit */ - local_irq_disable(); /* shut off irq's */ + local_irq_save(flags); /* save flags, including irq enable bit and shut off irqs */ switch (size) { case 1: *((unsigned char *)&temp) = x; |