PAPI 7.1.0.0
Loading...
Searching...
No Matches
pfmlib_itanium2.h
Go to the documentation of this file.
1/*
2 * Itanium 2 PMU specific types and definitions
3 *
4 * Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P.
5 * Contributed by Stephane Eranian <eranian@hpl.hp.com>
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
11 * of the Software, and to permit persons to whom the Software is furnished to do so,
12 * subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
18 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
19 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
21 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
22 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef __PFMLIB_ITANIUM2_H__
26#define __PFMLIB_ITANIUM2_H__
27
28#include <perfmon/pfmlib.h>
29#include <endian.h>
30
31#if BYTE_ORDER != LITTLE_ENDIAN
32#error "this file only supports little endian environments"
33#endif
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38#define PMU_ITA2_FIRST_COUNTER 4 /* index of first PMC/PMD counter */
39#define PMU_ITA2_NUM_COUNTERS 4 /* total numbers of PMC/PMD pairs used as counting monitors */
40#define PMU_ITA2_NUM_PMCS 16 /* total number of PMCS defined */
41#define PMU_ITA2_NUM_PMDS 18 /* total number of PMDS defined */
42#define PMU_ITA2_NUM_BTB 8 /* total number of PMDS in BTB */
43#define PMU_ITA2_COUNTER_WIDTH 47 /* hardware counter bit width */
44
45
46/*
47 * This structure provides a detailed way to setup a PMC register.
48 * Once value is loaded, it must be copied (via pmu_reg) to the
49 * perfmon_req_t and passed to the kernel via perfmonctl().
50 */
51typedef union {
52 unsigned long pmc_val; /* complete register value */
53
54 /* This is the Itanium2-specific PMC layout for counter config */
55 struct {
56 unsigned long pmc_plm:4; /* privilege level mask */
57 unsigned long pmc_ev:1; /* external visibility */
58 unsigned long pmc_oi:1; /* overflow interrupt */
59 unsigned long pmc_pm:1; /* privileged monitor */
60 unsigned long pmc_ig1:1; /* reserved */
61 unsigned long pmc_es:8; /* event select */
62 unsigned long pmc_umask:4; /* unit mask */
63 unsigned long pmc_thres:3; /* threshold */
64 unsigned long pmc_enable:1; /* pmc4 only: power enable bit */
65 unsigned long pmc_ism:2; /* instruction set mask */
66 unsigned long pmc_ig2:38; /* reserved */
67 } pmc_ita2_counter_reg;
68
69 /* opcode matchers */
70 struct {
71 unsigned long opcm_ig_ad:1; /* ignore instruction address range checking */
72 unsigned long opcm_inv:1; /* invert range check */
73 unsigned long opcm_bit2:1; /* must be 1 */
74 unsigned long opcm_mask:27; /* mask encoding bits {41:27}{12:0} */
75 unsigned long opcm_ig1:3; /* reserved */
76 unsigned long opcm_match:27; /* match encoding bits {41:27}{12:0} */
77 unsigned long opcm_b:1; /* B-syllable */
78 unsigned long opcm_f:1; /* F-syllable */
79 unsigned long opcm_i:1; /* I-syllable */
80 unsigned long opcm_m:1; /* M-syllable */
81 } pmc8_9_ita2_reg;
82
83 /*
84 * instruction event address register configuration
85 *
86 * The register has two layout depending on the value of the ct field.
87 * In cache mode(ct=1x):
88 * - ct is 1 bit, umask is 8 bits
89 * In TLB mode (ct=00):
90 * - ct is 2 bits, umask is 7 bits
91 * ct=11 <=> cache mode and use a latency with eighth bit set
92 * ct=01 => nothing monitored
93 *
94 * The ct=01 value is the only reason why we cannot fix the layout
95 * to ct 1 bit and umask 8 bits. Even though in TLB mode, only 6 bits
96 * are effectively used for the umask, if the user inadvertently use
97 * a umask with the most significant bit set, it would be equivalent
98 * to no monitoring.
99 */
100 struct {
101 unsigned long iear_plm:4; /* privilege level mask */
102 unsigned long iear_pm:1; /* privileged monitor */
103 unsigned long iear_umask:8; /* event unit mask: 7 bits in TLB mode, 8 bits in cache mode */
104 unsigned long iear_ct:1; /* cache tlb bit13: 0 for TLB mode, 1 for cache mode */
105 unsigned long iear_ism:2; /* instruction set */
106 unsigned long iear_ig4:48; /* reserved */
107 } pmc10_ita2_cache_reg;
108
109 struct {
110 unsigned long iear_plm:4; /* privilege level mask */
111 unsigned long iear_pm:1; /* privileged monitor */
112 unsigned long iear_umask:7; /* event unit mask: 7 bits in TLB mode, 8 bits in cache mode */
113 unsigned long iear_ct:2; /* cache tlb bit13: 0 for TLB mode, 1 for cache mode */
114 unsigned long iear_ism:2; /* instruction set */
115 unsigned long iear_ig4:48; /* reserved */
116 } pmc10_ita2_tlb_reg;
117
118 /* data event address register configuration */
119 struct {
120 unsigned long dear_plm:4; /* privilege level mask */
121 unsigned long dear_ig1:2; /* reserved */
122 unsigned long dear_pm:1; /* privileged monitor */
123 unsigned long dear_mode:2; /* mode */
124 unsigned long dear_ig2:7; /* reserved */
125 unsigned long dear_umask:4; /* unit mask */
126 unsigned long dear_ig3:4; /* reserved */
127 unsigned long dear_ism:2; /* instruction set */
128 unsigned long dear_ig4:38; /* reserved */
129 } pmc11_ita2_reg;
130
131 /* branch trace buffer configuration register */
132 struct {
133 unsigned long btbc_plm:4; /* privilege level */
134 unsigned long btbc_ig1:2;
135 unsigned long btbc_pm:1; /* privileged monitor */
136 unsigned long btbc_ds:1; /* data selector */
137 unsigned long btbc_tm:2; /* taken mask */
138 unsigned long btbc_ptm:2; /* predicted taken address mask */
139 unsigned long btbc_ppm:2; /* predicted predicate mask */
140 unsigned long btbc_brt:2; /* branch type mask */
141 unsigned long btbc_ig2:48;
142 } pmc12_ita2_reg;
143
144 /* data address range configuration register */
145 struct {
146 unsigned long darc_ig1:3;
147 unsigned long darc_cfg_dbrp0:2; /* constraint on dbr0 */
148 unsigned long darc_ig2:6;
149 unsigned long darc_cfg_dbrp1:2; /* constraint on dbr1 */
150 unsigned long darc_ig3:6;
151 unsigned long darc_cfg_dbrp2:2; /* constraint on dbr2 */
152 unsigned long darc_ig4:6;
153 unsigned long darc_cfg_dbrp3:2; /* constraint on dbr3 */
154 unsigned long darc_ig5:16;
155 unsigned long darc_ena_dbrp0:1; /* enable constraint dbr0 */
156 unsigned long darc_ena_dbrp1:1; /* enable constraint dbr1 */
157 unsigned long darc_ena_dbrp2:1; /* enable constraint dbr2 */
158 unsigned long darc_ena_dbrp3:1; /* enable constraint dbr3 */
159 unsigned long darc_ig6:15;
160 } pmc13_ita2_reg;
161
162 /* instruction address range configuration register */
163 struct {
164 unsigned long iarc_ig1:1;
165 unsigned long iarc_ibrp0:1; /* constrained by ibr0 */
166 unsigned long iarc_ig2:2;
167 unsigned long iarc_ibrp1:1; /* constrained by ibr1 */
168 unsigned long iarc_ig3:2;
169 unsigned long iarc_ibrp2:1; /* constrained by ibr2 */
170 unsigned long iarc_ig4:2;
171 unsigned long iarc_ibrp3:1; /* constrained by ibr3 */
172 unsigned long iarc_ig5:2;
173 unsigned long iarc_fine:1; /* fine mode */
174 unsigned long iarc_ig6:50;
175 } pmc14_ita2_reg;
176
177 /* opcode matcher configuration register */
178 struct {
179 unsigned long opcmc_ibrp0_pmc8:1;
180 unsigned long opcmc_ibrp1_pmc9:1;
181 unsigned long opcmc_ibrp2_pmc8:1;
182 unsigned long opcmc_ibrp3_pmc9:1;
183 unsigned long opcmc_ig1:60;
184 } pmc15_ita2_reg;
186
187typedef union {
188 unsigned long pmd_val; /* counter value */
189
190 /* counting pmd register */
191 struct {
192 unsigned long pmd_count:47; /* 47-bit hardware counter */
193 unsigned long pmd_sxt47:17; /* sign extension of bit 46 */
194 } pmd_ita2_counter_reg;
195
196 /* instruction event address register: data address register */
197 struct {
198 unsigned long iear_stat:2; /* status bit */
199 unsigned long iear_ig1:3;
200 unsigned long iear_iaddr:59; /* instruction cache line address {60:51} sxt {50}*/
201 } pmd0_ita2_reg;
202
203 /* instruction event address register: data address register */
204 struct {
205 unsigned long iear_latency:12; /* latency */
206 unsigned long iear_overflow:1; /* latency overflow */
207 unsigned long iear_ig1:51; /* reserved */
208 } pmd1_ita2_reg;
209
210 /* data event address register: data address register */
211 struct {
212 unsigned long dear_daddr; /* data address */
213 } pmd2_ita2_reg;
214
215 /* data event address register: data address register */
216 struct {
217 unsigned long dear_latency:13; /* latency */
218 unsigned long dear_overflow:1; /* overflow */
219 unsigned long dear_stat:2; /* status */
220 unsigned long dear_ig1:48; /* ignored */
221 } pmd3_ita2_reg;
222
223 /* branch trace buffer data register when pmc12.ds == 0 */
224 struct {
225 unsigned long btb_b:1; /* branch bit */
226 unsigned long btb_mp:1; /* mispredict bit */
227 unsigned long btb_slot:2; /* which slot, 3=not taken branch */
228 unsigned long btb_addr:60; /* bundle address(b=1), target address(b=0) */
229 } pmd8_15_ita2_reg;
230
231 /* branch trace buffer data register when pmc12.ds == 1 */
232 struct {
233 unsigned long btb_b:1; /* branch bit */
234 unsigned long btb_mp:1; /* mispredict bit */
235 unsigned long btb_slot:2; /* which slot, 3=not taken branch */
236 unsigned long btb_loaddr:37; /* b=1, bundle address, b=0 target address */
237 unsigned long btb_pred:20; /* low 20bits of L1IBR */
238 unsigned long btb_hiaddr:3; /* hi 3bits of bundle address(b=1) or target address (b=0)*/
239 } pmd8_15_ds_ita2_reg;
240
241 /* branch trace buffer index register */
242 struct {
243 unsigned long btbi_bbi:3; /* next entry index */
244 unsigned long btbi_full:1; /* full bit (sticky) */
245 unsigned long btbi_pmd8ext_b1:1; /* pmd8 ext */
246 unsigned long btbi_pmd8ext_bruflush:1; /* pmd8 ext */
247 unsigned long btbi_pmd8ext_ig:2; /* pmd8 ext */
248 unsigned long btbi_pmd9ext_b1:1; /* pmd9 ext */
249 unsigned long btbi_pmd9ext_bruflush:1; /* pmd9 ext */
250 unsigned long btbi_pmd9ext_ig:2; /* pmd9 ext */
251 unsigned long btbi_pmd10ext_b1:1; /* pmd10 ext */
252 unsigned long btbi_pmd10ext_bruflush:1; /* pmd10 ext */
253 unsigned long btbi_pmd10ext_ig:2; /* pmd10 ext */
254 unsigned long btbi_pmd11ext_b1:1; /* pmd11 ext */
255 unsigned long btbi_pmd11ext_bruflush:1; /* pmd11 ext */
256 unsigned long btbi_pmd11ext_ig:2; /* pmd11 ext */
257 unsigned long btbi_pmd12ext_b1:1; /* pmd12 ext */
258 unsigned long btbi_pmd12ext_bruflush:1; /* pmd12 ext */
259 unsigned long btbi_pmd12ext_ig:2; /* pmd12 ext */
260 unsigned long btbi_pmd13ext_b1:1; /* pmd13 ext */
261 unsigned long btbi_pmd13ext_bruflush:1; /* pmd13 ext */
262 unsigned long btbi_pmd13ext_ig:2; /* pmd13 ext */
263 unsigned long btbi_pmd14ext_b1:1; /* pmd14 ext */
264 unsigned long btbi_pmd14ext_bruflush:1; /* pmd14 ext */
265 unsigned long btbi_pmd14ext_ig:2; /* pmd14 ext */
266 unsigned long btbi_pmd15ext_b1:1; /* pmd15 ext */
267 unsigned long btbi_pmd15ext_bruflush:1; /* pmd15 ext */
268 unsigned long btbi_pmd15ext_ig:2; /* pmd15 ext */
269 unsigned long btbi_ignored:28;
270 } pmd16_ita2_reg;
271
272 /* data event address register: data address register */
273 struct {
274 unsigned long dear_slot:2; /* slot */
275 unsigned long dear_bn:1; /* bundle bit (if 1 add 16 to address) */
276 unsigned long dear_vl:1; /* valid */
277 unsigned long dear_iaddr:60; /* instruction address (2-bundle window)*/
278 } pmd17_ita2_reg;
280
281/*
282 * type definition for Itanium 2 instruction set support
283 */
284typedef enum {
285 PFMLIB_ITA2_ISM_BOTH=0, /* IA-32 and IA-64 (default) */
286 PFMLIB_ITA2_ISM_IA32=1, /* IA-32 only */
287 PFMLIB_ITA2_ISM_IA64=2 /* IA-64 only */
289
290typedef struct {
291 unsigned int flags; /* counter specific flags */
292 unsigned int thres; /* per event threshold */
293 pfmlib_ita2_ism_t ism; /* per event instruction set */
295
296/*
297 * counter specific flags
298 */
299#define PFMLIB_ITA2_FL_EVT_NO_QUALCHECK 0x1 /* don't check qualifier constraints */
300
301typedef struct {
302 unsigned char opcm_used; /* set to 1 if this opcode matcher is used */
303 unsigned long pmc_val; /* full opcode mask (41bits) */
305
306/*
307 *
308 * The BTB can be configured via 4 different methods:
309 *
310 * - BRANCH_EVENT is in the event list, pfp_ita2_btb.btb_used == 0:
311 * The BTB will be configured (PMC12) to record all branches AND a counting
312 * monitor will be setup to count BRANCH_EVENT.
313 *
314 * - BRANCH_EVENT is in the event list, pfp_ita2_btb.btb_used == 1:
315 * The BTB will be configured (PMC12) according to information in pfp_ita2_btb AND
316 * a counter will be setup to count BRANCH_EVENT.
317 *
318 * - BRANCH_EVENT is NOT in the event list, pfp_ita2_btb.btb_used == 0:
319 * Nothing is programmed
320 *
321 * - BRANCH_EVENT is NOT in the event list, pfp_ita2_btb.btb_used == 1:
322 * The BTB will be configured (PMC12) according to information in pfp_ita2_btb.
323 * This is the free running BTB mode.
324 */
325typedef struct {
326 unsigned char btb_used; /* set to 1 if the BTB is used */
327
328 unsigned char btb_ds; /* data selector */
329 unsigned char btb_tm; /* taken mask */
330 unsigned char btb_ptm; /* predicted target mask */
331 unsigned char btb_ppm; /* predicted predicate mask */
332 unsigned char btb_brt; /* branch type mask */
333 unsigned int btb_plm; /* BTB privilege level mask */
335
336/*
337 * There are four ways to configure EAR:
338 *
339 * - an EAR event is in the event list AND pfp_ita2_?ear.ear_used = 0:
340 * The EAR will be programmed (PMC10 or PMC11) based on the information encoded in the
341 * event (umask, cache, tlb,alat). A counting monitor will be programmed to
342 * count DATA_EAR_EVENTS or L1I_EAR_EVENTS depending on the type of EAR.
343 *
344 * - an EAR event is in the event list AND pfp_ita2_?ear.ear_used = 1:
345 * The EAR will be programmed (PMC10 or PMC11) according to the information in the
346 * pfp_ita2_?ear structure because it contains more detailed information
347 * (such as priv level and instruction set). A counting monitor will be programmed
348 * to count DATA_EAR_EVENTS or L1I_EAR_EVENTS depending on the type of EAR.
349 *
350 * - no EAR event is in the event list AND pfp_ita2_?ear.ear_used = 0:
351 * Nothing is programmed.
352 *
353 * - no EAR event is in the event list AND pfp_ita2_?ear.ear_used = 1:
354 * The EAR will be programmed (PMC10 or PMC11) according to the information in the
355 * pfp_ita2_?ear structure. This is the free running mode for EAR
356 */
357
358typedef enum {
359 PFMLIB_ITA2_EAR_CACHE_MODE= 0, /* Cache mode : I-EAR and D-EAR */
360 PFMLIB_ITA2_EAR_TLB_MODE = 1, /* TLB mode : I-EAR and D-EAR */
361 PFMLIB_ITA2_EAR_ALAT_MODE = 2 /* ALAT mode : D-EAR only */
363
364typedef struct {
365 unsigned char ear_used; /* when set will force definition of PMC[10] */
366
368 pfmlib_ita2_ism_t ear_ism; /* instruction set */
369 unsigned int ear_plm; /* IEAR privilege level mask */
370 unsigned long ear_umask; /* umask value for PMC10 */
372
373/*
374 * describes one range. rr_plm is ignored for data ranges
375 * a range is interpreted as unused (not defined) when rr_start = rr_end = 0.
376 * if rr_plm is not set it will use the default settings set in the generic
377 * library param structure.
378 */
379typedef struct {
380 unsigned int rr_plm; /* privilege level (ignored for data ranges) */
381 unsigned long rr_start; /* start address */
382 unsigned long rr_end; /* end address (not included) */
384
385typedef struct {
386 unsigned long rr_soff; /* start offset from actual start */
387 unsigned long rr_eoff; /* end offset from actual end */
389
390
391/*
392 * rr_used must be set to true for the library to configure the debug registers.
393 * rr_inv only applies when the rr_limits table contains ONLY 1 range.
394 *
395 * If using less than 4 intervals, must mark the end with entry: rr_start = rr_end = 0
396 */
397typedef struct {
398 unsigned int rr_flags; /* set of flags for all ranges */
399 pfmlib_ita2_input_rr_desc_t rr_limits[4]; /* at most 4 distinct intervals */
400 unsigned char rr_used; /* set if address range restriction is used */
402
403typedef struct {
404 unsigned int rr_nbr_used; /* how many registers were used */
405 pfmlib_ita2_output_rr_desc_t rr_infos[4]; /* at most 4 distinct intervals */
406 pfmlib_reg_t rr_br[8]; /* debug reg to configure */
408
409
410#define PFMLIB_ITA2_RR_INV 0x1 /* inverse instruction ranges (iranges only) */
411#define PFMLIB_ITA2_RR_NO_FINE_MODE 0x2 /* force non fine mode for instruction ranges */
412
413/*
414 * Itanium 2 specific parameters for the library
415 */
416typedef struct {
417 pfmlib_ita2_counter_t pfp_ita2_counters[PMU_ITA2_NUM_COUNTERS]; /* extended counter features */
418
419 unsigned long pfp_ita2_flags; /* Itanium2 specific flags */
420
421 pfmlib_ita2_opcm_t pfp_ita2_pmc8; /* PMC8 (opcode matcher) configuration */
422 pfmlib_ita2_opcm_t pfp_ita2_pmc9; /* PMC9 (opcode matcher) configuration */
423 pfmlib_ita2_ear_t pfp_ita2_iear; /* IEAR configuration */
424 pfmlib_ita2_ear_t pfp_ita2_dear; /* DEAR configuration */
425 pfmlib_ita2_btb_t pfp_ita2_btb; /* BTB configuration */
426 pfmlib_ita2_input_rr_t pfp_ita2_drange; /* data range restrictions */
427 pfmlib_ita2_input_rr_t pfp_ita2_irange; /* code range restrictions */
428 unsigned long reserved[1]; /* for future use */
430
431typedef struct {
432 pfmlib_ita2_output_rr_t pfp_ita2_drange; /* data range restrictions */
433 pfmlib_ita2_output_rr_t pfp_ita2_irange; /* code range restrictions */
434 unsigned long reserved[6]; /* for future use */
436
437
438extern int pfm_ita2_is_ear(unsigned int i);
439extern int pfm_ita2_is_dear(unsigned int i);
440extern int pfm_ita2_is_dear_tlb(unsigned int i);
441extern int pfm_ita2_is_dear_cache(unsigned int i);
442extern int pfm_ita2_is_dear_alat(unsigned int i);
443extern int pfm_ita2_is_iear(unsigned int i);
444extern int pfm_ita2_is_iear_tlb(unsigned int i);
445extern int pfm_ita2_is_iear_cache(unsigned int i);
446extern int pfm_ita2_is_btb(unsigned int i);
447extern int pfm_ita2_support_opcm(unsigned int i);
448extern int pfm_ita2_support_iarr(unsigned int i);
449extern int pfm_ita2_support_darr(unsigned int i);
450extern int pfm_ita2_get_ear_mode(unsigned int i, pfmlib_ita2_ear_mode_t *m);
452
453extern int pfm_ita2_get_event_maxincr(unsigned int i, unsigned int *maxincr);
454extern int pfm_ita2_get_event_umask(unsigned int i, unsigned long *umask);
455extern int pfm_ita2_get_event_group(unsigned int i, int *grp);
456extern int pfm_ita2_get_event_set(unsigned int i, int *set);
457
458/*
459 * values of group (grp) returned by pfm_ita2_get_event_group()
460 */
461#define PFMLIB_ITA2_EVT_NO_GRP 0 /* event does not belong to a group */
462#define PFMLIB_ITA2_EVT_L1_CACHE_GRP 1 /* event belongs to L1 Cache group */
463#define PFMLIB_ITA2_EVT_L2_CACHE_GRP 2 /* event belongs to L2 Cache group */
464
465/*
466 * possible values returned in set by pfm_ita2_get_event_set()
467 */
468#define PFMLIB_ITA2_EVT_NO_SET -1 /* event does not belong to a set */
469
470#ifdef __cplusplus /* extern C */
471}
472#endif
473
474#endif /* __PFMLIB_ITANIUM2_H__ */
int i
uint16_t reserved
int pfm_ita2_support_darr(unsigned int i)
int pfm_ita2_support_iarr(unsigned int i)
int pfm_ita2_support_opcm(unsigned int i)
int pfm_ita2_get_event_group(unsigned int i, int *grp)
int pfm_ita2_get_ear_mode(unsigned int i, pfmlib_ita2_ear_mode_t *m)
pfmlib_ita2_ear_mode_t
@ PFMLIB_ITA2_EAR_CACHE_MODE
@ PFMLIB_ITA2_EAR_TLB_MODE
@ PFMLIB_ITA2_EAR_ALAT_MODE
int pfm_ita2_is_ear(unsigned int i)
int pfm_ita2_is_iear(unsigned int i)
int pfm_ita2_get_event_maxincr(unsigned int i, unsigned int *maxincr)
int pfm_ita2_is_dear_tlb(unsigned int i)
int pfm_ita2_is_dear_alat(unsigned int i)
int pfm_ita2_is_iear_tlb(unsigned int i)
int pfm_ita2_get_event_umask(unsigned int i, unsigned long *umask)
#define PMU_ITA2_NUM_COUNTERS
int pfm_ita2_irange_is_fine(pfmlib_output_param_t *outp, pfmlib_ita2_output_param_t *mod_out)
int pfm_ita2_is_iear_cache(unsigned int i)
pfmlib_ita2_ism_t
@ PFMLIB_ITA2_ISM_BOTH
@ PFMLIB_ITA2_ISM_IA32
@ PFMLIB_ITA2_ISM_IA64
int pfm_ita2_is_btb(unsigned int i)
int pfm_ita2_get_event_set(unsigned int i, int *set)
int pfm_ita2_is_dear(unsigned int i)
int pfm_ita2_is_dear_cache(unsigned int i)
unsigned char btb_ds
unsigned char btb_brt
unsigned char btb_ptm
unsigned char btb_used
unsigned char btb_tm
unsigned char btb_ppm
unsigned int btb_plm
pfmlib_ita2_ism_t ism
pfmlib_ita2_ism_t ear_ism
pfmlib_ita2_ear_mode_t ear_mode
unsigned char ear_used
unsigned long ear_umask
unsigned int ear_plm
pfmlib_ita2_input_rr_t pfp_ita2_drange
pfmlib_ita2_input_rr_t pfp_ita2_irange
pfmlib_ita2_opcm_t pfp_ita2_pmc9
pfmlib_ita2_ear_t pfp_ita2_dear
pfmlib_ita2_btb_t pfp_ita2_btb
pfmlib_ita2_opcm_t pfp_ita2_pmc8
pfmlib_ita2_ear_t pfp_ita2_iear
unsigned char opcm_used
unsigned long pmc_val
pfmlib_ita2_output_rr_t pfp_ita2_irange
pfmlib_ita2_output_rr_t pfp_ita2_drange
unsigned long pmc_pm
unsigned long darc_ena_dbrp0
unsigned long darc_ig1
unsigned long opcm_b
unsigned long btbc_pm
unsigned long darc_ig4
unsigned long pmc_val
unsigned long dear_ig3
unsigned long iear_plm
unsigned long pmc_oi
unsigned long pmc_es
unsigned long pmc_ig2
unsigned long opcm_ig_ad
unsigned long iarc_ibrp2
unsigned long iarc_ig2
unsigned long darc_ena_dbrp2
unsigned long opcmc_ibrp0_pmc8
unsigned long iarc_fine
unsigned long opcm_mask
unsigned long btbc_ig1
unsigned long dear_umask
unsigned long pmc_enable
unsigned long pmc_ig1
unsigned long pmc_thres
unsigned long pmc_ev
unsigned long darc_ig3
unsigned long iear_umask
unsigned long dear_ig2
unsigned long darc_ig5
unsigned long iarc_ig4
unsigned long iarc_ig6
unsigned long opcm_inv
unsigned long pmc_umask
unsigned long iear_ism
unsigned long btbc_plm
unsigned long darc_cfg_dbrp2
unsigned long dear_plm
unsigned long opcm_f
unsigned long opcm_bit2
unsigned long darc_ena_dbrp3
unsigned long opcm_match
unsigned long dear_ig4
unsigned long pmc_ism
unsigned long opcmc_ig1
unsigned long darc_ig6
unsigned long iarc_ig5
unsigned long iarc_ig3
unsigned long btbc_brt
unsigned long darc_cfg_dbrp3
unsigned long btbc_ppm
unsigned long darc_cfg_dbrp0
unsigned long darc_cfg_dbrp1
unsigned long darc_ig2
unsigned long opcm_i
unsigned long dear_mode
unsigned long dear_ig1
unsigned long opcm_m
unsigned long btbc_ig2
unsigned long iarc_ibrp0
unsigned long iear_ig4
unsigned long iear_ct
unsigned long opcmc_ibrp2_pmc8
unsigned long btbc_tm
unsigned long dear_pm
unsigned long btbc_ds
unsigned long iarc_ibrp3
unsigned long btbc_ptm
unsigned long pmc_plm
unsigned long dear_ism
unsigned long iarc_ig1
unsigned long opcmc_ibrp1_pmc9
unsigned long opcmc_ibrp3_pmc9
unsigned long iarc_ibrp1
unsigned long darc_ena_dbrp1
unsigned long iear_pm
unsigned long opcm_ig1
unsigned long btbi_pmd8ext_b1
unsigned long btb_b
unsigned long btbi_pmd14ext_bruflush
unsigned long btbi_pmd11ext_ig
unsigned long btbi_pmd12ext_bruflush
unsigned long btbi_pmd11ext_b1
unsigned long btbi_pmd12ext_ig
unsigned long btb_pred
unsigned long dear_overflow
unsigned long btbi_full
unsigned long btbi_pmd9ext_b1
unsigned long btbi_pmd8ext_bruflush
unsigned long pmd_val
unsigned long btb_slot
unsigned long btbi_pmd10ext_bruflush
unsigned long dear_ig1
unsigned long btbi_pmd13ext_b1
unsigned long btbi_pmd9ext_bruflush
unsigned long btbi_pmd9ext_ig
unsigned long btb_addr
unsigned long btbi_pmd8ext_ig
unsigned long dear_daddr
unsigned long btbi_pmd13ext_ig
unsigned long btbi_pmd10ext_b1
unsigned long btb_hiaddr
unsigned long btbi_pmd15ext_bruflush
unsigned long btbi_pmd14ext_b1
unsigned long btbi_pmd15ext_b1
unsigned long iear_overflow
unsigned long dear_stat
unsigned long pmd_sxt47
unsigned long dear_slot
unsigned long btbi_pmd14ext_ig
unsigned long btbi_pmd10ext_ig
unsigned long iear_stat
unsigned long btbi_pmd15ext_ig
unsigned long dear_bn
unsigned long pmd_count
unsigned long iear_iaddr
unsigned long btbi_pmd12ext_b1
unsigned long dear_vl
unsigned long iear_ig1
unsigned long iear_latency
unsigned long dear_latency
unsigned long btbi_pmd11ext_bruflush
unsigned long btbi_pmd13ext_bruflush
unsigned long btb_loaddr
unsigned long btbi_ignored
unsigned long btb_mp
unsigned long btbi_bbi
unsigned long dear_iaddr