target/s390x: Store r1/r2 for page-translation exceptions during MVPG
commit1a3c443c43e81e32a05d6995039e0f356b8f60cb
authorDavid Hildenbrand <david@redhat.com>
Mon, 15 Mar 2021 08:54:49 +0000 (15 09:54 +0100)
committerCornelia Huck <cohuck@redhat.com>
Mon, 15 Mar 2021 10:03:20 +0000 (15 11:03 +0100)
tree6e97af58abd6d11cc951f88fbd22432d0009d406
parente56552cf0771a7f60ae4c1bc186d43a585022849
target/s390x: Store r1/r2 for page-translation exceptions during MVPG

The PoP states:

    When EDAT-1 does not apply, and a program interruption due to a
    page-translation exception is recognized by the MOVE PAGE
    instruction, the contents of the R1 field of the instruction are
    stored in bit positions 0-3 of location 162, and the contents of
    the R2 field are stored in bit positions 4-7.

    If [...] an ASCE-type, region-first-translation,
    region-second-translation, region-third-translation, or
    segment-translation exception was recognized, the contents of
    location 162 are unpredictable.

So we have to write r1/r2 into the lowcore on page-translation
exceptions. Simply handle all exceptions inside our mvpg helper now.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20210315085449.34676-3-david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/helper.h
target/s390x/insn-data.def
target/s390x/mem_helper.c
target/s390x/translate.c