diff options
Diffstat (limited to 'arch/powerpc/kernel/perf_counter.c')
-rw-r--r-- | arch/powerpc/kernel/perf_counter.c | 44 |
1 files changed, 7 insertions, 37 deletions
diff --git a/arch/powerpc/kernel/perf_counter.c b/arch/powerpc/kernel/perf_counter.c index 9300638b8c26..25e656c14945 100644 --- a/arch/powerpc/kernel/perf_counter.c +++ b/arch/powerpc/kernel/perf_counter.c | |||
@@ -1214,42 +1214,14 @@ void hw_perf_counter_setup(int cpu) | |||
1214 | cpuhw->mmcr[0] = MMCR0_FC; | 1214 | cpuhw->mmcr[0] = MMCR0_FC; |
1215 | } | 1215 | } |
1216 | 1216 | ||
1217 | extern struct power_pmu power4_pmu; | 1217 | int register_power_pmu(struct power_pmu *pmu) |
1218 | extern struct power_pmu ppc970_pmu; | ||
1219 | extern struct power_pmu power5_pmu; | ||
1220 | extern struct power_pmu power5p_pmu; | ||
1221 | extern struct power_pmu power6_pmu; | ||
1222 | extern struct power_pmu power7_pmu; | ||
1223 | |||
1224 | static int init_perf_counters(void) | ||
1225 | { | 1218 | { |
1226 | unsigned long pvr; | 1219 | if (ppmu) |
1227 | 1220 | return -EBUSY; /* something's already registered */ | |
1228 | /* XXX should get this from cputable */ | 1221 | |
1229 | pvr = mfspr(SPRN_PVR); | 1222 | ppmu = pmu; |
1230 | switch (PVR_VER(pvr)) { | 1223 | pr_info("%s performance monitor hardware support registered\n", |
1231 | case PV_POWER4: | 1224 | pmu->name); |
1232 | case PV_POWER4p: | ||
1233 | ppmu = &power4_pmu; | ||
1234 | break; | ||
1235 | case PV_970: | ||
1236 | case PV_970FX: | ||
1237 | case PV_970MP: | ||
1238 | ppmu = &ppc970_pmu; | ||
1239 | break; | ||
1240 | case PV_POWER5: | ||
1241 | ppmu = &power5_pmu; | ||
1242 | break; | ||
1243 | case PV_POWER5p: | ||
1244 | ppmu = &power5p_pmu; | ||
1245 | break; | ||
1246 | case 0x3e: | ||
1247 | ppmu = &power6_pmu; | ||
1248 | break; | ||
1249 | case 0x3f: | ||
1250 | ppmu = &power7_pmu; | ||
1251 | break; | ||
1252 | } | ||
1253 | 1225 | ||
1254 | /* | 1226 | /* |
1255 | * Use FCHV to ignore kernel events if MSR.HV is set. | 1227 | * Use FCHV to ignore kernel events if MSR.HV is set. |
@@ -1259,5 +1231,3 @@ static int init_perf_counters(void) | |||
1259 | 1231 | ||
1260 | return 0; | 1232 | return 0; |
1261 | } | 1233 | } |
1262 | |||
1263 | arch_initcall(init_perf_counters); | ||