From 77319f22635e3f0ef86730503b4d18dd9a833529 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 14 Jan 2014 13:32:23 +0100 Subject: s390x/virtio-hcall: Specification exception for illegal subcodes So far, the DIAG 500 hypervisor call was only setting -EINVAL in R2 when a guest tried to call this function with an illegal subcode. This patch now changes the behavior so that a specification exception is thrown instead, since this is the common behavior of other DIAG functions (and other CPU instructions) when being called with illegal parameters. Signed-off-by: Thomas Huth Reviewed-by: Cornelia Huck Signed-off-by: Christian Borntraeger --- hw/s390x/s390-virtio-hcall.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'hw/s390x') diff --git a/hw/s390x/s390-virtio-hcall.c b/hw/s390x/s390-virtio-hcall.c index 0e328d806d..c7bdc2005d 100644 --- a/hw/s390x/s390-virtio-hcall.c +++ b/hw/s390x/s390-virtio-hcall.c @@ -31,7 +31,8 @@ int s390_virtio_hypercall(CPUS390XState *env) if (env->regs[1] < MAX_DIAG_SUBCODES) { fn = s390_diag500_table[env->regs[1]]; if (fn) { - return fn(&env->regs[2]); + env->regs[2] = fn(&env->regs[2]); + return 0; } } -- cgit v1.2.3