sparc_pmu
if (sparc_pmu->num_pcrs == 1) {
for (i = 0; i < sparc_pmu->num_pcrs; i++)
for (i = 0; i < sparc_pmu->num_pcrs; i++) {
val &= ~(sparc_pmu->user_bit | sparc_pmu->priv_bit |
sparc_pmu->hv_bit | sparc_pmu->irq_bit);
for (i = 0; i < sparc_pmu->num_pcrs; i++)
if (!sparc_pmu->cache_map)
pmap = &((*sparc_pmu->cache_map)[cache_type][cache_op][cache_result]);
if (n_ev > sparc_pmu->max_hw_events)
if (!(sparc_pmu->flags & SPARC_PMU_HAS_CONFLICTS)) {
if (!(sparc_pmu->flags & SPARC_PMU_ALL_EXCLUDES_SAME))
if (n0 >= sparc_pmu->max_hw_events)
if (attr->config >= sparc_pmu->max_events)
pmap = sparc_pmu->event_map(attr->config);
hwc->config_base = sparc_pmu->irq_bit;
hwc->config_base |= sparc_pmu->user_bit;
hwc->config_base |= sparc_pmu->priv_bit;
hwc->config_base |= sparc_pmu->hv_bit;
sparc_pmu->max_hw_events - 1,
if (!sparc_pmu)
if (!sparc_pmu)
for (i = 0; i < sparc_pmu->num_pcrs; i++)
for (i = 0; i < sparc_pmu->num_pic_regs; i++)
if (sparc_pmu->irq_bit &&
sparc_pmu->num_pcrs == 1)
if (sparc_pmu->irq_bit &&
sparc_pmu->num_pcrs > 1)
sparc_pmu = &ultra3_pmu;
sparc_pmu = &niagara1_pmu;
sparc_pmu = &niagara2_pmu;
sparc_pmu = &niagara4_pmu;
sparc_pmu = &sparc_m7_pmu;
static const struct sparc_pmu ultra3_pmu = {
static const struct sparc_pmu niagara1_pmu = {
static const struct sparc_pmu niagara2_pmu = {
static const struct sparc_pmu niagara4_pmu = {
static const struct sparc_pmu sparc_m7_pmu = {
static const struct sparc_pmu *sparc_pmu __read_mostly;
event_id <<= sparc_pmu->upper_shift;
event_id <<= sparc_pmu->lower_shift;
return event_encoding(sparc_pmu->event_mask, idx);
sparc_pmu->upper_nop :
sparc_pmu->lower_nop, idx);
if (sparc_pmu->num_pcrs > 1)
if (sparc_pmu->num_pcrs > 1)
new_raw_count = sparc_pmu->read_pmc(idx);
sparc_pmu->write_pmc(idx, (u64)(-left) & 0xffffffff);