Blame src/libpfm4/lib/events/arm_cortex_a8_events.h

Packit 577717
/*
Packit 577717
 * Copyright (c) 2010 University of Tennessee
Packit 577717
 * Contributed by Vince Weaver <vweaver1@utk.edu>
Packit 577717
 *
Packit 577717
 * Permission is hereby granted, free of charge, to any person obtaining a copy
Packit 577717
 * of this software and associated documentation files (the "Software"), to deal
Packit 577717
 * in the Software without restriction, including without limitation the rights
Packit 577717
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
Packit 577717
 * of the Software, and to permit persons to whom the Software is furnished to do so,
Packit 577717
 * subject to the following conditions:
Packit 577717
 *
Packit 577717
 * The above copyright notice and this permission notice shall be included in all
Packit 577717
 * copies or substantial portions of the Software.
Packit 577717
 *
Packit 577717
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
Packit 577717
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
Packit 577717
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
Packit 577717
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Packit 577717
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
Packit 577717
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit 577717
 *
Packit 577717
 * This file is part of libpfm, a performance monitoring support library for
Packit 577717
 * applications on Linux.
Packit 577717
 */
Packit 577717
Packit 577717
/*
Packit 577717
 * the various event names are the same as those given in the
Packit 577717
 * file linux-2.6/arch/arm/kernel/perf_event.c
Packit 577717
 */
Packit 577717
Packit 577717
/*
Packit 577717
 * Cortex A8 Event Table
Packit 577717
 */
Packit 577717
static const arm_entry_t arm_cortex_a8_pe []={
Packit 577717
	{.name = "PMNC_SW_INCR",
Packit 577717
	 .code = 0x00,
Packit 577717
	 .desc = "Incremented by writes to the Software Increment Register"
Packit 577717
	},
Packit 577717
	{.name = "IFETCH_MISS",
Packit 577717
	 .code = 0x01,
Packit 577717
	 .desc = "Instruction fetches that cause lowest-level cache miss"
Packit 577717
	},
Packit 577717
	{.name = "ITLB_MISS",
Packit 577717
	 .code = 0x02,
Packit 577717
	 .desc = "Instruction fetches that cause lowest-level TLB miss"
Packit 577717
	},
Packit 577717
	{.name = "DCACHE_REFILL",
Packit 577717
	 .code = 0x03,
Packit 577717
	 .desc = "Data read or writes that cause lowest-level cache miss"
Packit 577717
	},
Packit 577717
	{.name = "DCACHE_ACCESS",
Packit 577717
	 .code = 0x04,
Packit 577717
	 .desc = "Data read or writes that cause lowest-level cache access"
Packit 577717
	},
Packit 577717
	{.name = "DTLB_REFILL",
Packit 577717
	 .code = 0x05,
Packit 577717
	 .desc = "Data read or writes that cause lowest-level TLB refill"
Packit 577717
	},
Packit 577717
	{.name = "DREAD",
Packit 577717
	 .code = 0x06,
Packit 577717
	 .desc = "Data read architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "DWRITE",
Packit 577717
	 .code = 0x07,
Packit 577717
	 .desc = "Data write architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "INSTR_EXECUTED",
Packit 577717
	 .code = 0x08,
Packit 577717
	 .desc = "Instructions architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "EXC_TAKEN",
Packit 577717
	 .code = 0x09,
Packit 577717
	 .desc = "Counts each exception taken"
Packit 577717
	},
Packit 577717
	{.name = "EXC_EXECUTED",
Packit 577717
	 .code = 0x0a,
Packit 577717
	 .desc = "Exception returns architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "CID_WRITE",
Packit 577717
	 .code = 0x0b,
Packit 577717
	 .desc = "Instruction writes to Context ID Register, architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "PC_WRITE",
Packit 577717
	 .code = 0x0c,
Packit 577717
	 .desc = "Software change of PC.  Equivalent to branches"
Packit 577717
	},
Packit 577717
	{.name = "PC_IMM_BRANCH",
Packit 577717
	 .code = 0x0d,
Packit 577717
	 .desc = "Immediate branches architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "PC_PROC_RETURN",
Packit 577717
	 .code = 0x0e,
Packit 577717
	 .desc = "Procedure returns architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "UNALIGNED_ACCESS",
Packit 577717
	 .code = 0x0f,
Packit 577717
	 .desc = "Unaligned accesses architecturally executed"
Packit 577717
	},
Packit 577717
	{.name = "PC_BRANCH_MIS_PRED",
Packit 577717
	 .code = 0x10,
Packit 577717
	 .desc = "Branches mispredicted or not predicted"
Packit 577717
	},
Packit 577717
	{.name = "CLOCK_CYCLES",  /* this isn't in the Cortex-A8 tech doc */
Packit 577717
	 .code = 0x11,            /* but is in linux kernel */
Packit 577717
	 .desc = "Clock cycles"
Packit 577717
	},
Packit 577717
	{.name = "PC_BRANCH_MIS_USED",
Packit 577717
	 .code = 0x12,
Packit 577717
	 .desc = "Branches that could have been predicted"
Packit 577717
	},
Packit 577717
	{.name = "WRITE_BUFFER_FULL",
Packit 577717
	 .code = 0x40,
Packit 577717
	 .desc = "Cycles Write buffer full"
Packit 577717
	},  
Packit 577717
	{.name = "L2_STORE_MERGED",
Packit 577717
	 .code = 0x41,
Packit 577717
	 .desc = "Stores merged in L2"
Packit 577717
	},
Packit 577717
	{.name = "L2_STORE_BUFF",
Packit 577717
	 .code = 0x42,
Packit 577717
	 .desc = "Bufferable store transactions to L2"
Packit 577717
	},
Packit 577717
	{.name = "L2_ACCESS",
Packit 577717
	 .code = 0x43,
Packit 577717
	 .desc = "Accesses to L2 cache"
Packit 577717
	},
Packit 577717
	{.name = "L2_CACHE_MISS",
Packit 577717
	 .code = 0x44,
Packit 577717
	 .desc = "L2 cache misses"
Packit 577717
	},
Packit 577717
	{.name = "AXI_READ_CYCLES",
Packit 577717
	 .code = 0x45,
Packit 577717
	 .desc = "Cycles with active AXI read channel transactions"
Packit 577717
	},
Packit 577717
	{.name = "AXI_WRITE_CYCLES",
Packit 577717
	 .code = 0x46,
Packit 577717
	 .desc = "Cycles with Active AXI write channel transactions"
Packit 577717
	},
Packit 577717
	{.name = "MEMORY_REPLAY",
Packit 577717
	 .code = 0x47,
Packit 577717
	 .desc = "Memory replay events"
Packit 577717
	},
Packit 577717
	{.name = "UNALIGNED_ACCESS_REPLAY",
Packit 577717
	 .code = 0x48,
Packit 577717
	 .desc = "Unaligned accesses causing replays"
Packit 577717
	},
Packit 577717
	{.name = "L1_DATA_MISS",
Packit 577717
	 .code = 0x49,
Packit 577717
	 .desc = "L1 data misses due to hashing algorithm"
Packit 577717
	},
Packit 577717
	{.name = "L1_INST_MISS",
Packit 577717
	 .code = 0x4a,
Packit 577717
	 .desc = "L1 instruction misses due to hashing algorithm"
Packit 577717
	},
Packit 577717
	{.name = "L1_DATA_COLORING",
Packit 577717
	 .code = 0x4b,
Packit 577717
	 .desc = "L1 data access where page color alias occurs"
Packit 577717
	},
Packit 577717
	{.name = "L1_NEON_DATA",
Packit 577717
	 .code = 0x4c,
Packit 577717
	 .desc = "NEON accesses that hit in L1 cache"
Packit 577717
	},
Packit 577717
	{.name = "L1_NEON_CACH_DATA",
Packit 577717
	 .code = 0x4d,
Packit 577717
	 .desc = "NEON cache accesses for L1 cache"
Packit 577717
	},
Packit 577717
	{.name = "L2_NEON",
Packit 577717
	 .code = 0x4e,
Packit 577717
	 .desc = "L2 accesses caused by NEON"
Packit 577717
	},
Packit 577717
	{.name = "L2_NEON_HIT",
Packit 577717
	 .code = 0x4f,
Packit 577717
	 .desc = "L2 hits caused by NEON"
Packit 577717
	},
Packit 577717
	{.name = "L1_INST",
Packit 577717
	 .code = 0x50,
Packit 577717
	 .desc = "L1 instruction cache accesses"
Packit 577717
	},
Packit 577717
	{.name = "PC_RETURN_MIS_PRED",
Packit 577717
	 .code = 0x51,
Packit 577717
	 .desc = "Return stack mispredictions"
Packit 577717
	},  
Packit 577717
	{.name = "PC_BRANCH_FAILED",
Packit 577717
	 .code = 0x52,
Packit 577717
	 .desc = "Branch prediction failures"
Packit 577717
	},
Packit 577717
	{.name = "PC_BRANCH_TAKEN",
Packit 577717
	 .code = 0x53,
Packit 577717
	 .desc = "Branches predicted taken"
Packit 577717
	},
Packit 577717
	{.name = "PC_BRANCH_EXECUTED",
Packit 577717
	 .code = 0x54,
Packit 577717
	 .desc = "Taken branches executed"
Packit 577717
	},  
Packit 577717
	{.name = "OP_EXECUTED",
Packit 577717
	 .code = 0x55,
Packit 577717
	 .desc = "Operations executed (includes sub-ops in multi-cycle instructions)"
Packit 577717
	},
Packit 577717
	{.name = "CYCLES_INST_STALL",
Packit 577717
	 .code = 0x56,
Packit 577717
	 .desc = "Cycles no instruction is available for issue"
Packit 577717
	},
Packit 577717
	{.name = "CYCLES_INST",
Packit 577717
	 .code = 0x57,
Packit 577717
	 .desc = "Number of instructions issued in cycle"
Packit 577717
	},
Packit 577717
	{.name = "CYCLES_NEON_DATA_STALL",
Packit 577717
	 .code = 0x58,
Packit 577717
	 .desc = "Cycles stalled waiting on NEON MRC data"
Packit 577717
	},  
Packit 577717
	{.name = "CYCLES_NEON_INST_STALL",
Packit 577717
	 .code = 0x59,
Packit 577717
	 .desc = "Cycles stalled due to full NEON queues"
Packit 577717
	},
Packit 577717
	{.name = "NEON_CYCLES",
Packit 577717
	 .code = 0x5a,
Packit 577717
	 .desc = "Cycles NEON and integer processors both not idle"
Packit 577717
	},  
Packit 577717
	{.name = "PMU0_EVENTS",
Packit 577717
	 .code = 0x70,
Packit 577717
	 .desc = "External PMUEXTIN[0] event"
Packit 577717
	},     
Packit 577717
	{.name = "PMU1_EVENTS",
Packit 577717
	 .code = 0x71,
Packit 577717
	 .desc = "External PMUEXTIN[1] event"
Packit 577717
	},        
Packit 577717
	{.name = "PMU_EVENTS",
Packit 577717
	 .code = 0x72,
Packit 577717
	 .desc = "External PMUEXTIN[0] or PMUEXTIN[1] event"
Packit 577717
	},              
Packit 577717
	{.name = "CPU_CYCLES",
Packit 577717
	 .code = 0xff,
Packit 577717
	 .desc = "CPU cycles"
Packit 577717
	},
Packit 577717
};
Packit 577717
Packit 577717
#define ARM_CORTEX_A8_EVENT_COUNT	(sizeof(arm_cortex_a8_pe)/sizeof(arm_entry_t))