diff options
author | Anton Blanchard <anton@samba.org> | 2006-01-09 15:41:31 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-09 16:02:52 +1100 |
commit | 32a33994d513606d29e87e152deb67ba5f3c8e82 (patch) | |
tree | 2966bbe85eb2880aacc1dba045af7a02cee0aa26 /arch/powerpc/oprofile | |
parent | 9a699aefa87cb0379a67741926820c9271d748a9 (diff) | |
download | op-kernel-dev-32a33994d513606d29e87e152deb67ba5f3c8e82.zip op-kernel-dev-32a33994d513606d29e87e152deb67ba5f3c8e82.tar.gz |
[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.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c index a370778..71615eb 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; |