oprofilefs.o oprofile_stats.o \
                timer_int.o )
 
-oprofile-y                             := $(DRIVER_OBJS) init.o backtrace.o
-oprofile-$(CONFIG_CPU_XSCALE)          += common.o op_model_xscale.o
+oprofile-y                             := $(DRIVER_OBJS) common.o backtrace.o
+oprofile-$(CONFIG_CPU_XSCALE)          += op_model_xscale.o
 
 
 #define exit_driverfs() do { } while (0)
 #endif /* CONFIG_PM */
 
-int __init op_arm_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec)
+int __init oprofile_arch_init(struct oprofile_operations *ops)
 {
-       init_MUTEX(&op_arm_sem);
-
-       if (spec->init() < 0)
-               return -ENODEV;
-
-       op_arm_model = spec;
-       init_driverfs();
-       ops->create_files = op_arm_create_files;
-       ops->setup = op_arm_setup;
-       ops->shutdown = op_arm_stop;
-       ops->start = op_arm_start;
-       ops->stop = op_arm_stop;
-       ops->cpu_type = op_arm_model->name;
-       printk(KERN_INFO "oprofile: using %s\n", spec->name);
+       struct op_arm_model_spec *spec = NULL;
+       int ret = -ENODEV;
+
+#ifdef CONFIG_CPU_XSCALE
+       spec = &op_xscale_spec;
+#endif
+
+       if (spec) {
+               init_MUTEX(&op_arm_sem);
+
+               if (spec->init() < 0)
+                       return -ENODEV;
+
+               op_arm_model = spec;
+               init_driverfs();
+               ops->create_files = op_arm_create_files;
+               ops->setup = op_arm_setup;
+               ops->shutdown = op_arm_stop;
+               ops->start = op_arm_start;
+               ops->stop = op_arm_stop;
+               ops->cpu_type = op_arm_model->name;
+               ops->backtrace = arm_backtrace;
+               printk(KERN_INFO "oprofile: using %s\n", spec->name);
+       }
 
-       return 0;
+       return ret;
 }
 
-void op_arm_exit(void)
+void oprofile_arch_exit(void)
 {
        if (op_arm_model) {
                exit_driverfs();
 
+++ /dev/null
-/**
- * @file init.c
- *
- * @remark Copyright 2004 Oprofile Authors
- * @remark Read the file COPYING
- *
- * @author Zwane Mwaikambo
- */
-
-#include <linux/oprofile.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include "op_arm_model.h"
-
-int __init oprofile_arch_init(struct oprofile_operations *ops)
-{
-       int ret = -ENODEV;
-
-#ifdef CONFIG_CPU_XSCALE
-       ret = op_arm_init(ops, &op_xscale_spec);
-#endif
-
-       ops->backtrace = arm_backtrace;
-
-       return ret;
-}
-
-void oprofile_arch_exit(void)
-{
-#ifdef CONFIG_CPU_XSCALE
-       op_arm_exit();
-#endif
-}