aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm/sigp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kvm/sigp.c')
-rw-r--r--arch/s390/kvm/sigp.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index 0a7941d74bc6..30eb0f73f9d5 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -48,7 +48,7 @@
48 48
49 49
50static int __sigp_sense(struct kvm_vcpu *vcpu, u16 cpu_addr, 50static int __sigp_sense(struct kvm_vcpu *vcpu, u16 cpu_addr,
51 unsigned long *reg) 51 u64 *reg)
52{ 52{
53 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; 53 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;
54 int rc; 54 int rc;
@@ -220,7 +220,7 @@ static int __sigp_set_arch(struct kvm_vcpu *vcpu, u32 parameter)
220} 220}
221 221
222static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address, 222static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
223 unsigned long *reg) 223 u64 *reg)
224{ 224{
225 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; 225 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;
226 struct kvm_s390_local_interrupt *li = NULL; 226 struct kvm_s390_local_interrupt *li = NULL;
@@ -278,7 +278,7 @@ out_fi:
278} 278}
279 279
280static int __sigp_sense_running(struct kvm_vcpu *vcpu, u16 cpu_addr, 280static int __sigp_sense_running(struct kvm_vcpu *vcpu, u16 cpu_addr,
281 unsigned long *reg) 281 u64 *reg)
282{ 282{
283 int rc; 283 int rc;
284 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int; 284 struct kvm_s390_float_interrupt *fi = &vcpu->kvm->arch.float_int;
@@ -316,7 +316,7 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
316 int base2 = vcpu->arch.sie_block->ipb >> 28; 316 int base2 = vcpu->arch.sie_block->ipb >> 28;
317 int disp2 = ((vcpu->arch.sie_block->ipb & 0x0fff0000) >> 16); 317 int disp2 = ((vcpu->arch.sie_block->ipb & 0x0fff0000) >> 16);
318 u32 parameter; 318 u32 parameter;
319 u16 cpu_addr = vcpu->arch.guest_gprs[r3]; 319 u16 cpu_addr = vcpu->run->s.regs.gprs[r3];
320 u8 order_code; 320 u8 order_code;
321 int rc; 321 int rc;
322 322
@@ -327,18 +327,18 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
327 327
328 order_code = disp2; 328 order_code = disp2;
329 if (base2) 329 if (base2)
330 order_code += vcpu->arch.guest_gprs[base2]; 330 order_code += vcpu->run->s.regs.gprs[base2];
331 331
332 if (r1 % 2) 332 if (r1 % 2)
333 parameter = vcpu->arch.guest_gprs[r1]; 333 parameter = vcpu->run->s.regs.gprs[r1];
334 else 334 else
335 parameter = vcpu->arch.guest_gprs[r1 + 1]; 335 parameter = vcpu->run->s.regs.gprs[r1 + 1];
336 336
337 switch (order_code) { 337 switch (order_code) {
338 case SIGP_SENSE: 338 case SIGP_SENSE:
339 vcpu->stat.instruction_sigp_sense++; 339 vcpu->stat.instruction_sigp_sense++;
340 rc = __sigp_sense(vcpu, cpu_addr, 340 rc = __sigp_sense(vcpu, cpu_addr,
341 &vcpu->arch.guest_gprs[r1]); 341 &vcpu->run->s.regs.gprs[r1]);
342 break; 342 break;
343 case SIGP_EXTERNAL_CALL: 343 case SIGP_EXTERNAL_CALL:
344 vcpu->stat.instruction_sigp_external_call++; 344 vcpu->stat.instruction_sigp_external_call++;
@@ -363,12 +363,12 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
363 case SIGP_SET_PREFIX: 363 case SIGP_SET_PREFIX:
364 vcpu->stat.instruction_sigp_prefix++; 364 vcpu->stat.instruction_sigp_prefix++;
365 rc = __sigp_set_prefix(vcpu, cpu_addr, parameter, 365 rc = __sigp_set_prefix(vcpu, cpu_addr, parameter,
366 &vcpu->arch.guest_gprs[r1]); 366 &vcpu->run->s.regs.gprs[r1]);
367 break; 367 break;
368 case SIGP_SENSE_RUNNING: 368 case SIGP_SENSE_RUNNING:
369 vcpu->stat.instruction_sigp_sense_running++; 369 vcpu->stat.instruction_sigp_sense_running++;
370 rc = __sigp_sense_running(vcpu, cpu_addr, 370 rc = __sigp_sense_running(vcpu, cpu_addr,
371 &vcpu->arch.guest_gprs[r1]); 371 &vcpu->run->s.regs.gprs[r1]);
372 break; 372 break;
373 case SIGP_RESTART: 373 case SIGP_RESTART:
374 vcpu->stat.instruction_sigp_restart++; 374 vcpu->stat.instruction_sigp_restart++;