|  | /* | 
|  | * Copyright (c) 2011 Google, Inc | 
|  | * Contributed by Stephane Eranian <eranian@gmail.com> | 
|  | * | 
|  | * Regenerated from previous version by: | 
|  | * | 
|  | * Copyright (c) 2006, 2007 Advanced Micro Devices, Inc. | 
|  | * Contributed by Ray Bryant <raybry@mpdtxmail.amd.com> | 
|  | * Contributed by Robert Richter <robert.richter@amd.com> | 
|  | * Modified for K7 by Vince Weaver <vince _at_ csl.cornell.edu> | 
|  | * | 
|  | * Permission is hereby granted, free of charge, to any person obtaining a copy | 
|  | * of this software and associated documentation files (the "Software"), to deal | 
|  | * in the Software without restriction, including without limitation the rights | 
|  | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | 
|  | * of the Software, and to permit persons to whom the Software is furnished to do so, | 
|  | * subject to the following conditions: | 
|  | * | 
|  | * The above copyright notice and this permission notice shall be included in all | 
|  | * copies or substantial portions of the Software. | 
|  | * | 
|  | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, | 
|  | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A | 
|  | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | 
|  | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF | 
|  | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE | 
|  | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
|  | * | 
|  | * This file is part of libpfm, a performance monitoring support library for | 
|  | * applications on Linux. | 
|  | * | 
|  | * This file has been automatically generated. | 
|  | * | 
|  | * PMU: amd64_k7 (AMD64 K7) | 
|  | */ | 
|  |  | 
|  | /* | 
|  | * Definitions taken from "AMD Athlon Processor x86 Code Optimization Guide" | 
|  | * Table 11 February 2002 | 
|  | */ | 
|  |  | 
|  | static const amd64_umask_t amd64_k7_data_cache_refills[]={ | 
|  | { .uname  = "L2_INVALID", | 
|  | .udesc  = "Invalid line from L2", | 
|  | .ucode = 0x1, | 
|  | }, | 
|  | { .uname  = "L2_SHARED", | 
|  | .udesc  = "Shared-state line from L2", | 
|  | .ucode = 0x2, | 
|  | }, | 
|  | { .uname  = "L2_EXCLUSIVE", | 
|  | .udesc  = "Exclusive-state line from L2", | 
|  | .ucode = 0x4, | 
|  | }, | 
|  | { .uname  = "L2_OWNED", | 
|  | .udesc  = "Owned-state line from L2", | 
|  | .ucode = 0x8, | 
|  | }, | 
|  | { .uname  = "L2_MODIFIED", | 
|  | .udesc  = "Modified-state line from L2", | 
|  | .ucode = 0x10, | 
|  | }, | 
|  | { .uname  = "ALL", | 
|  | .udesc  = "Shared, Exclusive, Owned, Modified State Refills", | 
|  | .ucode = 0x1f, | 
|  | .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL, | 
|  | }, | 
|  | }; | 
|  |  | 
|  | static const amd64_umask_t amd64_k7_data_cache_refills_from_system[]={ | 
|  | { .uname  = "INVALID", | 
|  | .udesc  = "Invalid", | 
|  | .ucode = 0x1, | 
|  | }, | 
|  | { .uname  = "SHARED", | 
|  | .udesc  = "Shared", | 
|  | .ucode = 0x2, | 
|  | }, | 
|  | { .uname  = "EXCLUSIVE", | 
|  | .udesc  = "Exclusive", | 
|  | .ucode = 0x4, | 
|  | }, | 
|  | { .uname  = "OWNED", | 
|  | .udesc  = "Owned", | 
|  | .ucode = 0x8, | 
|  | }, | 
|  | { .uname  = "MODIFIED", | 
|  | .udesc  = "Modified", | 
|  | .ucode = 0x10, | 
|  | }, | 
|  | { .uname  = "ALL", | 
|  | .udesc  = "Invalid, Shared, Exclusive, Owned, Modified", | 
|  | .ucode = 0x1f, | 
|  | .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL, | 
|  | }, | 
|  | }; | 
|  |  | 
|  | static const amd64_entry_t amd64_k7_pe[]={ | 
|  | { .name    = "DATA_CACHE_ACCESSES", | 
|  | .desc    = "Data Cache Accesses", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x40, | 
|  | }, | 
|  | { .name    = "DATA_CACHE_MISSES", | 
|  | .desc    = "Data Cache Misses", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x41, | 
|  | }, | 
|  | { .name    = "DATA_CACHE_REFILLS", | 
|  | .desc    = "Data Cache Refills from L2", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x42, | 
|  | .numasks = LIBPFM_ARRAY_SIZE(amd64_k7_data_cache_refills), | 
|  | .ngrp    = 1, | 
|  | .umasks  = amd64_k7_data_cache_refills, | 
|  | }, | 
|  | { .name    = "DATA_CACHE_REFILLS_FROM_SYSTEM", | 
|  | .desc    = "Data Cache Refills from System", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x43, | 
|  | .numasks = LIBPFM_ARRAY_SIZE(amd64_k7_data_cache_refills_from_system), | 
|  | .ngrp    = 1, | 
|  | .umasks  = amd64_k7_data_cache_refills_from_system, | 
|  | }, | 
|  | { .name    = "DATA_CACHE_LINES_EVICTED", | 
|  | .desc    = "Data Cache Lines Evicted", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x44, | 
|  | .numasks = LIBPFM_ARRAY_SIZE(amd64_k7_data_cache_refills_from_system), | 
|  | .ngrp    = 1, | 
|  | .umasks  = amd64_k7_data_cache_refills_from_system, /* identical to actual umasks list for this event */ | 
|  | }, | 
|  | { .name    = "L1_DTLB_MISS_AND_L2_DTLB_HIT", | 
|  | .desc    = "L1 DTLB Miss and L2 DTLB Hit", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x45, | 
|  | }, | 
|  | { .name    = "L1_DTLB_AND_L2_DTLB_MISS", | 
|  | .desc    = "L1 DTLB and L2 DTLB Miss", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x46, | 
|  | }, | 
|  | { .name    = "MISALIGNED_ACCESSES", | 
|  | .desc    = "Misaligned Accesses", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x47, | 
|  | }, | 
|  | { .name    = "CPU_CLK_UNHALTED", | 
|  | .desc    = "CPU Clocks not Halted", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x76, | 
|  | }, | 
|  | { .name    = "INSTRUCTION_CACHE_FETCHES", | 
|  | .desc    = "Instruction Cache Fetches", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x80, | 
|  | }, | 
|  | { .name    = "INSTRUCTION_CACHE_MISSES", | 
|  | .desc    = "Instruction Cache Misses", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x81, | 
|  | }, | 
|  | { .name    = "L1_ITLB_MISS_AND_L2_ITLB_HIT", | 
|  | .desc    = "L1 ITLB Miss and L2 ITLB Hit", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x84, | 
|  | }, | 
|  | { .name    = "L1_ITLB_MISS_AND_L2_ITLB_MISS", | 
|  | .desc    = "L1 ITLB Miss and L2 ITLB Miss", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0x85, | 
|  | }, | 
|  | { .name    = "RETIRED_INSTRUCTIONS", | 
|  | .desc    = "Retired Instructions (includes exceptions, interrupts, resyncs)", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc0, | 
|  | }, | 
|  | { .name    = "RETIRED_UOPS", | 
|  | .desc    = "Retired uops", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc1, | 
|  | }, | 
|  | { .name    = "RETIRED_BRANCH_INSTRUCTIONS", | 
|  | .desc    = "Retired Branch Instructions", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc2, | 
|  | }, | 
|  | { .name    = "RETIRED_MISPREDICTED_BRANCH_INSTRUCTIONS", | 
|  | .desc    = "Retired Mispredicted Branch Instructions", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc3, | 
|  | }, | 
|  | { .name    = "RETIRED_TAKEN_BRANCH_INSTRUCTIONS", | 
|  | .desc    = "Retired Taken Branch Instructions", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc4, | 
|  | }, | 
|  | { .name    = "RETIRED_TAKEN_BRANCH_INSTRUCTIONS_MISPREDICTED", | 
|  | .desc    = "Retired Taken Branch Instructions Mispredicted", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc5, | 
|  | }, | 
|  | { .name    = "RETIRED_FAR_CONTROL_TRANSFERS", | 
|  | .desc    = "Retired Far Control Transfers", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc6, | 
|  | }, | 
|  | { .name    = "RETIRED_BRANCH_RESYNCS", | 
|  | .desc    = "Retired Branch Resyncs (only non-control transfer branches)", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xc7, | 
|  | }, | 
|  | { .name    = "INTERRUPTS_MASKED_CYCLES", | 
|  | .desc    = "Interrupts-Masked Cycles", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xcd, | 
|  | }, | 
|  | { .name    = "INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING", | 
|  | .desc    = "Interrupts-Masked Cycles with Interrupt Pending", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xce, | 
|  | }, | 
|  | { .name    = "INTERRUPTS_TAKEN", | 
|  | .desc    = "Interrupts Taken", | 
|  | .modmsk  = AMD64_BASIC_ATTRS, | 
|  | .code    = 0xcf, | 
|  | }, | 
|  | }; |