Merge branches 'devel-stable', 'entry', 'fixes', 'mach-types', 'misc' and 'smp-hotplu...
[linux-drm-fsl-dcu.git] / arch / arm / kvm / coproc.c
index 4ea9a982269c8f9c9c56808f92b464a025356533..8eea97be1ed52e8ea42d463f166fdc3e69261682 100644 (file)
@@ -76,14 +76,14 @@ static bool access_dcsw(struct kvm_vcpu *vcpu,
                        const struct coproc_params *p,
                        const struct coproc_reg *r)
 {
-       u32 val;
+       unsigned long val;
        int cpu;
 
-       cpu = get_cpu();
-
        if (!p->is_write)
                return read_from_write_only(vcpu, p);
 
+       cpu = get_cpu();
+
        cpumask_setall(&vcpu->arch.require_dcache_flush);
        cpumask_clear_cpu(cpu, &vcpu->arch.require_dcache_flush);
 
@@ -293,12 +293,12 @@ static int emulate_cp15(struct kvm_vcpu *vcpu,
 
                if (likely(r->access(vcpu, params, r))) {
                        /* Skip instruction, since it was emulated */
-                       kvm_skip_instr(vcpu, (vcpu->arch.hsr >> 25) & 1);
+                       kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
                        return 1;
                }
                /* If access function fails, it should complain. */
        } else {
-               kvm_err("Unsupported guest CP15 access at: %08x\n",
+               kvm_err("Unsupported guest CP15 access at: %08lx\n",
                        *vcpu_pc(vcpu));
                print_cp_instr(params);
        }
@@ -315,14 +315,14 @@ int kvm_handle_cp15_64(struct kvm_vcpu *vcpu, struct kvm_run *run)
 {
        struct coproc_params params;
 
-       params.CRm = (vcpu->arch.hsr >> 1) & 0xf;
-       params.Rt1 = (vcpu->arch.hsr >> 5) & 0xf;
-       params.is_write = ((vcpu->arch.hsr & 1) == 0);
+       params.CRm = (kvm_vcpu_get_hsr(vcpu) >> 1) & 0xf;
+       params.Rt1 = (kvm_vcpu_get_hsr(vcpu) >> 5) & 0xf;
+       params.is_write = ((kvm_vcpu_get_hsr(vcpu) & 1) == 0);
        params.is_64bit = true;
 
-       params.Op1 = (vcpu->arch.hsr >> 16) & 0xf;
+       params.Op1 = (kvm_vcpu_get_hsr(vcpu) >> 16) & 0xf;
        params.Op2 = 0;
-       params.Rt2 = (vcpu->arch.hsr >> 10) & 0xf;
+       params.Rt2 = (kvm_vcpu_get_hsr(vcpu) >> 10) & 0xf;
        params.CRn = 0;
 
        return emulate_cp15(vcpu, &params);
@@ -347,14 +347,14 @@ int kvm_handle_cp15_32(struct kvm_vcpu *vcpu, struct kvm_run *run)
 {
        struct coproc_params params;
 
-       params.CRm = (vcpu->arch.hsr >> 1) & 0xf;
-       params.Rt1 = (vcpu->arch.hsr >> 5) & 0xf;
-       params.is_write = ((vcpu->arch.hsr & 1) == 0);
+       params.CRm = (kvm_vcpu_get_hsr(vcpu) >> 1) & 0xf;
+       params.Rt1 = (kvm_vcpu_get_hsr(vcpu) >> 5) & 0xf;
+       params.is_write = ((kvm_vcpu_get_hsr(vcpu) & 1) == 0);
        params.is_64bit = false;
 
-       params.CRn = (vcpu->arch.hsr >> 10) & 0xf;
-       params.Op1 = (vcpu->arch.hsr >> 14) & 0x7;
-       params.Op2 = (vcpu->arch.hsr >> 17) & 0x7;
+       params.CRn = (kvm_vcpu_get_hsr(vcpu) >> 10) & 0xf;
+       params.Op1 = (kvm_vcpu_get_hsr(vcpu) >> 14) & 0x7;
+       params.Op2 = (kvm_vcpu_get_hsr(vcpu) >> 17) & 0x7;
        params.Rt2 = 0;
 
        return emulate_cp15(vcpu, &params);