|
Packit |
577717 |
/* $Id: event_set_arm.c,v 1.1.2.1 2007/02/11 20:15:03 mikpe Exp $
|
|
Packit |
577717 |
* Descriptions of the events available for different processor types.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Copyright (C) 2005-2007 Mikael Pettersson
|
|
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 |
* XScale 1 and 2 events for PMC1-PMC4.
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event xsc1_events[] = {
|
|
Packit |
577717 |
{ 0x00, 0x0F, NULL, "IC_MISS",
|
|
Packit |
577717 |
"Instruction cache miss requires fetch from external memory" },
|
|
Packit |
577717 |
{ 0x01, 0x0F, NULL, "IC_CANNOT_DELIVER",
|
|
Packit |
577717 |
"Instruction cache cannot deliver an instruction" },
|
|
Packit |
577717 |
{ 0x02, 0x0F, NULL, "DATA_DEP_STALL",
|
|
Packit |
577717 |
"Stall due to a data dependency" },
|
|
Packit |
577717 |
{ 0x03, 0x0F, NULL, "ITLB_MISS",
|
|
Packit |
577717 |
"Instruction TLB miss" },
|
|
Packit |
577717 |
{ 0x04, 0x0F, NULL, "DTLB_MISS",
|
|
Packit |
577717 |
"Data TLB miss" },
|
|
Packit |
577717 |
{ 0x05, 0x0F, NULL, "BR_INST_EXEC",
|
|
Packit |
577717 |
"Branch instruction executed" },
|
|
Packit |
577717 |
{ 0x06, 0x0F, NULL, "BR_MISPRED",
|
|
Packit |
577717 |
"Branch mispredicted" },
|
|
Packit |
577717 |
{ 0x07, 0x0F, NULL, "INST_EXEC",
|
|
Packit |
577717 |
"Instruction executed" },
|
|
Packit |
577717 |
{ 0x08, 0x0F, NULL, "DC_FULL_CYCLES",
|
|
Packit |
577717 |
"Stall because the data cache buffers are full (cycles)" },
|
|
Packit |
577717 |
{ 0x09, 0x0F, NULL, "DC_FULL_OCCURRENCES",
|
|
Packit |
577717 |
"Stall because the data cache buffers are full (occurrences)" },
|
|
Packit |
577717 |
{ 0x0A, 0x0F, NULL, "DC_ACCESS",
|
|
Packit |
577717 |
"Data cache access" },
|
|
Packit |
577717 |
{ 0x0B, 0x0F, NULL, "DC_MISS",
|
|
Packit |
577717 |
"Data cache miss" },
|
|
Packit |
577717 |
{ 0x0C, 0x0F, NULL, "DC_WRITE_BACK",
|
|
Packit |
577717 |
"Data cache write-back" },
|
|
Packit |
577717 |
{ 0x0D, 0x0F, NULL, "SW_CHANGED_PC",
|
|
Packit |
577717 |
"Software changed the PC" },
|
|
Packit |
577717 |
{ 0xFF, 0x0F, NULL, "IDLE",
|
|
Packit |
577717 |
"Power saving event" },
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event_set perfctr_xsc1_event_set = {
|
|
Packit |
577717 |
.cpu_type = PERFCTR_ARM_XSC1,
|
|
Packit |
577717 |
.event_prefix = "XSC1_",
|
|
Packit |
577717 |
.include = NULL,
|
|
Packit |
577717 |
.nevents = ARRAY_SIZE(xsc1_events),
|
|
Packit |
577717 |
.events = xsc1_events,
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Helper function to translate a cpu_type code to an event_set pointer.
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const struct perfctr_event_set * const cpu_event_set[] = {
|
|
Packit |
577717 |
[PERFCTR_ARM_XSC1] = &perfctr_xsc1_event_set,
|
|
Packit |
577717 |
[PERFCTR_ARM_XSC2] = &perfctr_xsc1_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 |
}
|