Add ONE_REG support for AltiVec on Book3E.

Signed-off-by: Mihai Caraman <mihai.cara...@freescale.com>
---
 arch/powerpc/kvm/booke.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 01eb635..019496d 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -1570,6 +1570,22 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, 
struct kvm_one_reg *reg)
        case KVM_REG_PPC_DEBUG_INST:
                val = get_reg_val(reg->id, KVMPPC_INST_EHPRIV);
                break;
+#ifdef CONFIG_ALTIVEC
+       case KVM_REG_PPC_VR0 ... KVM_REG_PPC_VR31:
+               if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
+                       r = -ENXIO;
+                       break;
+               }
+               val.vval = vcpu->arch.vr[reg->id - KVM_REG_PPC_VR0];
+               break;
+       case KVM_REG_PPC_VSCR:
+               if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
+                       r = -ENXIO;
+                       break;
+               }
+               val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]);
+               break;
+#endif /* CONFIG_ALTIVEC */
        default:
                r = kvmppc_get_one_reg(vcpu, reg->id, &val);
                break;
@@ -1643,6 +1659,22 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, 
struct kvm_one_reg *reg)
                kvmppc_set_tcr(vcpu, tcr);
                break;
        }
+#ifdef CONFIG_ALTIVEC
+       case KVM_REG_PPC_VR0 ... KVM_REG_PPC_VR31:
+               if (!cpu_has_feature(CPU_FTR_ALTIVEC)) {
+                       r = -ENXIO;
+                       break;
+               }
+               vcpu->arch.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;
+               }
+               vcpu->arch.vscr.u[3] = set_reg_val(reg->id, val);
+               break;
+#endif /* CONFIG_ALTIVEC */
        default:
                r = kvmppc_set_one_reg(vcpu, reg->id, &val);
                break;
-- 
1.7.4.1


--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to