From: Benjamin Herrenschmidt The recent oprofile changes for Motorola e500 broke oprofile for other CPUs. This patch fixes the build. Proper support for the G3/G4 PMCs would be interesting, and making sure the basic interrupt PC sampling still works on CPUs that don't have supported PMCs too... Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc/oprofile/Makefile | 7 ++++++- 25-akpm/arch/ppc/oprofile/common.c | 10 ++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff -puN arch/ppc/oprofile/common.c~ppc32-fix-pmac-kernel-build-with-oprofile arch/ppc/oprofile/common.c --- 25/arch/ppc/oprofile/common.c~ppc32-fix-pmac-kernel-build-with-oprofile 2005-01-16 22:48:16.133932976 -0800 +++ 25-akpm/arch/ppc/oprofile/common.c 2005-01-16 22:48:16.144931304 -0800 @@ -124,7 +124,7 @@ static struct oprofile_operations oprof_ .cpu_type = NULL /* To be filled in below. */ }; -int __init oprofile_arch_init(struct oprofile_operations **ops) +void __init oprofile_arch_init(struct oprofile_operations *ops) { char *name; int cpu_id = smp_processor_id(); @@ -133,13 +133,13 @@ int __init oprofile_arch_init(struct opr model = &op_model_fsl_booke; #else printk(KERN_ERR "oprofile enabled on unsupported processor!\n"); - return -ENODEV; + return; #endif name = kmalloc(32, GFP_KERNEL); if (NULL == name) - return -ENOMEM; + return; sprintf(name, "ppc/%s", cur_cpu_spec[cpu_id]->cpu_name); @@ -147,12 +147,10 @@ int __init oprofile_arch_init(struct opr model->num_counters = cur_cpu_spec[cpu_id]->num_pmcs; - *ops = &oprof_ppc32_ops; + *ops = oprof_ppc32_ops; printk(KERN_INFO "oprofile: using %s performance monitoring.\n", oprof_ppc32_ops.cpu_type); - - return 0; } void oprofile_arch_exit(void) diff -puN arch/ppc/oprofile/Makefile~ppc32-fix-pmac-kernel-build-with-oprofile arch/ppc/oprofile/Makefile --- 25/arch/ppc/oprofile/Makefile~ppc32-fix-pmac-kernel-build-with-oprofile 2005-01-16 22:48:16.141931760 -0800 +++ 25-akpm/arch/ppc/oprofile/Makefile 2005-01-16 22:48:16.144931304 -0800 @@ -6,4 +6,9 @@ DRIVER_OBJS := $(addprefix ../../../driv oprofilefs.o oprofile_stats.o \ timer_int.o ) -oprofile-y := $(DRIVER_OBJS) common.o op_model_fsl_booke.o +oprofile-y := $(DRIVER_OBJS) common.o + +ifeq ($(CONFIG_FSL_BOOKE),y) + oprofile-y += op_model_fsl_booke.o +endif + _