|
@@ -46,9 +46,35 @@
|
|
|
|
|
|
#include <linux/cpumask.h>
|
|
|
#include <asm/r4kcache.h>
|
|
|
+#include <asm/smp-ops.h>
|
|
|
|
|
|
extern struct plat_smp_ops bmips43xx_smp_ops;
|
|
|
extern struct plat_smp_ops bmips5000_smp_ops;
|
|
|
+
|
|
|
+static inline int register_bmips_smp_ops(void)
|
|
|
+{
|
|
|
+#if IS_ENABLED(CONFIG_CPU_BMIPS) && IS_ENABLED(CONFIG_SMP)
|
|
|
+ switch (current_cpu_type()) {
|
|
|
+ case CPU_BMIPS32:
|
|
|
+ case CPU_BMIPS3300:
|
|
|
+ return register_up_smp_ops();
|
|
|
+ case CPU_BMIPS4350:
|
|
|
+ case CPU_BMIPS4380:
|
|
|
+ register_smp_ops(&bmips43xx_smp_ops);
|
|
|
+ break;
|
|
|
+ case CPU_BMIPS5000:
|
|
|
+ register_smp_ops(&bmips5000_smp_ops);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+#else
|
|
|
+ return -ENODEV;
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
extern char bmips_reset_nmi_vec;
|
|
|
extern char bmips_reset_nmi_vec_end;
|
|
|
extern char bmips_smp_movevec;
|