mirror of https://gitee.com/openkylin/qemu.git
target-s390x: Mask the SIGP order_code to 8bit.
According to "CPU Signaling and Response", "Signal-Processor Orders", the order field is bit position 56-63. Without this, the Linux guest kernel is sometimes unable to stop emulation and enters an infinite loop of "XXX unknown sigp: 0xffffffff00000005". Signed-off-by: Philipp Kern <phil@philkern.de> Reviewed-by: Thomas Huth <thuth@tuxfamily.org> [agraf: add comment according to email] Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
f4b5b021c8
commit
601b9a9008
|
@ -515,7 +515,8 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
|
|||
/* Remember: Use "R1 or R1 + 1, whichever is the odd-numbered register"
|
||||
as parameter (input). Status (output) is always R1. */
|
||||
|
||||
switch (order_code) {
|
||||
/* sigp contains the order code in bit positions 56-63, mask it here. */
|
||||
switch (order_code & 0xff) {
|
||||
case SIGP_SET_ARCH:
|
||||
/* switch arch */
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue