summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/oprofile
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2006-01-09 05:41:31 +0100
committerPaul Mackerras <paulus@samba.org>2006-01-09 06:02:52 +0100
commit32a33994d513606d29e87e152deb67ba5f3c8e82 (patch)
tree2966bbe85eb2880aacc1dba045af7a02cee0aa26 /arch/powerpc/oprofile
parent[PATCH] 4/5 powerpc: Add cpufreq support for all desktop G5 (diff)
downloadlinux-32a33994d513606d29e87e152deb67ba5f3c8e82.tar.xz
linux-32a33994d513606d29e87e152deb67ba5f3c8e82.zip
[PATCH] ppc64: Fix oprofile when compiled as a module
My recent changes to oprofile broke it when built as a module. Fix it by using an enum instead of a function pointer. This way we still retain the oprofile configuration in the cputable. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/oprofile')
-rw-r--r--arch/powerpc/oprofile/common.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c
index a370778b68dd..71615eb70b2b 100644
--- a/arch/powerpc/oprofile/common.c
+++ b/arch/powerpc/oprofile/common.c
@@ -135,9 +135,31 @@ static int op_powerpc_create_files(struct super_block *sb, struct dentry *root)
int __init oprofile_arch_init(struct oprofile_operations *ops)
{
- if (!cur_cpu_spec->oprofile_model || !cur_cpu_spec->oprofile_cpu_type)
+ if (!cur_cpu_spec->oprofile_cpu_type)
return -ENODEV;
- model = cur_cpu_spec->oprofile_model;
+
+ switch (cur_cpu_spec->oprofile_type) {
+#ifdef CONFIG_PPC64
+ case RS64:
+ model = &op_model_rs64;
+ break;
+ case POWER4:
+ model = &op_model_power4;
+ break;
+#else
+ case G4:
+ model = &op_model_7450;
+ break;
+#endif
+#ifdef CONFIG_FSL_BOOKE
+ case BOOKE:
+ model = &op_model_fsl_booke;
+ break;
+#endif
+ default:
+ return -ENODEV;
+ }
+
model->num_counters = cur_cpu_spec->num_pmcs;
ops->cpu_type = cur_cpu_spec->oprofile_cpu_type;