in kernel/perf_event_cpu.c [524:549]
static inline void nds32_pmu_write_counter(struct perf_event *event, u32 value)
{
struct nds32_pmu *cpu_pmu = to_nds32_pmu(event->pmu);
struct hw_perf_event *hwc = &event->hw;
int idx = hwc->idx;
if (!nds32_pfm_counter_valid(cpu_pmu, idx)) {
pr_err("CPU writing wrong counter %d\n", idx);
} else {
switch (idx) {
case PFMC0:
__nds32__mtsr_isb(value, NDS32_SR_PFMC0);
break;
case PFMC1:
__nds32__mtsr_isb(value, NDS32_SR_PFMC1);
break;
case PFMC2:
__nds32__mtsr_isb(value, NDS32_SR_PFMC2);
break;
default:
pr_err
("%s: CPU has no performance counters %d\n",
__func__, idx);
}
}
}