This source file includes following definitions.
- plat_smp_setup
- plat_smp_setup
- register_smp_ops
- register_up_smp_ops
- register_cmp_smp_ops
- register_vsmp_smp_ops
- register_cps_smp_ops
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 #ifndef __ASM_SMP_OPS_H
  12 #define __ASM_SMP_OPS_H
  13 
  14 #include <linux/errno.h>
  15 
  16 #include <asm/mips-cps.h>
  17 
  18 #ifdef CONFIG_SMP
  19 
  20 #include <linux/cpumask.h>
  21 
  22 struct task_struct;
  23 
  24 struct plat_smp_ops {
  25         void (*send_ipi_single)(int cpu, unsigned int action);
  26         void (*send_ipi_mask)(const struct cpumask *mask, unsigned int action);
  27         void (*init_secondary)(void);
  28         void (*smp_finish)(void);
  29         int (*boot_secondary)(int cpu, struct task_struct *idle);
  30         void (*smp_setup)(void);
  31         void (*prepare_cpus)(unsigned int max_cpus);
  32         void (*prepare_boot_cpu)(void);
  33 #ifdef CONFIG_HOTPLUG_CPU
  34         int (*cpu_disable)(void);
  35         void (*cpu_die)(unsigned int cpu);
  36 #endif
  37 #ifdef CONFIG_KEXEC
  38         void (*kexec_nonboot_cpu)(void);
  39 #endif
  40 };
  41 
  42 extern void register_smp_ops(const struct plat_smp_ops *ops);
  43 
  44 static inline void plat_smp_setup(void)
  45 {
  46         extern const struct plat_smp_ops *mp_ops;       
  47 
  48         mp_ops->smp_setup();
  49 }
  50 
  51 extern void mips_smp_send_ipi_single(int cpu, unsigned int action);
  52 extern void mips_smp_send_ipi_mask(const struct cpumask *mask,
  53                                       unsigned int action);
  54 
  55 #else 
  56 
  57 struct plat_smp_ops;
  58 
  59 static inline void plat_smp_setup(void)
  60 {
  61         
  62 }
  63 
  64 static inline void register_smp_ops(const struct plat_smp_ops *ops)
  65 {
  66 }
  67 
  68 #endif 
  69 
  70 static inline int register_up_smp_ops(void)
  71 {
  72 #ifdef CONFIG_SMP_UP
  73         extern const struct plat_smp_ops up_smp_ops;
  74 
  75         register_smp_ops(&up_smp_ops);
  76 
  77         return 0;
  78 #else
  79         return -ENODEV;
  80 #endif
  81 }
  82 
  83 static inline int register_cmp_smp_ops(void)
  84 {
  85 #ifdef CONFIG_MIPS_CMP
  86         extern const struct plat_smp_ops cmp_smp_ops;
  87 
  88         if (!mips_cm_present())
  89                 return -ENODEV;
  90 
  91         register_smp_ops(&cmp_smp_ops);
  92 
  93         return 0;
  94 #else
  95         return -ENODEV;
  96 #endif
  97 }
  98 
  99 static inline int register_vsmp_smp_ops(void)
 100 {
 101 #ifdef CONFIG_MIPS_MT_SMP
 102         extern const struct plat_smp_ops vsmp_smp_ops;
 103 
 104         register_smp_ops(&vsmp_smp_ops);
 105 
 106         return 0;
 107 #else
 108         return -ENODEV;
 109 #endif
 110 }
 111 
 112 #ifdef CONFIG_MIPS_CPS
 113 extern int register_cps_smp_ops(void);
 114 #else
 115 static inline int register_cps_smp_ops(void)
 116 {
 117         return -ENODEV;
 118 }
 119 #endif
 120 
 121 #endif