|
@@ -48,43 +48,12 @@ static const unsigned int event_alternatives[][MAX_ALT] = {
|
|
|
{ PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL },
|
|
|
};
|
|
|
|
|
|
-/*
|
|
|
- * Scan the alternatives table for a match and return the
|
|
|
- * index into the alternatives table if found, else -1.
|
|
|
- */
|
|
|
-static int find_alternative(u64 event)
|
|
|
-{
|
|
|
- int i, j;
|
|
|
-
|
|
|
- for (i = 0; i < ARRAY_SIZE(event_alternatives); ++i) {
|
|
|
- if (event < event_alternatives[i][0])
|
|
|
- break;
|
|
|
-
|
|
|
- for (j = 0; j < MAX_ALT && event_alternatives[i][j]; ++j)
|
|
|
- if (event == event_alternatives[i][j])
|
|
|
- return i;
|
|
|
- }
|
|
|
-
|
|
|
- return -1;
|
|
|
-}
|
|
|
-
|
|
|
static int power8_get_alternatives(u64 event, unsigned int flags, u64 alt[])
|
|
|
{
|
|
|
int i, j, num_alt = 0;
|
|
|
- u64 alt_event;
|
|
|
-
|
|
|
- alt[num_alt++] = event;
|
|
|
-
|
|
|
- i = find_alternative(event);
|
|
|
- if (i >= 0) {
|
|
|
- /* Filter out the original event, it's already in alt[0] */
|
|
|
- for (j = 0; j < MAX_ALT; ++j) {
|
|
|
- alt_event = event_alternatives[i][j];
|
|
|
- if (alt_event && alt_event != event)
|
|
|
- alt[num_alt++] = alt_event;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
+ num_alt = isa207_get_alternatives(event, alt, event_alternatives,
|
|
|
+ (int)ARRAY_SIZE(event_alternatives));
|
|
|
if (flags & PPMU_ONLY_COUNT_RUN) {
|
|
|
/*
|
|
|
* We're only counting in RUN state, so PM_CYC is equivalent to
|