ARM: 7208/1: Add condition code checking to SWP emulation handler.
authorLeif Lindholm <leif.lindholm@arm.com>
Mon, 12 Dec 2011 18:45:24 +0000 (19:45 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 13 Dec 2011 08:52:03 +0000 (08:52 +0000)
commitc245dcd326fb9f8cca4b396796f0d2e54171b5c9
tree4c7d4f696a6912a64d5acd4f01ca42d453722b86
parente7f626db83689f55089717a6d771c57afe1adc1a
ARM: 7208/1: Add condition code checking to SWP emulation handler.

This patch fixes two separate issues with the SWP emulation handler:
1: Certain processors implementing ARMv7-A can (legally) take an
   undef exception even when the condition code would have meant that
   the instruction should not have been executed.
2: Opcodes with all flags set (condition code = 0xf) have been reused
   in recent, and not-so-recent, versions of the ARM architecture to
   implement unconditional extensions to the instruction set. The
   existing code would still have processed any undefs triggered by
   executing an opcode with such a value.

This patch uses the new generic ARM instruction set condition code
checks to implement proper handling of these situations.

Signed-off-by: Leif Lindholm <leif.lindholm@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/swp_emulate.c