linux/arch/metag
James Hogan 6154c187b9 metag: Fix __cmpxchg_u32 asm constraint for CMP
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
Cc: <stable@vger.kernel.org> # 3.9.x-
2016-08-04 17:59:09 +01: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-04 17:59:09 +01:00
kernel metag: Fix typos 2016-07-15 09:55:49 +01:00
lib metag: Fix typos 2016-07-15 09:55:49 +01:00
mm metag: Remove duplicate KERN_<LEVEL> prefix 2016-07-15 09:55:49 +01:00
oprofile metag: OProfile support 2013-03-15 13:21:05 +00:00
tbx metag: Fix misspellings in comments. 2016-04-18 12:45:54 +02:00
Kconfig lib/GCD.c: use binary GCD algorithm instead of Euclidean 2016-05-20 17:58:30 -07:00
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Kconfig.soc metag: remove ARCH_WANT_OPTIONAL_GPIOLIB 2016-04-26 13:39:22 +02:00
Makefile metag: use common make variables for dtb builds 2015-10-27 16:12:15 -05:00