Lines Matching refs:params

944 static const struct sys_reg_desc *find_reg(const struct sys_reg_params *params,  in find_reg()  argument
953 if (params->Op0 != r->Op0) in find_reg()
955 if (params->Op1 != r->Op1) in find_reg()
957 if (params->CRn != r->CRn) in find_reg()
959 if (params->CRm != r->CRm) in find_reg()
961 if (params->Op2 != r->Op2) in find_reg()
986 struct sys_reg_params *params, in emulate_cp() argument
995 r = find_reg(params, table, num); in emulate_cp()
1006 if (likely(r->access(vcpu, params, r))) { in emulate_cp()
1020 struct sys_reg_params *params) in unhandled_cp_access() argument
1040 print_sys_reg_instr(params); in unhandled_cp_access()
1055 struct sys_reg_params params; in kvm_handle_cp_64() local
1060 params.is_aarch32 = true; in kvm_handle_cp_64()
1061 params.is_32bit = false; in kvm_handle_cp_64()
1062 params.CRm = (hsr >> 1) & 0xf; in kvm_handle_cp_64()
1063 params.is_write = ((hsr & 1) == 0); in kvm_handle_cp_64()
1065 params.Op0 = 0; in kvm_handle_cp_64()
1066 params.Op1 = (hsr >> 16) & 0xf; in kvm_handle_cp_64()
1067 params.Op2 = 0; in kvm_handle_cp_64()
1068 params.CRn = 0; in kvm_handle_cp_64()
1074 if (params.is_write) { in kvm_handle_cp_64()
1075 params.regval = vcpu_get_reg(vcpu, Rt) & 0xffffffff; in kvm_handle_cp_64()
1076 params.regval |= vcpu_get_reg(vcpu, Rt2) << 32; in kvm_handle_cp_64()
1079 if (!emulate_cp(vcpu, &params, target_specific, nr_specific)) in kvm_handle_cp_64()
1081 if (!emulate_cp(vcpu, &params, global, nr_global)) in kvm_handle_cp_64()
1084 unhandled_cp_access(vcpu, &params); in kvm_handle_cp_64()
1088 if (!params.is_write) { in kvm_handle_cp_64()
1089 vcpu_set_reg(vcpu, Rt, lower_32_bits(params.regval)); in kvm_handle_cp_64()
1090 vcpu_set_reg(vcpu, Rt2, upper_32_bits(params.regval)); in kvm_handle_cp_64()
1107 struct sys_reg_params params; in kvm_handle_cp_32() local
1111 params.is_aarch32 = true; in kvm_handle_cp_32()
1112 params.is_32bit = true; in kvm_handle_cp_32()
1113 params.CRm = (hsr >> 1) & 0xf; in kvm_handle_cp_32()
1114 params.regval = vcpu_get_reg(vcpu, Rt); in kvm_handle_cp_32()
1115 params.is_write = ((hsr & 1) == 0); in kvm_handle_cp_32()
1116 params.CRn = (hsr >> 10) & 0xf; in kvm_handle_cp_32()
1117 params.Op0 = 0; in kvm_handle_cp_32()
1118 params.Op1 = (hsr >> 14) & 0x7; in kvm_handle_cp_32()
1119 params.Op2 = (hsr >> 17) & 0x7; in kvm_handle_cp_32()
1121 if (!emulate_cp(vcpu, &params, target_specific, nr_specific) || in kvm_handle_cp_32()
1122 !emulate_cp(vcpu, &params, global, nr_global)) { in kvm_handle_cp_32()
1123 if (!params.is_write) in kvm_handle_cp_32()
1124 vcpu_set_reg(vcpu, Rt, params.regval); in kvm_handle_cp_32()
1128 unhandled_cp_access(vcpu, &params); in kvm_handle_cp_32()
1169 struct sys_reg_params *params) in emulate_sys_reg() argument
1177 r = find_reg(params, table, num); in emulate_sys_reg()
1179 r = find_reg(params, sys_reg_descs, ARRAY_SIZE(sys_reg_descs)); in emulate_sys_reg()
1190 if (likely(r->access(vcpu, params, r))) { in emulate_sys_reg()
1199 print_sys_reg_instr(params); in emulate_sys_reg()
1222 struct sys_reg_params params; in kvm_handle_sys_reg() local
1229 params.is_aarch32 = false; in kvm_handle_sys_reg()
1230 params.is_32bit = false; in kvm_handle_sys_reg()
1231 params.Op0 = (esr >> 20) & 3; in kvm_handle_sys_reg()
1232 params.Op1 = (esr >> 14) & 0x7; in kvm_handle_sys_reg()
1233 params.CRn = (esr >> 10) & 0xf; in kvm_handle_sys_reg()
1234 params.CRm = (esr >> 1) & 0xf; in kvm_handle_sys_reg()
1235 params.Op2 = (esr >> 17) & 0x7; in kvm_handle_sys_reg()
1236 params.regval = vcpu_get_reg(vcpu, Rt); in kvm_handle_sys_reg()
1237 params.is_write = !(esr & 1); in kvm_handle_sys_reg()
1239 ret = emulate_sys_reg(vcpu, &params); in kvm_handle_sys_reg()
1241 if (!params.is_write) in kvm_handle_sys_reg()
1242 vcpu_set_reg(vcpu, Rt, params.regval); in kvm_handle_sys_reg()
1250 static bool index_to_params(u64 id, struct sys_reg_params *params) in index_to_params() argument
1263 params->Op0 = ((id & KVM_REG_ARM64_SYSREG_OP0_MASK) in index_to_params()
1265 params->Op1 = ((id & KVM_REG_ARM64_SYSREG_OP1_MASK) in index_to_params()
1267 params->CRn = ((id & KVM_REG_ARM64_SYSREG_CRN_MASK) in index_to_params()
1269 params->CRm = ((id & KVM_REG_ARM64_SYSREG_CRM_MASK) in index_to_params()
1271 params->Op2 = ((id & KVM_REG_ARM64_SYSREG_OP2_MASK) in index_to_params()
1285 struct sys_reg_params params; in index_to_sys_reg_desc() local
1291 if (!index_to_params(id, &params)) in index_to_sys_reg_desc()
1295 r = find_reg(&params, table, num); in index_to_sys_reg_desc()
1297 r = find_reg(&params, sys_reg_descs, ARRAY_SIZE(sys_reg_descs)); in index_to_sys_reg_desc()
1403 struct sys_reg_params params; in get_invariant_sys_reg() local
1406 if (!index_to_params(id, &params)) in get_invariant_sys_reg()
1409 r = find_reg(&params, invariant_sys_regs, ARRAY_SIZE(invariant_sys_regs)); in get_invariant_sys_reg()
1418 struct sys_reg_params params; in set_invariant_sys_reg() local
1423 if (!index_to_params(id, &params)) in set_invariant_sys_reg()
1425 r = find_reg(&params, invariant_sys_regs, ARRAY_SIZE(invariant_sys_regs)); in set_invariant_sys_reg()