aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2009-12-17 13:56:47 +0100
committerAurelien Jarno <aurelien@aurel32.net>2009-12-18 16:32:03 +0100
commitd7963c43b9646e4dfc69a4253c61e4bab7b661cd (patch)
tree61b337e8c55ffea1fbd05509db4c547a5f5c0149
parent3a03bfa5a219fe06779706315f2555622b51193c (diff)
downloadqemu-d7963c43b9646e4dfc69a4253c61e4bab7b661cd.zip
qemu-d7963c43b9646e4dfc69a4253c61e4bab7b661cd.tar.gz
qemu-d7963c43b9646e4dfc69a4253c61e4bab7b661cd.tar.bz2
target-s390: Fail on unknown instructions
We were being a bit too nice and didn't give the guest an invalid instruction interrupt. While that works, it's not exactly the fastest thing to do, since now the guest doesn't know that we're not really implementing that instruction, so it continues doing it. We run into this with the set_page_unstable hint instruction. So let's bail out in these cases. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
-rw-r--r--target-s390x/kvm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index b6aac42..0992563 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -405,7 +405,7 @@ static int handle_instruction(CPUState *env, struct kvm_run *run)
unsigned int ipa0 = (run->s390_sieic.ipa & 0xff00);
uint8_t ipa1 = run->s390_sieic.ipa & 0x00ff;
int ipb_code = (run->s390_sieic.ipb & 0x0fff0000) >> 16;
- int r = 0;
+ int r = -1;
dprintf("handle_instruction 0x%x 0x%x\n", run->s390_sieic.ipa, run->s390_sieic.ipb);
switch (ipa0) {