patch-2.4.20 linux-2.4.20/include/asm-mips/semaphore-helper.h
Next file: linux-2.4.20/include/asm-mips/semaphore.h
Previous file: linux-2.4.20/include/asm-mips/scatterlist.h
Back to the patch index
Back to the overall index
- Lines: 67
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/include/asm-mips/semaphore-helper.h
- Orig date:
Sun Sep 9 10:43:01 2001
diff -urN linux-2.4.19/include/asm-mips/semaphore-helper.h linux-2.4.20/include/asm-mips/semaphore-helper.h
@@ -25,19 +25,18 @@
#ifdef CONFIG_CPU_HAS_LLSC
-static inline int
-waking_non_zero(struct semaphore *sem)
+static inline int waking_non_zero(struct semaphore *sem)
{
int ret, tmp;
__asm__ __volatile__(
- "1:\tll\t%1, %2\n\t"
+ "1:\tll\t%1, %2\t\t\t# waking_non_zero\n\t"
"blez\t%1, 2f\n\t"
"subu\t%0, %1, 1\n\t"
"sc\t%0, %2\n\t"
- "beqz\t%0, 1b\n\t"
+ "beqz\t%0, 1b\n"
"2:"
- : "=r" (ret), "=r" (tmp), "=m" (sem->waking)
+ : "=r" (ret), "=r" (tmp), "+m" (sem->waking)
: "0"(0));
return ret;
@@ -74,22 +73,22 @@
* -EINTR interrupted
*
* We must undo the sem->count down_interruptible decrement
- * simultaneously and atomicly with the sem->waking adjustment,
+ * simultaneously and atomically with the sem->waking adjustment,
* otherwise we can race with wake_one_more.
*
- * This is accomplished by doing a 64-bit ll/sc on the 2 32-bit words.
+ * This is accomplished by doing a 64-bit lld/scd on the 2 32-bit words.
*
- * This is crazy. Normally it stricly forbidden to use 64-bit operations
+ * This is crazy. Normally it's strictly forbidden to use 64-bit operations
* in the 32-bit MIPS kernel. In this case it's however ok because if an
* interrupt has destroyed the upper half of registers sc will fail.
- * Note also that this will not work for MIPS32 CPUS!
+ * Note also that this will not work for MIPS32 CPUs!
*
* Pseudocode:
*
* If(sem->waking > 0) {
* Decrement(sem->waking)
* Return(SUCCESS)
- * } else If(segnal_pending(tsk)) {
+ * } else If(signal_pending(tsk)) {
* Increment(sem->count)
* Return(-EINTR)
* } else {
@@ -127,12 +126,11 @@
}
/*
- * waking_non_zero_trylock is unused. we do everything in
+ * waking_non_zero_trylock is unused. we do everything in
* down_trylock and let non-ll/sc hosts bounce around.
*/
-static inline int
-waking_non_zero_trylock(struct semaphore *sem)
+static inline int waking_non_zero_trylock(struct semaphore *sem)
{
#if WAITQUEUE_DEBUG
CHECK_MAGIC(sem->__magic);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)