target-arm/translate: Fix RRX operands
authorPeter Crosthwaite <peter.crosthwaite@petalogix.com>
Tue, 16 Oct 2012 09:15:50 +0000 (19:15 +1000)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 17 Oct 2012 17:56:46 +0000 (19:56 +0200)
commitb6348f29d033d5a8a26f633d2ee94362595f32a4
tree46e3548993a2df3231b8ef5d5c087fa72e54f934
parent1414968a6aecd23cb037bc9e718d6f05ead2afaf
target-arm/translate: Fix RRX operands

Instructions that both use the RRX second operand and update CS were
incorrect, as the Carry flag was updated too early. An example of such an
instruction would be:

ands r12,r13,RRX

Ands, because of the "s" flag will update the carry flag. But the RRX second
operand rotates through the C flag which should happen before the update.
Fixed the ordering of the two, the old carry is read by "r13,RRX" before being
updated.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reported-by: Vinesh Peringat <vineshp@xilinx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-arm/translate.c