diff options
Diffstat (limited to 'arch/mips/include/asm/bmips.h')
-rw-r--r-- | arch/mips/include/asm/bmips.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/arch/mips/include/asm/bmips.h b/arch/mips/include/asm/bmips.h index 27bd060d716e..cbaccebf5065 100644 --- a/arch/mips/include/asm/bmips.h +++ b/arch/mips/include/asm/bmips.h | |||
@@ -46,8 +46,35 @@ | |||
46 | 46 | ||
47 | #include <linux/cpumask.h> | 47 | #include <linux/cpumask.h> |
48 | #include <asm/r4kcache.h> | 48 | #include <asm/r4kcache.h> |
49 | #include <asm/smp-ops.h> | ||
50 | |||
51 | extern struct plat_smp_ops bmips43xx_smp_ops; | ||
52 | extern struct plat_smp_ops bmips5000_smp_ops; | ||
53 | |||
54 | static inline int register_bmips_smp_ops(void) | ||
55 | { | ||
56 | #if IS_ENABLED(CONFIG_CPU_BMIPS) && IS_ENABLED(CONFIG_SMP) | ||
57 | switch (current_cpu_type()) { | ||
58 | case CPU_BMIPS32: | ||
59 | case CPU_BMIPS3300: | ||
60 | return register_up_smp_ops(); | ||
61 | case CPU_BMIPS4350: | ||
62 | case CPU_BMIPS4380: | ||
63 | register_smp_ops(&bmips43xx_smp_ops); | ||
64 | break; | ||
65 | case CPU_BMIPS5000: | ||
66 | register_smp_ops(&bmips5000_smp_ops); | ||
67 | break; | ||
68 | default: | ||
69 | return -ENODEV; | ||
70 | } | ||
71 | |||
72 | return 0; | ||
73 | #else | ||
74 | return -ENODEV; | ||
75 | #endif | ||
76 | } | ||
49 | 77 | ||
50 | extern struct plat_smp_ops bmips_smp_ops; | ||
51 | extern char bmips_reset_nmi_vec; | 78 | extern char bmips_reset_nmi_vec; |
52 | extern char bmips_reset_nmi_vec_end; | 79 | extern char bmips_reset_nmi_vec_end; |
53 | extern char bmips_smp_movevec; | 80 | extern char bmips_smp_movevec; |