diff options
author | Thomas Huth <thuth@linux.vnet.ibm.com> | 2014-01-13 12:55:55 +0100 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2014-02-27 09:51:25 +0100 |
commit | 6e25280216fc23c8387892f76d961559da124528 (patch) | |
tree | b9ad13209c579336fab439eb9eea7f2e6e18eb48 /target-s390x/kvm.c | |
parent | a0fa2cb8ccf0b73cfd3ac01d557401a2303c0de4 (diff) | |
download | qemu-6e25280216fc23c8387892f76d961559da124528.zip qemu-6e25280216fc23c8387892f76d961559da124528.tar.gz qemu-6e25280216fc23c8387892f76d961559da124528.tar.bz2 |
s390x/sclp: Add missing checks to SCLP handler
If the 51 most significant bits of the SCCB address are zero or equal to
the prefix, we should throw an specification exception, too.
Also moved the check for privileged mode to sclp_service_call() to have
all program checks in one place now.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'target-s390x/kvm.c')
-rw-r--r-- | target-s390x/kvm.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 9e1083e..e7b3b13 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -445,14 +445,10 @@ static int kvm_sclp_service_call(S390CPU *cpu, struct kvm_run *run, int r = 0; cpu_synchronize_state(CPU(cpu)); - if (env->psw.mask & PSW_MASK_PSTATE) { - enter_pgmcheck(cpu, PGM_PRIVILEGED); - return 0; - } sccb = env->regs[ipbh0 & 0xf]; code = env->regs[(ipbh0 & 0xf0) >> 4]; - r = sclp_service_call(sccb, code); + r = sclp_service_call(env, sccb, code); if (r < 0) { enter_pgmcheck(cpu, -r); } |