target/s390x: fix COMPARE LOGICAL LONG EXTENDED
commit84aa07f109f0afaeeec63c159f3a578b955c3de9
authorAurelien Jarno <aurelien@aurel32.net>
Wed, 31 May 2017 22:01:16 +0000 (1 00:01 +0200)
committerRichard Henderson <rth@twiddle.net>
Tue, 6 Jun 2017 22:20:43 +0000 (6 15:20 -0700)
tree1a9232a5772d225363e1512b3c76015080ad1a0c
parent29a58fd85f315b722c69f489aefd3f2913d3e42d
target/s390x: fix COMPARE LOGICAL LONG EXTENDED

There are multiple issues with the COMPARE LOGICAL LONG EXTENDED
instruction:
- The test between the two operands is inverted, leading to an inversion
  of the cc values 1 and 2.
- The address and length of an operand continue to be decreased after
  reaching the end of this operand. These values are then wrong write
  back to the registers.
- We should limit the amount of bytes to process, so that interrupts can
  be served correctly.

At the same time rename dest into src1 and src into src3 to match the
operand names and make the code less confusing.

Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Message-Id: <20170531220129.27724-18-aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target/s390x/mem_helper.c
target/s390x/translate.c