Commit 57599143 authored by David Mosberger's avatar David Mosberger

ia64: Based on patch by Keith Owens: put stop bit to work around GCC problem.

Apparently GCC sometimes fails to insert a stop-bit when re-using p14
after the spinlock directives, even though the register is clearly marked
as "clobbered".
parent 55808e05
...@@ -61,7 +61,7 @@ _raw_spin_lock (spinlock_t *lock) ...@@ -61,7 +61,7 @@ _raw_spin_lock (spinlock_t *lock)
"}\n\t" "}\n\t"
"cmpxchg4.acq r30 = [%1], r30, ar.ccv;;\n\t" "cmpxchg4.acq r30 = [%1], r30, ar.ccv;;\n\t"
"cmp4.ne p14, p0 = r30, r0\n" "cmp4.ne p14, p0 = r30, r0\n"
"(p14) brl.cond.spnt.many ia64_spinlock_contention_pre3_4" "(p14) brl.cond.spnt.many ia64_spinlock_contention_pre3_4;;"
: "=r"(ptr) : "r"(ptr) : IA64_SPINLOCK_CLOBBERS); : "=r"(ptr) : "r"(ptr) : IA64_SPINLOCK_CLOBBERS);
# endif /* CONFIG_MCKINLEY */ # endif /* CONFIG_MCKINLEY */
#else #else
...@@ -81,7 +81,7 @@ _raw_spin_lock (spinlock_t *lock) ...@@ -81,7 +81,7 @@ _raw_spin_lock (spinlock_t *lock)
"mov ar.ccv = r0;;\n\t" "mov ar.ccv = r0;;\n\t"
"cmpxchg4.acq r30 = [%0], r30, ar.ccv;;\n\t" "cmpxchg4.acq r30 = [%0], r30, ar.ccv;;\n\t"
"cmp4.ne p14, p0 = r30, r0\n\t" "cmp4.ne p14, p0 = r30, r0\n\t"
"(p14) brl.call.spnt.many b6=ia64_spinlock_contention" "(p14) brl.call.spnt.many b6=ia64_spinlock_contention;;"
: "=r"(ptr) : "r"(ptr) : IA64_SPINLOCK_CLOBBERS); : "=r"(ptr) : "r"(ptr) : IA64_SPINLOCK_CLOBBERS);
# endif /* CONFIG_MCKINLEY */ # endif /* CONFIG_MCKINLEY */
#endif #endif
......
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