Lines Matching defs:event
16 * Bits in event code for POWER5+ (POWER5 GS) and POWER5++ (POWER5 GS DD3)
23 #define PM_BYTE_SH 12 /* Byte number of event bus to use */
27 #define PM_BUSEVENT_MSK 0x80 /* Set if event uses event bus */
104 * 24-27: Byte 0 event source 0x0f00_0000
105 * Encoding as for the event code
108 * 20-23, 16-19, 12-15: Byte 1, 2, 3 event sources
134 static int power5p_get_constraint(u64 event, unsigned long *maskp,
141 pmc = (event >> PM_PMC_SH) & PM_PMC_MSK;
148 if (pmc >= 5 && !(event == 0x500009 || event == 0x600005))
151 if (event & PM_BUSEVENT_MSK) {
152 unit = (event >> PM_UNIT_SH) & PM_UNIT_MSK;
159 byte = (event >> PM_BYTE_SH) & PM_BYTE_MSK;
168 bit = event & 7;
172 value |= (unsigned long)((event >> PM_GRS_SH) & fmask)
189 static int power5p_limited_pmc_event(u64 event)
191 int pmc = (event >> PM_PMC_SH) & PM_PMC_MSK;
196 #define MAX_ALT 3 /* at most 3 alternatives for any event */
216 static int find_alternative(unsigned int event)
221 if (event < event_alternatives[i][0])
224 if (event == event_alternatives[i][j])
238 * Some direct events for decodes of event bus byte 3 have alternative
240 * event code for those that do, or -1 otherwise. This also handles
243 static s64 find_alternative_bdecode(u64 event)
247 pmc = (event >> PM_PMC_SH) & PM_PMC_MSK;
251 pp = event & PM_PMCSEL_MSK;
254 return (event & ~(PM_PMC_MSKS | PM_PMCSEL_MSK)) |
262 return event + (2 << PM_PMC_SH) + (0x2e - 0x0d);
264 return event - (2 << PM_PMC_SH) - (0x2e - 0x0d);
266 /* alternative add event encodings */
268 return ((event ^ (0x10 ^ 0x28)) & ~PM_PMC_MSKS) |
274 static int power5p_get_alternatives(u64 event, unsigned int flags, u64 alt[])
280 alt[0] = event;
282 nlim = power5p_limited_pmc_event(event);
283 i = find_alternative(event);
287 if (ae && ae != event)
292 ae = find_alternative_bdecode(event);
306 * we never end up with more than 3 alternatives for any event.
358 * Indexed by PMCSEL value, bit i (LE) set if PMC i is a marked event.
400 * Returns 1 if event counts things relating to marked instructions
403 static int power5p_marked_instr_event(u64 event)
409 pmc = (event >> PM_PMC_SH) & PM_PMC_MSK;
410 psel = event & PM_PMCSEL_MSK;
434 if (!(event & PM_BUSEVENT_MSK) || bit == -1)
437 byte = (event >> PM_BYTE_SH) & PM_BYTE_MSK;
438 unit = (event >> PM_UNIT_SH) & PM_UNIT_MSK;
452 static int power5p_compute_mmcr(u64 event[], int n_ev,
473 pmc = (event[i] >> PM_PMC_SH) & PM_PMC_MSK;
481 if (event[i] & PM_BUSEVENT_MSK) {
482 unit = (event[i] >> PM_UNIT_SH) & PM_UNIT_MSK;
483 byte = (event[i] >> PM_BYTE_SH) & PM_BYTE_MSK;
551 pmc = (event[i] >> PM_PMC_SH) & PM_PMC_MSK;
552 unit = (event[i] >> PM_UNIT_SH) & PM_UNIT_MSK;
553 byte = (event[i] >> PM_BYTE_SH) & PM_BYTE_MSK;
554 psel = event[i] & PM_PMCSEL_MSK;
555 isbus = event[i] & PM_BUSEVENT_MSK;
557 /* Bus event or any-PMC direct event */
566 /* Direct event */
578 grsel = (event[i] >> PM_GRS_SH) & PM_GRS_MSK;
581 if (power5p_marked_instr_event(event[i]))
622 * are event codes.