165 counters->
bits[0] = (1 << 0) | (1 << 1);
169 counters->
bits[0] = 0;
171 counters->
bits[0] |= (1 << 0);
173 counters->
bits[0] |= (1 << 1);
185#define PCR_PRIV (0x1UL << 0)
186#define PCR_SYS_TRACE (0x1UL << 1)
187#define PCR_USER_TRACE (0x1UL << 2)
195#define PCR_S0_SHIFT 4
196#define PCR_S0 (0x1fUL << PCR_S0_SHIFT)
197#define PCR_S1_SHIFT 11
198#define PCR_S1 (0x1fUL << PCR_S1_SHIFT)
201#define PCR_N2_HYP_TRACE (0x1UL << 3)
202#define PCR_N2_TOE0 (0x1UL << 4)
203#define PCR_N2_TOE1 (0x1UL << 5)
204#define PCR_N2_SL0_SHIFT 14
205#define PCR_N2_SL0 (0xf << PCR_N2_SL0_SHIFT)
206#define PCR_N2_MASK0_SHIFT 6
207#define PCR_N2_MASK0 (0xff << PCR_N2_MASK0_SHIFT)
208#define PCR_N2_SL1_SHIFT 27
209#define PCR_N2_SL1 (0xf << PCR_N2_SL1_SHIFT)
210#define PCR_N2_MASK1_SHIFT 19
211#define PCR_N2_MASK1 (0xff << PCR_N2_MASK1_SHIFT)
218 unsigned long long pcr, vals[2];
259 if ((ctrls[0] & ctrls[1]) == 0)
267 ctrls[0] &= ~ctrls[1];
270 ctrls[1] &= ~ctrls[0];
282 unsigned long long val = vals[
i];
283 char ctrl = ctrls[
i];
307 unsigned int j, shift;
322 pcr |= (1ULL << (shift + mask));
344 if (!strcmp(
name,
"ultra12"))
346 if (!strcmp(
name,
"ultra3"))
348 if (!strcmp(
name,
"ultra3i"))
350 if (!strcmp(
name,
"ultra3+"))
352 if (!strcmp(
name,
"ultra4+"))
354 if (!strcmp(
name,
"niagara2"))
356 if (!strcmp(
name,
"niagara"))
363 int ret, pmu_type, pme_count;
416 impl_pmcs->
bits[0] = 0x1;
421 impl_pmds->
bits[0] = 0x3;
441 unsigned int mask,
char **desc)
455 unsigned int mask,
unsigned int *code)
static pme_sparc_entry_t niagara1_pe[]
#define PME_NIAGARA1_EVENT_COUNT
#define PME_NIAGARA2_EVENT_COUNT
static pme_sparc_mask_entry_t niagara2_pe[]
#define PFMLIB_SPARC_ULTRA3I_PMU
#define PFMLIB_SPARC_NIAGARA1_PMU
#define PFMLIB_SPARC_ULTRA12_PMU
#define PFMLIB_SPARC_ULTRA3PLUS_PMU
#define PFMLIB_SPARC_ULTRA3_PMU
#define PFMLIB_SPARC_NIAGARA2_PMU
#define PFMLIB_ERR_TOOMANY
#define PFMLIB_ERR_NOASSIGN
#define PFMLIB_SPARC_ULTRA4PLUS_PMU
#define PFMLIB_ERR_NOTSUPP
#define PFMLIB_UNKNOWN_PMU
int __pfm_getcpuinfo_attr(const char *attr, char *ret_buf, size_t maxlen)
pfm_pmu_support_t sparc_support
static int pfm_sparc_get_event_mask_desc(unsigned int event, unsigned int mask, char **desc)
static int pfm_sparc_pmu_detect(void)
static int pfm_sparc_get_event_desc(unsigned int event, char **desc)
#define PCR_N2_MASK1_SHIFT
static int pfm_sparc_dispatch_events(pfmlib_input_param_t *input, void *model_input, pfmlib_output_param_t *output, void *model_output)
static int pfm_sparc_get_inst_retired(pfmlib_event_t *e)
static char * get_event_name(int event)
static int pfm_sparc_get_cycle_event(pfmlib_event_t *e)
static unsigned int pfm_sparc_get_num_event_masks(unsigned int event)
static void pfm_sparc_get_impl_pmcs(pfmlib_regmask_t *impl_pmcs)
static char * pfm_sparc_get_event_mask_name(unsigned int event, unsigned int mask)
static void pfm_sparc_get_hw_counter_width(unsigned int *width)
static int get_val(int event)
#define PCR_N2_MASK0_SHIFT
static int pmu_name_to_pmu_type(char *name)
static char * pfm_sparc_get_event_name(unsigned int event)
static int pfm_sparc_get_event_mask_code(unsigned int event, unsigned int mask, unsigned int *code)
static char * get_event_desc(int event)
static void pfm_sparc_get_event_counters(unsigned int event, pfmlib_regmask_t *counters)
static void pfm_sparc_get_impl_pmds(pfmlib_regmask_t *impl_pmds)
static void pfm_sparc_get_impl_counters(pfmlib_regmask_t *impl_counters)
static int pfm_sparc_get_event_code(unsigned int event, unsigned int pmd, int *code)
static char get_ctrl(int event)
unsigned int unit_masks[PFMLIB_MAX_MASKS_PER_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 int reg_reserved1
unsigned long long reg_value
unsigned long reg_alt_addr
unsigned long long reg_addr
pfmlib_regmask_bits_t bits[PFMLIB_REG_BV]
pme_sparc_mask_t pme_masks[EVENT_MASK_BITS]
static pme_sparc_entry_t ultra12_pe[]
#define PME_ULTRA12_EVENT_COUNT
#define PME_ULTRA3_EVENT_COUNT
static pme_sparc_entry_t ultra3_pe[]
static pme_sparc_entry_t ultra3i_pe[]
#define PME_ULTRA3I_EVENT_COUNT
#define PME_ULTRA3PLUS_EVENT_COUNT
static pme_sparc_entry_t ultra3plus_pe[]
#define PME_ULTRA4PLUS_EVENT_COUNT
static pme_sparc_entry_t ultra4plus_pe[]