cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

smp.h (1847B)


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