43#define sel_event_mask perfsel.sel_event_mask
44#define sel_exl perfsel.sel_exl
45#define sel_os perfsel.sel_os
46#define sel_usr perfsel.sel_usr
47#define sel_sup perfsel.sel_sup
48#define sel_int perfsel.sel_int
57 static char mips_name[64] =
"";
67 if (strstr(buffer,
"MIPS 20Kc"))
76 else if (strstr(buffer,
"MIPS 24K"))
85 else if (strstr(buffer,
"MIPS 25Kf"))
94 else if (strstr(buffer,
"MIPS 34K"))
103 else if (strstr(buffer,
"MIPS 5Kc"))
113 else if (strstr(buffer,
"MIPS 74K"))
123 else if (strstr(buffer,
"R10000"))
132 else if (strstr(buffer,
"R12000"))
141 else if (strstr(buffer,
"RM7000"))
150 else if (strstr(buffer,
"RM9000"))
159 else if (strstr(buffer,
"SB1"))
168 else if (strstr(buffer,
"VR5432"))
177 else if (strstr(buffer,
"VR5500"))
202 plm = e[j].
plm ? e[j].
plm : plm;
214 __pfm_vbprintf(
"[CP0_25_%"PRIx64
"(pmc%u)=0x%"PRIx64
" event_mask=0x%x usr=%d os=%d sup=%d exl=%d int=1] %s\n",
243 unsigned int used = 0;
253 for (j=0; j < cnt; j++) {
262 for (j=0; j < cnt;j++)
264 unsigned int cntr, avail;
269 DPRINT(
"Rank %d: Counters available 0x%x\n",
i,avail);
274 cntr = ffs(avail) - 1;
275 DPRINT(
"Rank %d: Chose counter %d\n",
i,cntr);
281 DPRINT(
"%d: Used counters 0x%x\n",
i, used);
333 memset(counters, 0,
sizeof(*counters));
338 int t = ffs(
tmp) - 1;
static pme_gen_mips64_entry_t gen_mips64_r12000_pe[]
static pme_gen_mips64_entry_t gen_mips64_5K_pe[]
static pme_gen_mips64_entry_t gen_mips64_34K_pe[]
static pme_gen_mips64_entry_t gen_mips64_rm9000_pe[]
static pme_gen_mips64_entry_t gen_mips64_sb1_pe[]
static pme_gen_mips64_entry_t gen_mips64_r10000_pe[]
static pme_gen_mips64_entry_t gen_mips64_25K_pe[]
static pme_gen_mips64_entry_t gen_mips64_vr5500_pe[]
static pme_gen_mips64_entry_t gen_mips64_rm7000_pe[]
static pme_gen_mips64_entry_t gen_mips64_vr5432_pe[]
static pme_gen_mips64_entry_t gen_mips64_20K_pe[]
static pme_gen_mips64_entry_t gen_mips64_24K_pe[]
#define PFMLIB_MIPS_20KC_PMU
#define PFMLIB_MIPS_74K_PMU
#define PFMLIB_MIPS_SB1_PMU
static int pfm_regmask_set(pfmlib_regmask_t *h, unsigned int b)
#define PFMLIB_MIPS_R12000_PMU
#define PFMLIB_ERR_NOTFOUND
#define PFMLIB_MIPS_25KF_PMU
#define PFMLIB_MIPS_RM9000_PMU
#define PFMLIB_MIPS_R10000_PMU
#define PFMLIB_MIPS_5KC_PMU
#define PFMLIB_ERR_TOOMANY
#define PFMLIB_MIPS_VR5500_PMU
#define PFMLIB_ERR_NOINIT
pfm_err_t pfm_find_full_event(const char *str, pfmlib_event_t *e)
#define PFMLIB_ERR_NOASSIGN
#define PFMLIB_MIPS_24K_PMU
#define PFMLIB_MIPS_34K_PMU
#define PFMLIB_ERR_NOTSUPP
#define PFMLIB_UNKNOWN_PMU
#define PFMLIB_MIPS_VR5432_PMU
#define PFMLIB_MIPS_RM7000_PMU
static void pfm_gen_mips64_get_impl_perfctr(pfmlib_regmask_t *impl_pmds)
static pme_gen_mips64_entry_t * gen_mips64_pe
static int pfm_gen_mips64_get_event_code(unsigned int i, unsigned int cnt, int *code)
pfm_pmu_support_t generic_mips64_support
static void pfm_gen_mips64_get_impl_counters(pfmlib_regmask_t *impl_counters)
static void pfm_gen_mips64_get_hw_counter_width(unsigned int *width)
static int pfm_gen_mips64_get_event_description(unsigned int ev, char **str)
static int pfm_gen_mips64_detect(void)
static void pfm_gen_mips64_get_impl_perfsel(pfmlib_regmask_t *impl_pmcs)
static char * pfm_gen_mips64_get_event_name(unsigned int i)
static void stuff_regs(pfmlib_event_t *e, int plm, pfmlib_reg_t *pc, pfmlib_reg_t *pd, int cntr, int j, pfmlib_gen_mips64_input_param_t *mod_in)
static int pfm_gen_mips64_dispatch_events(pfmlib_input_param_t *inp, void *model_in, pfmlib_output_param_t *outp, void *model_out)
static void pfm_gen_mips64_get_event_counters(unsigned int j, pfmlib_regmask_t *counters)
static int pfm_gen_mips64_dispatch_counters(pfmlib_input_param_t *inp, pfmlib_gen_mips64_input_param_t *mod_in, pfmlib_output_param_t *outp)
static int pfm_gen_mips64_get_cycle_event(pfmlib_event_t *e)
static int pfm_gen_mips64_get_inst_retired(pfmlib_event_t *e)
#define PMU_GEN_MIPS64_NUM_COUNTERS
#define PMU_GEN_MIPS64_COUNTER_WIDTH
int __pfm_getcpuinfo_attr(const char *attr, char *ret_buf, size_t maxlen)
void __pfm_vbprintf(const char *fmt,...)
#define DPRINT(fmt, a...)
#define PFMLIB_MULT_CODE_EVENT
pfmlib_reg_t pfp_pmds[PFMLIB_MAX_PMDS]
pfmlib_reg_t pfp_pmcs[PFMLIB_MAX_PMCS]
unsigned int pfp_pmc_count
unsigned int pfp_pmd_count
unsigned long long reg_value
unsigned long long reg_addr
unsigned int pme_counters
unsigned long sel_event_mask