Lines Matching refs:ftrp

667 static u64 arm64_ftr_set_value(const struct arm64_ftr_bits *ftrp, s64 reg,  in arm64_ftr_set_value()  argument
670 u64 mask = arm64_ftr_mask(ftrp); in arm64_ftr_set_value()
673 reg |= (ftr_val << ftrp->shift) & mask; in arm64_ftr_set_value()
677 static s64 arm64_ftr_safe_value(const struct arm64_ftr_bits *ftrp, s64 new, in arm64_ftr_safe_value() argument
682 switch (ftrp->type) { in arm64_ftr_safe_value()
684 ret = ftrp->safe_val; in arm64_ftr_safe_value()
766 const struct arm64_ftr_bits *ftrp; in init_cpu_ftr_reg() local
772 for (ftrp = reg->ftr_bits; ftrp->width; ftrp++) { in init_cpu_ftr_reg()
773 u64 ftr_mask = arm64_ftr_mask(ftrp); in init_cpu_ftr_reg()
774 s64 ftr_new = arm64_ftr_value(ftrp, new); in init_cpu_ftr_reg()
776 val = arm64_ftr_set_value(ftrp, val, ftr_new); in init_cpu_ftr_reg()
779 if (!ftrp->strict) in init_cpu_ftr_reg()
781 if (ftrp->visible) in init_cpu_ftr_reg()
784 reg->user_val = arm64_ftr_set_value(ftrp, in init_cpu_ftr_reg()
786 ftrp->safe_val); in init_cpu_ftr_reg()
885 const struct arm64_ftr_bits *ftrp; in update_cpu_ftr_reg() local
887 for (ftrp = reg->ftr_bits; ftrp->width; ftrp++) { in update_cpu_ftr_reg()
888 s64 ftr_cur = arm64_ftr_value(ftrp, reg->sys_val); in update_cpu_ftr_reg()
889 s64 ftr_new = arm64_ftr_value(ftrp, new); in update_cpu_ftr_reg()
894 ftr_new = arm64_ftr_safe_value(ftrp, ftr_new, ftr_cur); in update_cpu_ftr_reg()
895 reg->sys_val = arm64_ftr_set_value(ftrp, reg->sys_val, ftr_new); in update_cpu_ftr_reg()
917 const struct arm64_ftr_bits *ftrp; in relax_cpu_ftr_reg() local
923 for (ftrp = regp->ftr_bits; ftrp->width; ftrp++) { in relax_cpu_ftr_reg()
924 if (ftrp->shift == field) { in relax_cpu_ftr_reg()
925 regp->strict_mask &= ~arm64_ftr_mask(ftrp); in relax_cpu_ftr_reg()
931 WARN_ON(!ftrp->width); in relax_cpu_ftr_reg()