Commit 5dbae367 by John David Anglin Committed by John David Anglin

linux-atomic.c (__sync_val_compare_and_swap_4): Return actual_oldval.

	* config/pa/linux-atomic.c (__sync_val_compare_and_swap_4): Return
	actual_oldval.  Use __builtin_expect.
	(SUBWORD_VAL_CAS): Likewise.

From-SVN: r165339
parent a0a2a399
2010-10-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* config/pa/linux-atomic.c (__sync_val_compare_and_swap_4): Return
actual_oldval. Use __builtin_expect.
(SUBWORD_VAL_CAS): Likewise.
2010-10-11 Nathan Froyd <froydnj@codesourcery.com>
* recog.c (nonmemory_operand): Call immediate_operand for
......@@ -191,13 +191,13 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
{
actual_oldval = *ptr;
if (oldval != actual_oldval)
if (__builtin_expect (oldval != actual_oldval, 0))
return actual_oldval;
fail = __kernel_cmpxchg (actual_oldval, newval, ptr);
if (!fail)
return oldval;
if (__builtin_expect (!fail, 1))
return actual_oldval;
}
}
......@@ -216,8 +216,9 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
{ \
actual_oldval = *wordptr; \
\
if (((actual_oldval & mask) >> shift) != (unsigned int) oldval) \
return (actual_oldval & mask) >> shift; \
if (__builtin_expect (((actual_oldval & mask) >> shift) \
!= (unsigned int) oldval, 0)) \
return (actual_oldval & mask) >> shift; \
\
actual_newval = (actual_oldval & ~mask) \
| (((unsigned int) newval << shift) & mask); \
......@@ -225,8 +226,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
fail = __kernel_cmpxchg (actual_oldval, actual_newval, \
wordptr); \
\
if (!fail) \
return oldval; \
if (__builtin_expect (!fail, 1)) \
return (actual_oldval & mask) >> shift; \
} \
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment