Lines Matching refs:brbinf
66 u64 brbinf; member
144 static u64 brbe_record_valid(u64 brbinf) in brbe_record_valid() argument
146 return FIELD_GET(BRBINFx_EL1_VALID_MASK, brbinf); in brbe_record_valid()
149 static bool brbe_invalid(u64 brbinf) in brbe_invalid() argument
151 return brbe_record_valid(brbinf) == BRBINFx_EL1_VALID_NONE; in brbe_invalid()
154 static bool brbe_record_is_complete(u64 brbinf) in brbe_record_is_complete() argument
156 return brbe_record_valid(brbinf) == BRBINFx_EL1_VALID_FULL; in brbe_record_is_complete()
159 static bool brbe_record_is_source_only(u64 brbinf) in brbe_record_is_source_only() argument
161 return brbe_record_valid(brbinf) == BRBINFx_EL1_VALID_SOURCE; in brbe_record_is_source_only()
164 static bool brbe_record_is_target_only(u64 brbinf) in brbe_record_is_target_only() argument
166 return brbe_record_valid(brbinf) == BRBINFx_EL1_VALID_TARGET; in brbe_record_is_target_only()
169 static int brbinf_get_in_tx(u64 brbinf) in brbinf_get_in_tx() argument
171 return FIELD_GET(BRBINFx_EL1_T_MASK, brbinf); in brbinf_get_in_tx()
174 static int brbinf_get_mispredict(u64 brbinf) in brbinf_get_mispredict() argument
176 return FIELD_GET(BRBINFx_EL1_MPRED_MASK, brbinf); in brbinf_get_mispredict()
179 static int brbinf_get_lastfailed(u64 brbinf) in brbinf_get_lastfailed() argument
181 return FIELD_GET(BRBINFx_EL1_LASTFAILED_MASK, brbinf); in brbinf_get_lastfailed()
184 static u16 brbinf_get_cycles(u64 brbinf) in brbinf_get_cycles() argument
191 if (brbinf & BRBINFx_EL1_CCU) in brbinf_get_cycles()
194 exp = FIELD_GET(BRBINFx_EL1_CC_EXP_MASK, brbinf); in brbinf_get_cycles()
195 mant = FIELD_GET(BRBINFx_EL1_CC_MANT_MASK, brbinf); in brbinf_get_cycles()
205 static int brbinf_get_type(u64 brbinf) in brbinf_get_type() argument
207 return FIELD_GET(BRBINFx_EL1_TYPE_MASK, brbinf); in brbinf_get_type()
210 static int brbinf_get_el(u64 brbinf) in brbinf_get_el() argument
212 return FIELD_GET(BRBINFx_EL1_EL_MASK, brbinf); in brbinf_get_el()
276 entry->brbinf = get_brbinf_reg(idx); in __read_brbe_regset()
278 if (brbe_invalid(entry->brbinf)) in __read_brbe_regset()
566 static void brbe_set_perf_entry_type(struct perf_branch_entry *entry, u64 brbinf) in brbe_set_perf_entry_type() argument
568 int brbe_type = brbinf_get_type(brbinf); in brbe_set_perf_entry_type()
578 static int brbinf_get_perf_priv(u64 brbinf) in brbinf_get_perf_priv() argument
580 int brbe_el = brbinf_get_el(brbinf); in brbinf_get_perf_priv()
601 u64 brbinf; in perf_entry_from_brbe_regset() local
606 brbinf = bregs.brbinf; in perf_entry_from_brbe_regset()
608 if (brbe_record_is_complete(brbinf)) { in perf_entry_from_brbe_regset()
611 } else if (brbe_record_is_source_only(brbinf)) { in perf_entry_from_brbe_regset()
614 } else if (brbe_record_is_target_only(brbinf)) { in perf_entry_from_brbe_regset()
619 brbe_set_perf_entry_type(entry, brbinf); in perf_entry_from_brbe_regset()
622 entry->cycles = brbinf_get_cycles(brbinf); in perf_entry_from_brbe_regset()
626 if (!brbe_record_is_target_only(brbinf)) { in perf_entry_from_brbe_regset()
627 entry->mispred = brbinf_get_mispredict(brbinf); in perf_entry_from_brbe_regset()
636 if (brbinf_get_lastfailed(brbinf) || brbinf_get_in_tx(brbinf)) in perf_entry_from_brbe_regset()
644 if (!brbe_record_is_source_only(brbinf)) in perf_entry_from_brbe_regset()
645 entry->priv = brbinf_get_perf_priv(brbinf); in perf_entry_from_brbe_regset()