Lines Matching refs:params
720 static const struct sys_reg_desc *find_reg(const struct sys_reg_params *params, in find_reg() argument
729 if (params->Op0 != r->Op0) in find_reg()
731 if (params->Op1 != r->Op1) in find_reg()
733 if (params->CRn != r->CRn) in find_reg()
735 if (params->CRm != r->CRm) in find_reg()
737 if (params->Op2 != r->Op2) in find_reg()
762 const struct sys_reg_params *params, in emulate_cp() argument
771 r = find_reg(params, table, num); in emulate_cp()
782 if (likely(r->access(vcpu, params, r))) { in emulate_cp()
796 struct sys_reg_params *params) in unhandled_cp_access() argument
816 print_sys_reg_instr(params); in unhandled_cp_access()
831 struct sys_reg_params params; in kvm_handle_cp_64() local
835 params.is_aarch32 = true; in kvm_handle_cp_64()
836 params.is_32bit = false; in kvm_handle_cp_64()
837 params.CRm = (hsr >> 1) & 0xf; in kvm_handle_cp_64()
838 params.Rt = (hsr >> 5) & 0xf; in kvm_handle_cp_64()
839 params.is_write = ((hsr & 1) == 0); in kvm_handle_cp_64()
841 params.Op0 = 0; in kvm_handle_cp_64()
842 params.Op1 = (hsr >> 16) & 0xf; in kvm_handle_cp_64()
843 params.Op2 = 0; in kvm_handle_cp_64()
844 params.CRn = 0; in kvm_handle_cp_64()
851 if (params.is_write) { in kvm_handle_cp_64()
852 u64 val = *vcpu_reg(vcpu, params.Rt); in kvm_handle_cp_64()
855 *vcpu_reg(vcpu, params.Rt) = val; in kvm_handle_cp_64()
858 if (!emulate_cp(vcpu, ¶ms, target_specific, nr_specific)) in kvm_handle_cp_64()
860 if (!emulate_cp(vcpu, ¶ms, global, nr_global)) in kvm_handle_cp_64()
863 unhandled_cp_access(vcpu, ¶ms); in kvm_handle_cp_64()
867 if (!params.is_write) { in kvm_handle_cp_64()
868 u64 val = *vcpu_reg(vcpu, params.Rt); in kvm_handle_cp_64()
887 struct sys_reg_params params; in kvm_handle_cp_32() local
890 params.is_aarch32 = true; in kvm_handle_cp_32()
891 params.is_32bit = true; in kvm_handle_cp_32()
892 params.CRm = (hsr >> 1) & 0xf; in kvm_handle_cp_32()
893 params.Rt = (hsr >> 5) & 0xf; in kvm_handle_cp_32()
894 params.is_write = ((hsr & 1) == 0); in kvm_handle_cp_32()
895 params.CRn = (hsr >> 10) & 0xf; in kvm_handle_cp_32()
896 params.Op0 = 0; in kvm_handle_cp_32()
897 params.Op1 = (hsr >> 14) & 0x7; in kvm_handle_cp_32()
898 params.Op2 = (hsr >> 17) & 0x7; in kvm_handle_cp_32()
900 if (!emulate_cp(vcpu, ¶ms, target_specific, nr_specific)) in kvm_handle_cp_32()
902 if (!emulate_cp(vcpu, ¶ms, global, nr_global)) in kvm_handle_cp_32()
905 unhandled_cp_access(vcpu, ¶ms); in kvm_handle_cp_32()
946 const struct sys_reg_params *params) in emulate_sys_reg() argument
954 r = find_reg(params, table, num); in emulate_sys_reg()
956 r = find_reg(params, sys_reg_descs, ARRAY_SIZE(sys_reg_descs)); in emulate_sys_reg()
967 if (likely(r->access(vcpu, params, r))) { in emulate_sys_reg()
976 print_sys_reg_instr(params); in emulate_sys_reg()
999 struct sys_reg_params params; in kvm_handle_sys_reg() local
1002 params.is_aarch32 = false; in kvm_handle_sys_reg()
1003 params.is_32bit = false; in kvm_handle_sys_reg()
1004 params.Op0 = (esr >> 20) & 3; in kvm_handle_sys_reg()
1005 params.Op1 = (esr >> 14) & 0x7; in kvm_handle_sys_reg()
1006 params.CRn = (esr >> 10) & 0xf; in kvm_handle_sys_reg()
1007 params.CRm = (esr >> 1) & 0xf; in kvm_handle_sys_reg()
1008 params.Op2 = (esr >> 17) & 0x7; in kvm_handle_sys_reg()
1009 params.Rt = (esr >> 5) & 0x1f; in kvm_handle_sys_reg()
1010 params.is_write = !(esr & 1); in kvm_handle_sys_reg()
1012 return emulate_sys_reg(vcpu, ¶ms); in kvm_handle_sys_reg()
1019 static bool index_to_params(u64 id, struct sys_reg_params *params) in index_to_params() argument
1032 params->Op0 = ((id & KVM_REG_ARM64_SYSREG_OP0_MASK) in index_to_params()
1034 params->Op1 = ((id & KVM_REG_ARM64_SYSREG_OP1_MASK) in index_to_params()
1036 params->CRn = ((id & KVM_REG_ARM64_SYSREG_CRN_MASK) in index_to_params()
1038 params->CRm = ((id & KVM_REG_ARM64_SYSREG_CRM_MASK) in index_to_params()
1040 params->Op2 = ((id & KVM_REG_ARM64_SYSREG_OP2_MASK) in index_to_params()
1054 struct sys_reg_params params; in index_to_sys_reg_desc() local
1060 if (!index_to_params(id, ¶ms)) in index_to_sys_reg_desc()
1064 r = find_reg(¶ms, table, num); in index_to_sys_reg_desc()
1066 r = find_reg(¶ms, sys_reg_descs, ARRAY_SIZE(sys_reg_descs)); in index_to_sys_reg_desc()
1172 struct sys_reg_params params; in get_invariant_sys_reg() local
1175 if (!index_to_params(id, ¶ms)) in get_invariant_sys_reg()
1178 r = find_reg(¶ms, invariant_sys_regs, ARRAY_SIZE(invariant_sys_regs)); in get_invariant_sys_reg()
1187 struct sys_reg_params params; in set_invariant_sys_reg() local
1192 if (!index_to_params(id, ¶ms)) in set_invariant_sys_reg()
1194 r = find_reg(¶ms, invariant_sys_regs, ARRAY_SIZE(invariant_sys_regs)); in set_invariant_sys_reg()