target/s390x: rework PGM interrupt psw.addr handling
commitbecf8217deb2afc347d5172d9f30c8a8964b8b27
authorDavid Hildenbrand <david@redhat.com>
Fri, 9 Jun 2017 14:21:56 +0000 (9 16:21 +0200)
committerRichard Henderson <rth@twiddle.net>
Tue, 13 Jun 2017 18:09:39 +0000 (13 11:09 -0700)
tree47f7da6a3210b63ee7346bbf5f143abc9358d7f3
parent465aec461726d5157d458acee94584f8cdfbe4b7
target/s390x: rework PGM interrupt psw.addr handling

We can tell from the program interrupt code, whether a program interrupt
has to forward the address in the PGM new PSW
(suppressing/terminated/completed) to point at the next instruction, or
if it is nullifying and the PSW address does not have to be incremented.

So let's not modify the PSW address outside of the injection path and
handle this internally. We just have to handle instruction length
auto detection if no valid instruction length can be provided.

This should fix various program interrupt injection paths, where the
PSW was not properly forwarded.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20170609142156.18767-3-david@redhat.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target/s390x/cpu.h
target/s390x/helper.c
target/s390x/misc_helper.c
target/s390x/mmu_helper.c
target/s390x/translate.c