[IA64] Fix 64-bit atomic routines to return "long"
authorTony Luck <tony.luck@intel.com>
Fri, 13 Aug 2010 23:41:07 +0000 (16:41 -0700)
committerTony Luck <tony.luck@intel.com>
Fri, 13 Aug 2010 23:41:07 +0000 (16:41 -0700)
commit01d69a82e1d3c938da16bf55aab000672243aa24
tree9d9763c1a71e29111cab48632aa8c177a54e63c9
parentad41a1e0cab07c5125456e8d38e5b1ab148d04aa
[IA64] Fix 64-bit atomic routines to return "long"

These have been broken (returning "int") since the dawn of
time. But there were no users that needed the whole value
until commit
 424acaaeb3a3932d64a9b4bd59df6cf72c22d8f3
 rwsem: wake queued readers when writer blocks on active read lock

made this change:

-           (rwsem_atomic_update(0, sem) & RWSEM_ACTIVE_MASK))
-               /* Someone grabbed the sem already */
+           rwsem_atomic_update(0, sem) < RWSEM_WAITING_BIAS)
+               /* Someone grabbed the sem for write already */

RWSEM_ACTIVE_MASK is 0xffffffffL, so the old code only looked
at the low order 32-bits. The new code needs to see all 64 bits.

Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/include/asm/atomic.h