|
Packit |
577717 |
/* Maynard
|
|
Packit |
577717 |
* Descriptions of the events available for different processor types.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
#include <stddef.h> /* for NULL */
|
|
Packit |
577717 |
#include "libperfctr.h"
|
|
Packit |
577717 |
#include "event_set.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* XXX: a few events use the TBSEL and THRESHOLD fields in MMCR0.
|
|
Packit |
577717 |
* They should have unit mask descriptors.
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* PowerPC common events for PMC1-PMC4, introduced in 604.
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event ppc64_common_events[] = {
|
|
Packit |
577717 |
{ 0x00, 0x0F, NULL, "NOTHING",
|
|
Packit |
577717 |
"Nothing. Register counter holds current value" },
|
|
Packit |
577717 |
{ 0x01, 0x0F, NULL, "PROCESSOR_CYCLES",
|
|
Packit |
577717 |
"Processor cycles. Count every cycle" },
|
|
Packit |
577717 |
{ 0x02, 0x0F, NULL, "INSTRUCTIONS_COMPLETED",
|
|
Packit |
577717 |
"Number of instructions completed. Does not include folded branches" },
|
|
Packit |
577717 |
{ 0x03, 0x0F, NULL, "TBL_BIT_TRANSITIONS", /* XXX: depends on MMCR0[TBSEL] */
|
|
Packit |
577717 |
"Time-base (lower) bit transition" },
|
|
Packit |
577717 |
{ 0x04, 0x0F, NULL, "INSTRUCTIONS_DISPATCHED",
|
|
Packit |
577717 |
"Number of instructions dispatched" },
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event_set ppc64_common_event_set = {
|
|
Packit |
577717 |
.cpu_type = PERFCTR_PPC64_POWER4,
|
|
Packit |
577717 |
.event_prefix = "PM_",
|
|
Packit |
577717 |
.include = NULL,
|
|
Packit |
577717 |
.nevents = ARRAY_SIZE(ppc64_common_events),
|
|
Packit |
577717 |
.events = ppc64_common_events,
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event_set * const cpu_event_set[] = {
|
|
Packit |
577717 |
[PERFCTR_PPC64_POWER4] = &ppc64_common_event_set,
|
|
Packit |
577717 |
[PERFCTR_PPC64_POWER4p] = &ppc64_common_event_set,
|
|
Packit |
577717 |
[PERFCTR_PPC64_970] = &ppc64_common_event_set,
|
|
Packit |
577717 |
[PERFCTR_PPC64_970MP] = &ppc64_common_event_set,
|
|
Packit |
577717 |
// [PERFCTR_PPC_604e] = &perfctr_ppc604e_event_set,
|
|
Packit |
577717 |
// [PERFCTR_PPC_750] = &perfctr_ppc750_event_set,
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
const struct perfctr_event_set *perfctr_cpu_event_set(unsigned cpu_type)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
if( cpu_type >= ARRAY_SIZE(cpu_event_set) )
|
|
Packit |
577717 |
return 0;
|
|
Packit |
577717 |
return cpu_event_set[cpu_type];
|
|
Packit |
577717 |
}
|