Blame src/perfctr-2.6.x/usr.lib/event_set_arm.c

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
}