diff options
Diffstat (limited to 'arch/mips/include/asm/smp-ops.h')
| -rw-r--r-- | arch/mips/include/asm/smp-ops.h | 43 | 
1 files changed, 40 insertions, 3 deletions
diff --git a/arch/mips/include/asm/smp-ops.h b/arch/mips/include/asm/smp-ops.h index 9e09af34c8a..ef2a8041e78 100644 --- a/arch/mips/include/asm/smp-ops.h +++ b/arch/mips/include/asm/smp-ops.h @@ -11,6 +11,8 @@  #ifndef __ASM_SMP_OPS_H  #define __ASM_SMP_OPS_H +#include <linux/errno.h> +  #ifdef CONFIG_SMP  #include <linux/cpumask.h> @@ -56,8 +58,43 @@ static inline void register_smp_ops(struct plat_smp_ops *ops)  #endif /* !CONFIG_SMP */ -extern struct plat_smp_ops up_smp_ops; -extern struct plat_smp_ops cmp_smp_ops; -extern struct plat_smp_ops vsmp_smp_ops; +static inline int register_up_smp_ops(void) +{ +#ifdef CONFIG_SMP_UP +	extern struct plat_smp_ops up_smp_ops; + +	register_smp_ops(&up_smp_ops); + +	return 0; +#else +	return -ENODEV; +#endif +} + +static inline int register_cmp_smp_ops(void) +{ +#ifdef CONFIG_MIPS_CMP +	extern struct plat_smp_ops cmp_smp_ops; + +	register_smp_ops(&cmp_smp_ops); + +	return 0; +#else +	return -ENODEV; +#endif +} + +static inline int register_vsmp_smp_ops(void) +{ +#ifdef CONFIG_MIPS_MT_SMP +	extern struct plat_smp_ops vsmp_smp_ops; + +	register_smp_ops(&vsmp_smp_ops); + +	return 0; +#else +	return -ENODEV; +#endif +}  #endif /* __ASM_SMP_OPS_H */  |