linux/arch/metag
James Hogan 8660eadce2 metag: Fix __cmpxchg_u32 asm constraint for CMP
commit 6154c187b9 upstream.

The LNKGET based atomic sequence in __cmpxchg_u32 has slightly incorrect
constraints for the return value which under certain circumstances can
allow an address unit register to be used as the first operand of a CMP
instruction. This isn't a valid instruction however as the encodings
only allow a data unit to be specified. This would result in an
assembler error like the following:

  Error: failed to assemble instruction: "CMP A0.2,D0Ar6"

Fix by changing the constraint from "=&da" (assigned, early clobbered,
data or address unit register) to "=&d" (data unit register only).

The constraint for the second operand, "bd" (an op2 register where op1
is a data unit register and the instruction supports O2R) is already
correct assuming the first operand is a data unit register.

Other cases of CMP in inline asm have had their constraints checked, and
appear to all be fine.

Fixes: 6006c0d8ce ("metag: Atomics, locks and bitops")
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: linux-metag@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2016-08-20 18:09:23 +02:00
..
boot metag: enable building of all dtbs 2015-10-27 16:12:16 -05:00
configs metag: minimal TZ1090 (Comet) SoC infrastructure 2013-06-13 12:14:07 +01:00
include metag: Fix __cmpxchg_u32 asm constraint for CMP 2016-08-20 18:09:23 +02:00
kernel Metag architecture changes for v4.4 2015-11-10 16:24:25 -08:00
lib metag: move EXPORT_SYMBOL(csum_partial) to metag_ksyms.c 2013-07-04 10:00:02 +01:00
mm kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
oprofile metag: OProfile support 2013-03-15 13:21:05 +00:00
tbx metag: handle low level kicks directly 2013-11-06 10:40:02 +00:00
Kconfig metag: ftrace: Remove check of obsolete variable function_trace_stop 2014-07-18 13:58:09 -04:00
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Kconfig.soc metag: tz1090: select and instantiate gpio-tz1090 2013-07-22 10:55:31 +01:00
Makefile metag: use common make variables for dtb builds 2015-10-27 16:12:15 -05:00