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) |
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 9e1083e9d8..e7b3b1375c 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); } |