target/s390x: fix CSST decoding and runtime alignment check
commitdc95b31dac65adb92256e67a5f0fc88ab37404c2
authorPavel Zbitskiy <pavel.zbitskiy@gmail.com>
Tue, 21 Aug 2018 02:51:00 +0000 (20 22:51 -0400)
committerCornelia Huck <cohuck@redhat.com>
Tue, 28 Aug 2018 15:37:01 +0000 (28 17:37 +0200)
tree09829edb988fd5fbb174dc1597e9baad713b3103
parente1db291b9b3b53e9d570a9f93a1caf014a07ab64
target/s390x: fix CSST decoding and runtime alignment check

CSST is defined as:

    C(0xc802, CSST,    SSF,   CASS, la1, a2, 0, 0, csst, 0)

It means that the first parameter is handled by in1_la1().
in1_la1() fills addr1 field, and not in1.

Furthermore, when extract32() is used for the alignment check, the
third parameter should specify the number of trailing bits that must
be 0. For FC these numbers are:

    FC=0 (word, 4 bytes):        2
    FC=1 (double word, 8 bytes): 3
    FC=2 (quad word, 16 bytes):  4

For SC these numbers correspond to the size:

    SC=0: 0
    SC=1: 1
    SC=2: 2
    SC=3: 3
    SC=4: 4

Signed-off-by: Pavel Zbitskiy <pavel.zbitskiy@gmail.com>
Message-Id: <20180821025104.19604-4-pavel.zbitskiy@gmail.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/mem_helper.c
target/s390x/translate.c
tests/tcg/s390x/Makefile.target
tests/tcg/s390x/csst.c [new file with mode: 0644]