|
@@ -919,21 +919,17 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)
|
|
|
r = -ENXIO;
|
|
|
break;
|
|
|
}
|
|
|
- vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0] = val.vval;
|
|
|
+ val.vval = vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0];
|
|
|
break;
|
|
|
case KVM_REG_PPC_VSCR:
|
|
|
if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
|
|
|
r = -ENXIO;
|
|
|
break;
|
|
|
}
|
|
|
- vcpu->arch.vr.vscr.u[3] = set_reg_val(reg->id, val);
|
|
|
+ val = get_reg_val(reg->id, vcpu->arch.vr.vscr.u[3]);
|
|
|
break;
|
|
|
case KVM_REG_PPC_VRSAVE:
|
|
|
- if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
|
|
|
- r = -ENXIO;
|
|
|
- break;
|
|
|
- }
|
|
|
- vcpu->arch.vrsave = set_reg_val(reg->id, val);
|
|
|
+ val = get_reg_val(reg->id, vcpu->arch.vrsave);
|
|
|
break;
|
|
|
#endif /* CONFIG_ALTIVEC */
|
|
|
default:
|
|
@@ -974,17 +970,21 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)
|
|
|
r = -ENXIO;
|
|
|
break;
|
|
|
}
|
|
|
- val.vval = vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0];
|
|
|
+ vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0] = val.vval;
|
|
|
break;
|
|
|
case KVM_REG_PPC_VSCR:
|
|
|
if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
|
|
|
r = -ENXIO;
|
|
|
break;
|
|
|
}
|
|
|
- val = get_reg_val(reg->id, vcpu->arch.vr.vscr.u[3]);
|
|
|
+ vcpu->arch.vr.vscr.u[3] = set_reg_val(reg->id, val);
|
|
|
break;
|
|
|
case KVM_REG_PPC_VRSAVE:
|
|
|
- val = get_reg_val(reg->id, vcpu->arch.vrsave);
|
|
|
+ if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
|
|
|
+ r = -ENXIO;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ vcpu->arch.vrsave = set_reg_val(reg->id, val);
|
|
|
break;
|
|
|
#endif /* CONFIG_ALTIVEC */
|
|
|
default:
|