root/arch/sh/include/asm/smp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __cpu_die
  2. hard_smp_processor_id

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __ASM_SH_SMP_H
   3 #define __ASM_SH_SMP_H
   4 
   5 #include <linux/bitops.h>
   6 #include <linux/cpumask.h>
   7 #include <asm/smp-ops.h>
   8 
   9 #ifdef CONFIG_SMP
  10 
  11 #include <linux/spinlock.h>
  12 #include <linux/atomic.h>
  13 #include <asm/current.h>
  14 #include <asm/percpu.h>
  15 
  16 #define raw_smp_processor_id()  (current_thread_info()->cpu)
  17 
  18 /* Map from cpu id to sequential logical cpu number. */
  19 extern int __cpu_number_map[NR_CPUS];
  20 #define cpu_number_map(cpu)  __cpu_number_map[cpu]
  21 
  22 /* The reverse map from sequential logical cpu number to cpu id.  */
  23 extern int __cpu_logical_map[NR_CPUS];
  24 #define cpu_logical_map(cpu)  __cpu_logical_map[cpu]
  25 
  26 enum {
  27         SMP_MSG_FUNCTION,
  28         SMP_MSG_RESCHEDULE,
  29         SMP_MSG_FUNCTION_SINGLE,
  30         SMP_MSG_TIMER,
  31 
  32         SMP_MSG_NR,     /* must be last */
  33 };
  34 
  35 DECLARE_PER_CPU(int, cpu_state);
  36 
  37 void smp_message_recv(unsigned int msg);
  38 
  39 void arch_send_call_function_single_ipi(int cpu);
  40 void arch_send_call_function_ipi_mask(const struct cpumask *mask);
  41 
  42 void native_play_dead(void);
  43 void native_cpu_die(unsigned int cpu);
  44 int native_cpu_disable(unsigned int cpu);
  45 
  46 #ifdef CONFIG_HOTPLUG_CPU
  47 void play_dead_common(void);
  48 extern int __cpu_disable(void);
  49 
  50 static inline void __cpu_die(unsigned int cpu)
  51 {
  52         extern struct plat_smp_ops *mp_ops;     /* private */
  53 
  54         mp_ops->cpu_die(cpu);
  55 }
  56 #endif
  57 
  58 static inline int hard_smp_processor_id(void)
  59 {
  60         extern struct plat_smp_ops *mp_ops;     /* private */
  61 
  62         if (!mp_ops)
  63                 return 0;       /* boot CPU */
  64 
  65         return mp_ops->smp_processor_id();
  66 }
  67 
  68 struct of_cpu_method {
  69         const char *method;
  70         struct plat_smp_ops *ops;
  71 };
  72 
  73 #define CPU_METHOD_OF_DECLARE(name, _method, _ops)                      \
  74         static const struct of_cpu_method __cpu_method_of_table_##name  \
  75                 __used __section(__cpu_method_of_table)                 \
  76                 = { .method = _method, .ops = _ops }
  77 
  78 #else
  79 
  80 #define hard_smp_processor_id() (0)
  81 
  82 #endif /* CONFIG_SMP */
  83 
  84 #endif /* __ASM_SH_SMP_H */

/* [<][>][^][v][top][bottom][index][help] */